Kramik Build it in order.
PricingOpen the app

Kramik manual

Kramik is a site assembly and construction management tool. It takes the building model your design team has already produced and plans how it goes together on site: the assembly sequence, who builds each part, and how the build is really going.

What Kramik is (and isn't)

What it does

  1. Generates the assembly sequence from the model: stage by stage, part by part, with every element linked to the task that installs it. (If the model already contains a work schedule, that one is used.)
  2. Visualises the build in 3D, day by day, so everyone sees the same plan: the office, the crews, the client.
  3. Assigns the work to trades and people, and gives each crew its own list of tasks.
  4. Tracks progress against the plan from what has really been done (optional per model).
  5. Keeps the team in step with a shared feed, photos, and issues (BCF) that go back to the designers.

What it assumes

The model is the design team's, and it is taken as correct. Kramik never changes the design or the geometry; it only adds construction information (the schedule, trades, people and progress) to the IFC file it exports.

What it checks

Kramik checks the model for building it:

It does not check the design: structural adequacy, codes and standards, or whether the model meets a client's information requirements stay with the design team and their own checking tools. Kramik says "this can be built in this order", not "this design is right".

What it is not

Not a design or modelling tool, not structural analysis, and not cost estimating or procurement.

Getting started

  1. Get an account. Either a colleague sends you an invite link (you join their company workspace straight away), or you request an account. Requests are approved by hand; once approved you get your own workspace with a 14-day free trial.
  2. Upload an IFC file on the home page (drag it onto the drop area). IFC4 and IFC4X3 files can be scheduled; IFC2X3 files are inventoried only.
  3. Generate a schedule. Pick a start date and press Generate. You get a work breakdown per storey, durations from element counts, links between tasks, and each element assigned to the task that builds it.
  4. Refine it in the Gantt and the 3D view, then export the 4D IFC or BCF issues.

The interface comes in English, French and हिंदी. It follows your browser's language, and the switch at the top of the screen (EN · FR · हिंदी) changes it whenever you like; your choice follows you from page to page. Everything you write into schedules and exports stays in English, so files read the same for everyone downstream. This manual is in English and French.

Workspaces, roles and sharing

A workspace belongs to a company. Its members see all of its models. Each person has one role in it:

RoleCan
ViewerOpen models, play the 3D sequence, filter, raise and import BCF issues, download.
EditorEverything a viewer can, plus upload models, generate and edit schedules, assign trades and people, share a single model with a guest.
OwnerEverything, plus invite and remove members, change roles, delete models, manage the subscription.

Inviting a colleague

Home page → Members → optionally type their email → choose a role → Create invite link. Send the link yourself (WhatsApp, email). It works once and expires after 14 days. If you entered an email, only that address can use it. Open links are listed under Open invite links, where you can revoke them.

Sharing one model with a client or subcontractor

On the home page press Share next to a model (or Share in the editor's top bar). Guests see that model only, never the rest of the workspace. They can be viewers or editors. Remove a guest from the same dialog.

Your account

Press your name at the top: change your name or password, or sign out on every other device.

Forgotten your password? There is a link for it on the sign-in page. Give the address you sign in with and a link to set a new one is emailed to you; it works once and lasts two days. The page says the same thing whether or not that address has an account here, and never shows the link on screen — otherwise knowing somebody's email address would be enough to take over their account. If nothing arrives, check the spam folder; if this Kramik has no email set up, the page says so and a site admin can issue a link instead.

Email

When email is switched on, Kramik sends three things and nothing else: an invite to the address you typed, a password-reset link to the person it belongs to, and a note when an account request is approved. Every one is something you or a colleague just did, so there is no mailing list and nothing to unsubscribe from. Invite links are shown in the app as well, in case you'd rather send one yourself on WhatsApp; a password reset somebody asked for themselves is only ever emailed, never shown, because a reset link on screen is not a reset — it is a way in.

Until it's switched on — which needs a Postmark token and the domain verified — nothing is sent, invites still show you the link to pass on, and the forgotten-password page says plainly that it can't help.

What it costs

One price for the whole company: everyone in your workspace, every model, every project. People you share a model with — clients, architects, owners, the guests you invite to a single model — pay nothing. A new workspace gets 14 days free, with no card; after that it stays read-only until someone subscribes, and nothing is deleted. See the pricing page for the current price, and Subscription on the models page to start or manage it. Billing goes through Stripe, so card details never reach our servers.

Models

Folders: organise a workspace's models in folders, as deep as you like: New folder above the list, the folder tree on the left, and the path above the list to go back up. Drag models or folders onto a folder (or onto the tree or the path), or use Move. New uploads land in the folder you're in. Only empty folders can be deleted. Search looks through every folder. Folders only organise: everyone in the workspace sees all of them, and guests still see only the models shared with them.

Light or dark: the ◐ button at the top switches between automatic (follows your device), light and dark. Your choice is remembered on this device and on your account.

Working on several at once

The checkboxes on the left pick models and folders; Shift-click takes the whole run between, and the box in the header takes everything on screen. A bar appears under the list with Move and Delete. Deleting names what is about to go rather than just counting it, and if one of them can't be deleted it says which — the rest still are.

A single model or folder's actions — share, rename, move, delete — are on the ⋯ button at the end of its row, or on a right-click anywhere in the row. Deleting a model is for owners; it asks first and the file waits in the wastebasket rather than going immediately.

New revisions and merging

Designers keep revising their models. Kramik keeps your construction work when they do.

Files line up by their project origin, or by their real-world position if they are georeferenced. Ask designers to use shared coordinates; if a merged file sits far from the model, the preview says so.

Kramik never edits the designers' files: the originals are kept as they were uploaded.

Generating a schedule

A model is worth looking at before anyone plans anything: upload it and the 3D shows straight away, with everything standing as built. The quantities are there too. The playback controls and the Gantt appear once there is a schedule to play.

The planner groups work per storey, bottom-up: foundations, structural frame, slab, walls, windows and doors, then finishes; each storey's structure waits for the slab below. Durations come from element counts at stated rates (the task description says which). Add planner notes to steer it, for example "precast frame, 6-day weeks".

Planned by chooses who does the planning, and only appears when this server has an AI planner configured. AI planner reads the inventory and writes the programme, which takes roughly half a minute and costs a little; Rules only answers instantly, costs nothing and gives the same plan every time — which is what you want while you are still trying start dates and detail levels. Whichever ran is named under the button afterwards, and if the AI planner fails for any reason the rules take over and say so rather than leaving you with nothing.

Tick Replace existing schedules to start over; otherwise a new work schedule is added alongside the old ones and you can switch between them in the left rail.

Why the order usually comes out buildable

The planner orders work by trade convention: foundations, then the frame, then the slab, then the envelope, then finishes, storey by storey from the bottom. That is a good convention and it is not your building. A beam that bears on a wall is out of order in every schedule that convention produces, because walls come after the frame — and nothing in the planner has ever seen the geometry.

So after it has written the tasks, Kramik asks the model. A contact graph — which element rests on which, measured off the solids — is turned into dependencies and added to the schedule. Where the convention and the geometry disagree, the geometry wins: a measured bearing surface outranks a rule of thumb, and the link the planner assumed is replaced by the one the building actually needs.

This happens only at generation, where the dates are a first proposal and the links being overruled are the planner's own. Once you have a schedule you have worked on, nothing rewrites your links: it only ever adds.

It does not catch everything. Where the conflict is a chain rather than a single step — the convention says A before B before C and the building needs C before A — the dependency cannot be added without making a loop, and it is left out. If a model throws up a lot of those, the trade order is wrong for that kind of building, and saying so in the planner instructions will do more than any amount of correction afterwards.

Editing in the Gantt

Picking more than one

Click a row to select it. Ctrl-click adds or removes one; Shift-click takes the whole run between it and the last one you clicked. The count appears at the top of the menu, so you can always see how many you are about to act on.

The right-click menu

Right-click a row — or press the ⋯ at the end of it — for what you can do to that work:

Splitting a task

One task covering 400 elements is a row on a chart, not a plan. Split… breaks it up:

The new tasks can run one after another or at the same time. Splitting never changes what is built — the same elements end up in the same total work, arranged differently.

Merging

Select several rows under the same heading and choose Merge: their elements collect into one task and the empties go. It is the undo for having split too finely, and for a generated schedule that separated work one crew does in a single visit.

Reordering

Drag a row by the left pane to move it, the way you would reorder a playlist: a line shows where it will land, the list scrolls when you reach the edge, and several selected rows travel together. Dropping outside is a cancel.

Two things this deliberately does not do. It does not change any dates — the order of the list and the order of the work are different questions, and a dependency is what makes one task follow another. If you move a task above one it still depends on, Kramik says so rather than quietly resequencing. And it renumbers WBS codes only where they are still the ones Kramik generated; a code you typed yourself is yours and is left alone.

Trades and people

Every task can have a trade (for example Structural steel, Masonry, Glazing & doors) and any number of people responsible for it. Both are saved inside the IFC file (as IFC actors and roles), so they travel with the export.

Tracking progress

Kramik works as a planner on its own. If you also want to know how the build is really going, an editor ticks Track progress in the Gantt toolbar. It's per model and can be turned off again (recorded progress is kept).

How much you put in is up to you:

What you see

Progress is saved in the IFC file too (task status, actual start and finish, percent complete), so it goes with the exported model.

My tasks (for crews)

My tasks is made for a phone on site. It lists every task you are named on, in every model with progress tracking on, grouped as Blocked, In progress, Ready to start, Coming up, Later and Done, with what each task is still waiting on.

Tip: add the page to your phone's home screen (Share → Add to Home Screen) to open it like an app.

Feed

Each model has a feed: press Feed at the top of a model to slide it open beside your work, with the number of posts on the button, and the home page shows all of a workspace's feeds together. Anyone who can open the model can post a message and a photo, optionally about the selected task. Automatic updates appear too: uploads, generated schedules, issues, tasks started, finished or blocked, and milestones.

Don't want it? Press Hide on the feed, or untick Show feeds (or just the automatic updates) under your name at the top of the home page. It's your setting only, on every device.

Open a task: Comes after lists what it waits for. Add a task it comes after, and choose how: after it finishes, starts with it or finishes with it, plus a number of days to wait (e.g. 7 days' curing). Change or remove links the same way. The task and everything after it move to suit. Links that would make a loop are refused, and summary tasks can't be linked (they follow their subtasks). Tick Links in the toolbar to see arrows in the Gantt. Links are standard IFC task sequences, so they go out with the 4D IFC.

Placeholders (work not designed yet)

The site often has to plan work before its design exists: an MEP package, a fit-out, a façade. Add a task and tick Awaiting design. Optionally say when the design is needed by, and what it will contain: the storey and the kinds of elements (ducts, pipes, walls…).

Site and weather

Weather strip: tick Weather above the Gantt to draw a band of daily highs and lows across the timeline, with cold days tinted, and the hours of daylight below it. The first 16 days are the forecast; after that it is the typical weather for that day of the year, with a dotted line where one becomes the other. Hover any day for its high and low, sunrise, sunset and day length. Sunrise and sunset are computed from the site's coordinates.

In the Site & weather panel, enter the site address. Kramik then shows the typical daily high and low for each month (ten years of records) and checks every concrete-type task: concrete, foundations, slabs, screed, grout, masonry and mortar, by trade or by what the elements are made of.

Plan cold-weather measures (heated enclosures, blankets, accelerators, longer protection and curing) or move the pour. Kramik flags the risk; your specification and supplier set the actual measures.

The address is looked up with OpenStreetMap, and temperatures come from Open-Meteo. Only the address and the site coordinates leave Kramik.

Sharing and exports

Keeping a spreadsheet up to date

A public link also gives you a spreadsheet link: a URL that returns the programme as CSV. In Excel, Data → From Web, paste it, and from then on Refresh brings today's version. The same URL works in Google Sheets and Power BI.

It is deliberately narrower than the link it came from. It reads the programme and the quantities and nothing else — not the model, not the geometry, not the IFC, not who is on the job, and never what the work costs. It only answers GET, so nothing can be changed through it, and revoking the link above kills it at the same moment.

A link with a passcode on it is not offered as a spreadsheet link. The passcode exists so that holding the URL is not enough, and a spreadsheet link is exactly that.

A URL with a key in it ends up in emails, in browser history and in whatever sits between the spreadsheet and us. Treat it as you would the link itself: give it an expiry, and revoke it when the job is done.

The side panels

The panels down the left — model files, site and weather, building, services, generate, BCF issues, feed, awaiting design, work schedules and quantities — fold away. Click a title to fold or unfold it; what you leave open is remembered on this device. A folded panel keeps its count beside the title, so you can see there are issues, cold days or new posts without opening it, and a panel opens itself the first time it has something to report.

The guided tours

Press Tour at the top of the models page or of a model. There are seven short tours rather than one long one, because a single tour has to be taken in one sitting on your first day and so can never grow:

Each is remembered on its own, so quitting one doesn't mark you as having seen the others, and each can be taken again without sitting through everything before it. The number beside a tour is how many of its steps apply right now; one that is greyed out needs something you haven't got yet, usually a schedule.

Inside a tour the bubble explains one thing at a time and the page dims around it. Where there is something to do — generate a schedule, play the sequence, click an element — the tour waits for you and moves on by itself when you do it; Skip this step passes it by. Steps that don't apply are left out. Your first visit to a model runs Getting around and nothing else, and Esc or End tour stops it.

Quantities

The Quantities panel counts and measures whatever you are looking at. Pick elements in 3D and it measures those; select a task and it measures that task's work; with neither, it measures the whole model. Group the rows by type, class or storey. Clicking a row selects its elements in 3D, which is how you check a number you don't believe. Everything is in metres, square metres, cubic metres and kilograms, whatever units the file is drawn in.

Where the numbers come from matters more than the numbers, so the panel always says. A figure printed plainly is what the IFC file states. A figure with a dotted underline was measured off the element's own shape, because the file doesn't state it — hover it and the app says so. Most Revit exports carry no quantities at all unless whoever exported ticked the box, so on many models most figures are measured.

Occasionally a file states a quantity that its own geometry contradicts — a volume in cubic millimetres in a file that declares cubic metres is a common one, and it is out by a factor of a billion. Where the two disagree by more than a wide margin, Kramik uses the shape, marks the figure as measured, and says how many elements it had to overrule. It never silently averages the two, and it never changes a figure that is merely the difference between a net quantity and a gross one.

A weight only ever comes from the file, because a shape can't be weighed. A length is only reported for things that run — beams, columns, walls, piles, pipes and ducts — unless the file states one; a slab's longest side is not a length anyone orders.

The take-off leaves with the model: Export → Quantities (CSV), and it is also a second sheet in the Excel workbook beside the programme.

Estimating

Estimate is the fourth view, beside Gantt, Split and 3D: the same model, priced, with the 3D above it so a number is one click from the elements it was measured off.

What you price

The Bill is always grouped by element type, because that is the only level at which a rate means anything. Other cuts of the same money live in the report.

Each row is a kind of thing — "Cavity Wall 300", 59 of them — and it carries as many cost lines as it takes to price it. A wall is rarely one number: blockwork per square metre, render per square metre, ties per metre. A door is one line, per unit. Open a row and press Add a cost line.

A cost line's unit decides what it multiplies. Per m² meets the area, per m the length, per m³ the volume, per tonne the weight, "no." the count. There is never a question of which quantity a price applies to, and the unit picker only offers units that row actually has. Put a rate per cubic metre on something with no volume and it says so instead of counting it as nothing.

The rate book

Your company's own prices, kept per workspace and shared by every model — so the next job opens already knowing what things cost. Press Rate book to add, remove or export them. A rate typed straight into a cost line offers to keep itself there, which is how the book gets built without anyone sitting down to build it.

Import the list you already keep. Most contractors have one in a spreadsheet. Save it as CSV and press Import CSV: the columns can be called whatever they are called ("Particulars", "UOM", "Unit Rate", "Section" all work), units can be written "sq m", "m2", "LM", "each" or "tonne", and dollar signs and thousands commas don't matter. Anything it can't read is listed rather than silently dropped.

Markup and totals

A single percentage on the net, set at the top of the view, and the currency follows it. The count of unpriced items beside it is the thing to drive to zero — that is the progress bar of an estimate.

The report

Switch from Bill to Report for the estimate as something to hand someone: the total, how it divides, and what it rests on. Print / PDF puts it on one A4 page.

What it is not

One all-in rate per line: no separate labour, material and plant, and no wastage allowance — fold those into the rate for now. It does not spread cost over the programme yet.

Who can see it

What a job costs is the company's own business, so the estimate and the rate book are kept to the company's editors and owners — the people who do the estimating. Everyone else gets the model, the programme and the quantities, and no money at all:

The server decides this, not the page: asking for the estimate directly is refused just the same. If your subscription has lapsed you can still read your own estimate, you just can't change it.

If a client is entitled to see costs — an open-book or cost-plus contract — that wants a priced bill at the agreed rates with the markup stated separately, which is a different document from your internal estimate. Ask and we'll build it properly rather than open this one up.

It travels with the model, as an IfcCostSchedule of IfcCostItems in the IFC itself, so other software can read it. Nothing stores a quantity: they are measured afresh every time, so a new revision reprices itself instead of going stale.

Browsing the model

The Model panel

The Model panel beside the schedule shows the file as it is, the way other IFC browsers do:

Each line has a count and an eye: the eye hides those elements in 3D (a half-filled eye means some of what's under it is hidden), and the name selects them, framing them in the 3D view. Once selected, New task or Add to turn that branch into work — which is the quickest way to build a task around a system or a storey rather than a whole trade.

The browser page

Browse, at the top of a model, opens the file properly — and opens it as the several trees it actually is.

There is no single correct tree for an IFC file. The format carries a number of independent hierarchies over the same objects, and a reader that shows only the spatial one hides most of what the file says. So Kramik offers seven ways of reading the same model, and switching between them keeps whatever you had selected:

Things a schedule never shows turn up here: ports and what they connect to — collapsed behind a badge, because listing them outright doubles the size of a services model — openings with their fillers, spaces, and every element the file places nowhere. Nothing is dropped silently: an empty group, a task that builds nothing, an element with no location all say so rather than disappearing.

Clicking anything selects it in the 3D and frames it, exactly as the Model panel does, and selecting a thing selects what it is made of — not the holes in it. The browser reads more of the file than the scheduler does, on purpose and separately, so that widening it can never quietly change what a schedule builds or an estimate measures.

Hold points

Work that stops the job until somebody has dealt with it: an inspection to pass, a scaffold to put up, a delivery to wait for. Select the task it comes after and press Hold point…, say what it is, name it, and give it a length — leave it at zero and it goes in as a gate rather than as work.

It blocks. Everything that followed that task now follows the hold instead, so if the hold slips, the work beyond it moves with it. That is the difference between a gate and a note, and it is the part that is tedious to set up by hand.

A hold point carries no elements, and it is written into the IFC as a real task with a real type — an inspection as OPERATION, access and scaffolding as ATTENDANCE, deliveries and craneage as LOGISTIC — so it means something to whoever opens the file next. Crews tick it off from site like any other task.

How fine the tasks are

By default a schedule has one task per trade, per storey — "Walls — Level 1" — which is the level a site programme usually works at. On Generate schedule you can ask for more:

Several crews at once. The Split menu asks whether the pieces run one after another or at the same time. At the same time is what you want for three crews on three kitchens or three buildings: each piece takes only its share of the work and they all start together, so the task finishes sooner and everything after it moves earlier. What came before the task comes before every piece, and what followed it waits for all of them.

Split by place uses the model's own structure — one piece per building, storey or room, named after it. It only works when the model actually says which elements are where; if they're all in one place, Kramik says so rather than inventing a division.

Share in the editor opens the sharing panel over the model rather than taking you back to the file list, so you keep the playhead, the camera and anything you had isolated. It is the same panel either way. From the editor it also offers a link that opens on the day you are looking at — tick the box and whoever you send it to lands on that week's state of the job instead of the finished building.

Split by name gives each named thing its own task — this shower, that fridge, the two rooflights — so a delivery or an inspection can be booked against the item itself rather than against a batch. It uses the element's name, or its tag where there is no name. Most exporters name every element individually, so on a large task this would make hundreds of tasks; Kramik refuses past fifty and asks you to split by type or place first, then by name on the smaller piece.

You can also break up a task that already exists: select it and press Split… — into one task per element type, one per name, into equal parts, or every N elements. The task becomes a summary, its elements move into the new subtasks, and they share out its dates in order. What came before the task now comes before the first piece, and what followed it now follows the last. A task with progress recorded against it can't be split.

Right-click a task row for the same things without hunting for a button. The top half decides what you can see in 3D: Zoom to this work, Show only this work (everything else fades away, which is the only way to look at something buried inside the building, like footings or services in a ceiling), Hide this work, and Show all to put it back. Asking for any of them from the Gantt view brings the 3D up beside it first. The bottom half reshapes the work: the split options, or merging.

Several rows at once. Ctrl-click (Cmd on a Mac) adds a row to the selection or takes it out; Shift-click takes the whole run between. Everything selected lights up together in 3D. With more than one row picked, right-click offers Merge N tasks into one: the task that starts first keeps its name and takes on all the work, the others go, and links to tasks outside the group are kept. Only tasks sitting under the same heading can be merged, because the survivor has to stay where it is.

Moving a task up or down. Drag a row by its name — the left half of the row. The bar on the right still means when, so the two never fight, and there is no reorder mode to turn on. A drop line shows where it will land and at what level; drop between two rows and the task takes that place, so dropping it among another heading's subtasks makes it one of them. A heading always travels with everything under it. Near the top or bottom edge the list keeps scrolling, and for a really long move it is quicker to collapse the headings first, move one short step, and expand again.

Several rows drag together if you picked them with Ctrl or Shift. The right-click menu also has Move up, Move down, Indent and Outdent one step at a time, on Alt with the arrow keys.

This changes the order, never the plan. Dates and links stay exactly as they were, so a task can sit above something it still waits for — Kramik says so when that happens rather than quietly rewriting the schedule. If you meant to change the build order, change the link under Comes after and the dates follow by themselves. WBS codes are renumbered to match the new order, but only where they are still the generated ones: a single code you typed yourself and that whole group is left alone.

The other way round, Merge subtasks on a summary task folds its subtasks back into it: their elements come back, the task spans their dates, and links to tasks outside the group are kept. It tells you first how many elements and days you'll end up with, including any gap between the pieces that becomes work. A trade and crew survive only if every piece agreed on them.

Whichever you choose, every element belongs to exactly one task, so the 3D and the counts stay honest. More tasks means more to keep tidy, so the plain per-trade level stays the default.

The 3D sequence view

On a Mac

Kramik runs in Chrome, Safari or Firefox on macOS; there is nothing to install. Two habits differ from a PC, and Kramik follows the Mac's:

One thing a Mac may not have: the middle mouse button, which is a shortcut to the tape measure. It is only ever a shortcut — the Measure button is the way in on any machine.

Measuring, and where the view spins

Double-click anywhere on the model and the view will spin around that point from then on. Until you do, it spins around the middle of whatever you last zoomed to, which is why close-up work used to swing away from you.

Measure puts a tape in your hand: click two points and it gives you the straight-line distance, and the horizontal and vertical parts underneath. A middle-click does the same without turning the tape on, for those who have the button. Press Measure again to put it away.

While the tape is out, whatever you have selected is dimensioned on the model — its three sizes drawn along its own edges. That matters more than it sounds: a member set at an angle has no meaningful width and height in the world's directions, so Kramik measures along the element's own axes. A six-metre beam turned forty-five degrees measures six metres, not the four and a half a bounding box would report.

To dimension more than what you have picked, right-click Measure for the list of what is in this model, and tick a kind. Your choice is kept against your account. Above sixty things it says so and draws nothing, because more labels than that is not a drawing.

Where your model says what is built from what, the chooser opens with what this is built from: the named assemblies, "l0 Wall North" and its sixty parts. Tick one and you get that thing's own size — 15.70 m by 322 mm by 2.790 m for a wall. Open it with the arrow and you get the kinds inside it, so you can dimension just its studs or just its sheathing rather than all sixty parts at once.

A wall like that usually has no shape of its own in the file — it is a container, and its studs and sheets carry the geometry. Asking how big it is therefore means how far its parts reach, measured along the wall's own directions, so a wall on a diagonal still reads as length, thickness and height.

Assemblies are a choice about one model, so unlike the kinds below them they are not kept against your account: the same name means something else in the next file.

The list below them is by what a thing is, not what class it is: Slab · Roof, Member · Rafter, Covering · Cladding, Wall, Door. That distinction matters — a model may hold thirty-five IFC classes and not one of them is called "roof". A roof is a slab whose type says ROOF, or the roofing over it, or the rafters under it, and the predefined type is where those words live. Anything your file does not label keeps its plain class name.

Taking it apart

Take it apart pulls the model open so you can see inside it, two ways. By storey lifts each floor clear of the one below, which is how you look at a floor plate, a service void or a junction that is buried in the assembled model. By stage separates the top level of your work breakdown instead, so the model comes apart in the order it goes together — substructure, frame, envelope, fit-out, each standing clear of the next.

Up, Right and Back choose which way it comes apart — the same directions the navigation cube names. Storeys go up by default, because that is how a building is stacked and it keeps looking like one; stages go sideways, because an assembly sequence is drawn as a row in order and stacking them would make them look like floors instead. Either can be laid out any way you like.

The slider says how far. It is a proportion rather than a distance, because the right gap on a bungalow is not the right gap on a tower: one notch of the slider moves each band by a fraction of its own size, so at the top of its travel every band stands exactly clear of the next whichever way you have sent it. Anything the programme does not cover forms its own band first, so unscheduled work is separated out rather than folded in with the opening stage.

Nothing moves in the model. This is a way of drawing it, like the section, and it changes no coordinate, no export and no quantity. Picking up the tape puts the building back together first — a distance measured across a gap that is not really there would be wrong, and a wrong measurement that looks right is worse than none. Cutting a section does the same, for the same reason: a cut is made at a fixed plane, and exploded parts would slide straight through it.

An exploded view travels with a saved view and in the link, so the way you set it up is what the next person opens.

Filtering by supplier

The supplier menu in the Gantt toolbar, beside trade and person, keeps only the work that involves one supplier or one manufacturer — in the chart as well as in the 3D, so it is there whether or not you have the model on screen. It combines with the trade and person filters rather than replacing them.

The menu lists what your file actually names, biggest first, with the number of elements against each. A model that names no supplier doesn't show the menu at all.

Supplier data from a spreadsheet

Most models say nothing about who supplies anything, and waiting for the design team to add it can take a release cycle. If the information is in a spreadsheet — as it usually is — press Supply data (CSV) in Model files and attach it directly.

The file needs one column that says which elements and one that says who:

Columns can be called whatever your spreadsheet calls them — Vendor, Made by, SKU, Product and several others are understood — and semicolons work as well as commas.

It shows you what it matched before it writes anything, the same way a new IFC revision does: how many rows found elements, how many elements that is, which suppliers it is about to attach, and which rows matched nothing at all. Press Apply and only then does the model change.

What it writes goes into the IFC in the standard places — a supplier as an IFC actor, a manufacturer and part number in Pset_ManufacturerTypeInformation — so it travels with the exported model and other software can read it. Importing again moves an element to its new supplier and leaves alone anything the new file doesn't mention.

Colour

The Colour menu at the bottom left decides what the colours mean. Stage is the 4D colouring and the default: built, installing today, next in the task, not started. The others colour by Supplier, Manufacturer, Trade, Storey, IFC class, Material or System — and Material surfaces, which paints every element as the thing it is made of rather than as a bucket: OSB as OSB, glulam as glulam, hot pipes red and cold blue. The programme still reads, because what has not started is still an outline and what is going in today still takes the bright edge. It is the view for working on a building whose materials matter, where Presentation is the one for showing it to somebody. Only the ones your file can answer are offered — a model that names no supplier doesn't list Supplier.

Under Stage, finished work is a quiet neutral rather than the colours the model was drawn in. That is deliberate. When built work keeps the designer's colours, a building that is half up is a coloured building in which the only thing telling you the stage is whatever is missing from it, and a colour on the screen stops meaning anything in particular. Here a colour means work that is happening. The designed colours are a click away: Presentation lights the model in them, and Colour by → Material puts them back while the stage still reads.

You keep the programme either way. Colour is the only thing that changes: what is built, what is going in today and what hasn't started are still told by transparency and outline, so you can play the sequence coloured by supplier and watch each one's material arrive. The one cost is that today's work, which normally stands out by its colour, stands out by a bright outline instead.

The legend becomes the list of what you're looking at, with a count against each, and clicking one shows only that — click it again to come back. That is the quickest way to answer "what is Rockwool actually supplying here" or "show me everything from one maker".

There are eight colours. If a model has more than eight of something, the seven largest get their own and the rest share the last one, which the legend labels as the number of others rather than pretending they are all the same thing. Where the file says nothing — an element with no supplier named — it is left grey.

Supplier, manufacturer and model reference also join what the search box matches, so typing a supplier's name finds their work whatever the colours are set to.

Saving a view

When the model is set up the way you want it — an angle, a day, a filter, a few things hidden — Save this view in the left rail keeps it. Opening it again puts all of that back: the camera, the day on the playhead, the search, the supplier and trade filters, the colour mode, presentation, and anything you hid by hand.

A view starts as Only me. Click that to make it Shared, and everyone who can open the model sees it — including anyone holding a public link, which is what makes a view worth sending to an inspector or a client. Copy link gives you a web address that opens the model straight into that view. Your own unshared views are yours: nobody else sees them, and nobody else can delete them.

A view remembers the rules that produced it rather than a list of elements. That matters after a revision: a view that hides cladding goes on hiding cladding, including panels that arrive later, which a frozen list could not do. The exception is anything you hid by clicking it, which has no rule behind it and so is kept element by element.

Because the rules are re-applied to whatever file is in front of you, a view can show something different from what the person who saved it saw. Kramik says so rather than letting you find out: the list marks a view saved before the latest revision, and opening one tells you if it showed a different number of elements then, or if elements it had hidden are no longer in the model.

Presentation

Presentation turns the 4D colours off and lights the model instead: daylight, soft shadows, ambient occlusion and the model's own colours, on a plain studio background. Save image gives you a PNG for a tender, a client email or a planning submission. It is a mode, not a setting, because while it is on you cannot see what is built and what isn't — a line at the bottom says so. Nothing about the model or the schedule changes; only how it is drawn.

Engineered timber is drawn, not just lit. Where the file names its materials, OSB, LVL, CLT and glulam each get their own surface — strands, veneers, boards and laminations, at their real sizes, running along the member rather than across it. The patterns are generated rather than photographed, so they are correct at any zoom and add nothing to what the page has to load; they fade to the material's own colour at a distance, before the detail gets finer than a pixel. They are impressions, not renders: right at arm's length, honest from across the site.

Services take the colour of what they carry, the way a drawing would: hot water and heating red, cold water blue, drainage, soil and vent black. This is the one place presentation stops imitating a photograph on purpose — hot and cold are the same copper in life, and which is which is the thing you actually need to see. A run whose service the file doesn't state keeps the colour it already had.

Surfaces are lit according to what they are made of: glass is see-through and reflects, steel takes a highlight, concrete and plaster stay matt, insulation has no shine at all. If your exporter fills in IFC's own reflectance field, that is used and nothing is guessed. Otherwise Kramik reads the material names — "Steel S355", "Concrete C30/37", "Glass" — so the more your exporter names materials, the better presentation looks. Elements with no material named are lit neutrally rather than guessed at.

Drawing services

Most models reach a site with no services in them: the mechanical package is weeks behind the architecture, or it exists as drawings nobody has modelled. The Services panel draws them against the building you have — runs of pipe, duct and cable tray, and the equipment they serve — so that the work can be measured, sequenced and priced before the design arrives.

This is the one place Kramik adds geometry rather than only construction information. What you draw stays yours: Kramik will move, reshape and delete what was drawn here and nothing that came with the file.

What you set before drawing

The level you pick is where you are working

Choosing a storey does not label what you draw — it decides the height of it. The level is a band: from a shade below its own floor to a shade below the next floor up, which is where one level stops owning things and the next starts. The lowest level opens downwards and the highest upwards, because nothing under a footing belongs to anything else and a roof has no next floor to stop at.

While a run is being drawn, only that band can be caught. The rest of the building stays in front of you as outlines — working on one floor no longer means cutting a plan and losing sight of everything else — but a click cannot land on it. Hold Alt to reach another level, taking the point at the height the surface under the cursor really is: that is how a stack down to the floor below gets drawn. Connection points are never restricted, because a riser reaching down to a boiler on the floor below is the ordinary way a service gets joined.

Height above floor is measured in millimetres from the level's own floor, the way a mechanical drawing quotes it, with the absolute height it works out to shown beside it. Type it and clicks land on that plane rather than on wherever the ray struck the building — which, from any ordinary viewpoint, is the ground.

Work in plan cuts a plan at the level and looks straight down at it instead, for when that is how you would rather draw. The band and the height work the same way in either view.

Some files do not say where their levels are. A storey can state its height in two places, and an export that gives every storey a placement at the origin and puts the real number in the Elevation attribute used to read as a flat building, every level at ground. Kramik takes the height from the placements, or from the Elevation attributes, or failing both from the elements each level holds up. Where a file says nothing anywhere, its levels genuinely cannot be told apart: there is then no band and no height field, and points come off the building as they did before, rather than being measured from a datum nobody can locate.

Drawing

Press Draw a run and click each corner. Points snap to the model's own geometry — corners, centres, midpoints, edges, faces and perpendiculars — and to the connection points of equipment and runs already there, which is how a new run gets joined to something rather than merely touching it. The readout counts the points and the metres so far. Undo point takes back the last one, Add to the model commits it, Cancel throws it away. Start a run on a run that is already there and it tees off it: nothing is asked, because where the first point landed is the whole of the question.

Changing what you drew

Select a piece and its card offers Move, Reshape and Delete — on what was drawn in Kramik only; anything that came with the model says so and stays as it is. Move takes the whole run with it, Reshape moves one corner of it, and Delete takes the run the piece belongs to, saying first how many pieces that is and what work would be left with nothing to build. One step of undo is offered after each of these, and after drawing.

What it checks

Services are checked as they are drawn and the findings are listed in the panel. Click one and it is selected in the model:

What goes into the file

Proper IFC: segments and fittings of the right class, a system holding them, one type per size actually used, connection points carrying their own size and the direction they face, and the gradient a drain was drawn at. Everything downstream treats them as elements like any other — the inventory, quantities, the planner, the 3D and the export.

Issues and BCF

Exporting

Export 4D IFC downloads the model with its work schedules, tasks, dates, links, element assignments, trades and people, readable by other openBIM tools (Synchro, BlenderBIM/Bonsai, Navisworks via IFC, and others).

Naksha: finding infill lots

Naksha is a second suite inside Kramik, separate from the 4D scheduling. It reads the public parcel and assessment data for a whole province and tells you which lots are worth an hour of your attention if you are thinking about small infill — a duplex, a fourplex, a backyard suite.

What it does

  1. Maps every parcel. 565,027 of them in New Brunswick, each scored out of 100.
  2. Scores them criterion by criterion on what the public data can actually support, and says how many criteria each score rests on.
  3. Measures each lot against its street: how much frontage it has, whether it meets two streets, how many shops and offices are within a five-minute walk.
  4. Names what it does not know. Every criterion it cannot compute says which dataset it is waiting for, rather than passing over it in silence.

What it assumes

It is a screening tool, not a feasibility study. A high score means “this lot is worth looking at”, never “this lot can be developed”. The site visit, the survey, the title search and the advice of a planner still have to happen; Naksha only decides what deserves them.

What it is not

Not a listing service — a lot on the map is not for sale, and Naksha does not know whether it is. Not a valuation. Not a title search. Not legal or planning advice.

What it never holds

No owner names, for any region. The import refuses any source field that names a person — it raises rather than quietly dropping it, so a dataset asking for one is a mistake that gets fixed rather than hidden — and the test suite checks the live database for any column whose name looks like a person's. Finding out who owns a lot is a registry search, and it is deliberately not here.

Naksha is in preview and may not be switched on for your workspace. It covers New Brunswick only, it scores on six of eleven criteria, and zoning is not yet one of them — so it cannot tell you what you are allowed to build. See how a lot is scored.

Naksha: the map

The map works at two scales, and which one you get depends on how far in you are.

Roads, water and street names are drawn at both scales. They are there to place you: a parcel map with no coast and no streets is a grid you cannot find yourself on.

Click any parcel to open it in the panel on the right.

The weight sliders

What counts lists all eleven criteria with a slider each. They do not change the scores yet. What you see on the map is computed in a background job using the default weights below, and re-scoring from the sliders is a later phase — pressing Apply says so rather than pretending. Until then the sliders are worth reading rather than moving: they are the full list of what Naksha weighs, and what it weighs it by.

Showing only some lots

Show only narrows what the map draws. Described as vacant uses the assessment's own wording; Nothing standing on it is measured from LiDAR instead. Assessed under takes an absolute figure, and Against its block compares the lot to the median for its own map sheet, which is the one that travels: $50,000 means an empty rural acre in one county and nothing at all in another, while "under half its block" means the same thing everywhere.

A filter leaves out lots whose answer is unknown, not only lots whose answer is no. Nearly a third of assessments describe a lot in words that say neither vacant nor built, and slope is only known where the LiDAR has been sampled. The count under the heading always says how many lots you are looking at out of how many exist, so a filter that leaves twelve says so rather than looking like an empty map.

Naksha: how a lot is scored

A score is a number out of 100 and a count — “Scored on 6 of 11 criteria”. Both halves matter, and the second is the one that gets skipped.

The score is a weighted average over the criteria that could be computed for that particular lot. The count says how much of the picture it was made from. A 70 built from three criteria and a 70 built from six are not the same claim, so the panel always shows which one you are looking at.

Missing is never zero. A lot nobody has data for and a lot known to be unsuitable are opposite findings. A criterion that cannot be computed is reported as missing, with its reason, and is left out of the average entirely. It never drags a score down.

CriterionWhat it measuresStatus
Looks vacantWhether the assessment's own description suggests there is little on the lot, in English or French.Working
Little on itAssessed value per m² of land against the median for the same property-map sheet.Working, a substitute
Lot areaBig enough to hold something, small enough to be infill: full marks from 230 to 1,200 m², tapering to nothing below 150 and above 2,000.Working
FrontageHow much of the lot meets a mapped street. Full marks at 12 m, nothing below 6. Working, estimated
Corner or laneWhether the lot meets two different named streets within 15 m.Working
Near a main streetShops and offices within 400 m, a five-minute walk. Working, a substitute
Building vs land valueThe strongest signal there is for an underused lot. Waiting: New Brunswick publishes one total and no land/building split
Zoning allows itWhat may be built by right.Waiting: the municipal by-law
Near transitDistance to a stop.Waiting: a transit feed
SlopeHow steep the lot is.Waiting: elevation data
Flood exposureWhether the lot floods.Waiting: the flood layer

Two of the six are substitutes, and say so

Little on it stands in for the building-to-land value ratio, which New Brunswick does not publish — the province publishes a single total. A lot assessed at a small fraction of what its neighbours are assessed at, per square metre, is usually either empty or lightly built. It is a weaker signal than the real ratio: a derelict house and a vacant lot look alike through it.

Near a main street stands in for a road classification, which neither road layer carries — 11,751 of 12,346 municipal segments share a single code. Distance to a numbered route was tried and measured backwards: rural lots sit closer to one (a median of 70 m in Restigouche) than city blocks do (621 m in Saint John), so ranking by it would have promoted highway shoulders over city streets. What a main street actually is, to somebody deciding whether to build four units, is a place within walking distance of shops — and the assessment descriptions do know that. Measured that way it points the right way round: a median of 32 commercially-described properties within 400 m in Saint John, against 1 in Kings County.

The default weights

Zoning and building-vs-land value at 1.2; looks vacant and little on it at 1.0; lot area at 0.8; flood at 0.8; frontage and transit at 0.6; corner or lane, main street and slope at 0.4. They are starting points for a region, not laws, and they are meant to be argued with.

Naksha: reading a lot

Click a parcel and the right-hand panel fills in. Anything Naksha does not know says not known, in italics, rather than showing a zero that would read as a measurement.

The ground: slope and which way it faces

New Brunswick flies LiDAR at six points per square metre and GeoNB publishes the result as 1 m rasters, in the same projection the parcels are already in. Naksha samples that over the parcel itself — not the box around it, which on a typical urban lot would be two-fifths somebody else's land — and fits a surface to it.

Anything over 2 m counts as standing on the lot, and from above a mature tree reads much like a house. Treat it as strong evidence rather than proof — but note that it disagrees with the wording often enough to be worth having: of the lots assessed as "vacant" that have been sampled, about a quarter turn out to be more than half covered by something nine or ten metres tall.

Why frontage is an estimate

There is no surveyed frontage in any public New Brunswick dataset. What there is: parcel boundaries, and road centrelines, which sit half a right-of-way back from the property line. So frontage is derived — the distance to the nearest centreline, then the length of boundary lying within a little more than that distance of the same centreline. Checked against lots whose width is known independently, it lands within about a metre on a regular lot, and does worse on a curve or a cul-de-sac.

That is accurate enough to sort thousands of lots by. It is not accurate enough to check a by-law minimum against, and Naksha never uses it for one.

When frontage is blank

A blank frontage does not mean the lot has none. It means no mapped road within 30 m — and the municipal layer carries 12,346 segments for the whole province and excludes private roads and lanes. The lot may be landlocked, or it may front something nobody has mapped. Those are different facts from “no frontage”, so Naksha does not say the latter.

Naksha: where the data comes from

The Data panel below the lot lists every dataset behind what you are looking at, with its licence and the date it was imported. Everything is public and openly licensed; nothing is scraped.

New Brunswick today: the digital property map (parcels), property assessment, municipal roads, provincial roads, and water bodies and coastline from the NB Hydrographic Network — all from GeoNB and Service New Brunswick under the Open Government Licence – New Brunswick.

How current it is

Each import is a snapshot, not a live feed, and the Data panel gives the date of the one you are looking at. Parcels do disappear between snapshots — consolidated, re-surveyed, renumbered — so an import that finishes cleanly also deletes the rows it did not touch, rather than leaving the map slowly filling with parcels that no longer exist. An import that fails deletes nothing, because a half-finished run must never be read as “the rest were removed”.

The parcel-to-assessment match is approximate

There is no published key joining a parcel to its assessment. The parcel layer carries a PID, the assessment layer carries a PAN, and no table relates them: they are two surveys of the same ground. So the join is spatial — the assessment account whose interior point falls inside the parcel — and about 82% of parcels match one. It fails where an assessment spans several parcels (a farm), where one parcel carries several accounts (a condominium), and wherever the two surveys simply disagree. A parcel with no match keeps no value-based score at all, rather than a zero.

Subscription

For site admins

Account requests

Home → Admin (the badge counts requests waiting). Approve activates the account and creates its workspace (you can rename it) on a 14-day trial; Reject blocks it. People invited by a workspace owner don't need approval.

Workspaces and plans

Create a workspace for a company, then invite its first owner. Make free marks a workspace complimentary (never billed); 14-day trial starts or extends a trial. Paid status comes from Stripe automatically.

Accounts

Reset link lets someone choose a new password (valid 48 hours, once; it signs them out everywhere). Disable blocks an account immediately. Admins don't see a workspace's models unless they're members of it.

Backups

Restoring (on the server, fly ssh console, then cd /srv):

python -m app.backup list                                  # snapshots, newest last
python -m app.backup restore-model <snapshot> <model id>    # bring back one deleted model
python -m app.backup restore <snapshot> /data/restore-check  # everything, into an empty folder

Stripe

Billing switches on when the server has STRIPE_SECRET_KEY, STRIPE_PRICE_ID and STRIPE_WEBHOOK_SECRET. In Stripe: create the product with a monthly CAD price, turn on the customer portal, and add a webhook to /api/stripe/webhook for checkout.session.completed, customer.subscription.created/updated/deleted and invoice.payment_failed. Until then nothing is ever read-only.

Questions

Is my model shared with anyone else?

Only with your workspace's members and the guests you invite to that model. Files are stored on Kramik's own server in Toronto (Fly.io) and in its backup bucket; the AI planner, when enabled, receives an element inventory (counts, types, storeys), never the IFC file.

Which IFC versions work?

IFC4 and IFC4X3 for scheduling. IFC2X3 files open for inventory; upgrade them to IFC4 to schedule.

Why does an element say it isn't supported?

Supports are found from geometry: something must bear under it or be fixed to it. Grout, slab-on-grade poured after the steel, and similar practice can confuse it; remove a wrong support link with × in the element's card.