architecture tooling · product design · design engineering · evidence design · ai trust
early design reviews compare what is easy to see. counterweight lays out what is easy to miss, and says plainly when a drawing cannot answer.
every number is drawn back where it was measured: the facades, the route, the roof.
measured, estimated, seen in an image, or not in this file. only numbers are ranked.
it shows who leads each check and by how much, and leaves the trade-offs to the architect.
the costly problems in a building are rarely the dramatic ones. they are the glass nobody can reach to clean, the bin route through the lobby, the canopy that drums under a bedroom window.
take the bins
at an early review, a team compares six options on daylight, views, area and how each one looks in a render. the refuse store goes wherever it fits. nobody draws the route from the store to the kerb, because nothing in the review asks for it. a year after handover, the caretaker wheels every bin through the entrance lobby, and moving the store now means moving the building.
a composite, not a real project: it is the pattern post-occupancy studies keep finding.3
of 18,704 latent defects in 74 buildings could have been prevented by better design, against 33% by better workmanship.1
of contract value lost to design errors, in direct and then indirect costs, across 139 projects.2
recur from building to building, because teams move on and feedback rarely reaches designers.3
early options now arrive as anything from a bim model to an ai render, and ai is entering practice faster than anyone can check it. so the question became:
how do you compare six options honestly when one is a bim model, two are massings, one is a scanned plan and two are ai renders?
architects already have more software than they want, and most of it asks them to change how they work. a new tool earns a place only if it fits how a design review actually runs. every screen was checked against these six needs.
stay in the model
nobody re-models a scheme to ask one question about it, and an export ritual is skipped the week it matters.
so counterweight is a widget beside rhino, revit or whatever the office draws in, and reads what is already there. an ifc file dropped on it becomes another option.
meet the stage you are at
when the big decisions are made, the options are massings, sketches, a scanned plan and a competition render. a tool that needs a full bim model arrives after the decisions.
so it takes every kind of input and says what each one can answer, rather than refusing the ones that are not finished.
hold up in the room
a review is an argument between architect, client, planner and consultants. a finding someone cannot challenge does not survive it.
so every number points at a place in the model and carries its tolerance and its source. nothing has to be taken on trust.
leave the judgement alone
trading overlook against daylight, or a longer bin route against a better courtyard, is the architect's job, not the software's.
so it shows who leads each check and by how much. there is no total and no winner.
speak practice
facades, routes, the lobby, the kerb. not risk scores, and not sentences that claim more than a drawing shows.
so rooms are found by the names offices already give them, and every sentence the tool writes describes a condition, never an experience.
end in a drawing request
when something cannot be answered yet, the useful output is what to ask the team for next.
so gaps become requests: "a ground-floor plan for stepped block would answer two more checks."
it is not a compliance checker, not generative design and not a replacement for the review. it is the second pair of eyes in it.
these needs come from published research on post-occupancy feedback and ai trust, and from informal conversations with architects. none were recorded, so no one is quoted; recorded sessions are the first item under what's next.
pick a task. this is the working prototype, not a recording.
the overlook check is open. press show in model, and the camera flies to the two facades it measured.
open full screen ↗the canvas stands in for the design platform. overlook and the bin route are measured live from the geometry. the six sample options use recorded, illustrative evidence for the other checks; an ifc file you drop in gets estimates from its massing for four of them, as ranges that state their assumptions.
first direction
a ledger that put a price on everything: money, disruption, people and risk for every move, payback periods, a composite score and a recommended fix on every finding.
what happened
it looked rigorous and was not. where evidence was missing, it quietly turned the gap into a number, and a render and a bim model fed the same score. no architect could have defended it to a client, and none should have.
what changed
every value is now marked by what kind of evidence it is. ranges stay ranges, images never become measurements, there is no winner and no invented cost. if nothing can answer a check, it stays open and says what would.
the honest version is smaller. it is also the only one an architect could defend in a room.
a typical ai checker takes any file and returns an answer. counterweight first marks each input by what kind of evidence it actually is. only numbers can be ranked, and only against a tolerance.
read from geometry the input contains. one number.
9.4 m
a range from stated assumptions, such as a scale bar drawn by hand.
11.3–12.8 m
seen in an image. shown with the crop it came from, never turned into a number.
full-height glazing
the file cannot answer. neutral, out of every comparison, and it says what would answer it.
needs elevations
the overview has one job: show, for seven checks at once, which option leads each one and whether that lead is real. i drew it five ways. four of them made a claim the evidence could not support.
the filled area reads as a total score, and every axis needs the same scale. metres, shares and counts do not share one.
rejected: implies a winner
good for scanning, but colour has to mean the same thing in every row. normalising each row hides whether a difference is inside the tolerance.
kept for the evidence tab
honest per check, but seven charts to scan, and a 0.4 m lead looks as real as a 4 m one.
kept inside each open check
ranks hide ties. second place by 0.1 m reads like a loss, and a missing input quietly falls to the bottom.
rejected: hides ties
one chart for every check. direction is who leads, distance is the lead divided by that check's tolerance, so units stop mattering and ties have a place to sit.
chosen
the cost: the map shows only the leader on each check. the full spread of all six options lives in the strip inside each open check, one click away.
the reasoning behind every ring, threshold and scale is in the appendix.
why
a review argues about places, not figures. a distance nobody can locate cannot be checked or challenged.
tradeoff
every value has to carry a location, which limits what can become a check at all.
result
show in model flies the camera to the exact facades, route or roof, with the value pinned beside it.
why
generated images break perspective and shadow geometry.5 a lane width scaled from people in a render looks precise and is not.
tradeoff
a reviewer who wants a rough figure has one more click, and the render rarely ranks.
result
the crop it came from is shown instead. "show the number anyway" reveals it, labelled as a guess.
why
a total hides the tradeoffs a review exists to argue about, and an explained score makes people agree with it whether or not it is right.6
tradeoff
a review ends without a single answer. that is harder to sell and easier to defend.
result
clicking an option shows where it stands on each check, in words. lead counts per option were removed for reading as a score.
why
when evidence is missing, the most useful output is what to ask for next, not a blank.
tradeoff
gaps are ranked by how many checks they would answer, not by which checks matter most on this project.
result
"a ground-floor plan for stepped block would answer two more checks and make both comparable." ai references are never asked for drawings.
geometry proves a condition, not an experience. every sentence the tool writes was checked against that line.
a canopy is directly below these windows. whether rain is audible depends on roof build-up and room construction.
4 facing window pairs are closer than 12 m, your project setting.
no drain objects on 2 flat areas. they may be unmodelled rather than missing.
early drawings are incomplete by nature, so the most useful answer is often a refusal with a reason. each of these is a capture of the prototype with the comparison rules running, not a mockup.
counterweight is a widget, not a modelling tool. a thin adapter per design platform does four things, and everything after it is shared. evidence kinds come from what an input contains, never from which platform sent it, so the rules and their tests do not change per platform.
maps the team's own grouping to options: layers or blocks in rhino, design options in revit, tags in sketchup, or one file each.
not the model. element ids, categories, geometry, units, and what the input contains: openings, drains, rooms.
listens for the platform's own change events and marks the comparison out of date.
takes element ids and the measured line or route back, highlights them and moves the view.
the prototype is a typescript monorepo. the comparison rules sit in a package with no dependencies. every message between widget and platform follows a versioned schema, with json schema generated for adapters written in c# or ruby. the 3d canvas is a stand-in platform behind a real adapter, so the widget cannot tell it from a rhino plugin.
two checks, overlook and the bin route, are measured from the model's own geometry. an edit in the platform is what moves their numbers, and show in model draws the exact line or route that was measured.
an ifc file dropped on the canvas becomes a new option. the adapter turns walls, slabs and roofs into the volumes the readers measure, squares the model to its own grid, keeps a canopy on columns off the ground so bins can pass under it, and finds the bin store, the lobby and the collection point by the names offices already give them.
four more checks get an estimate when nothing better exists: rain noise, pooling, glass you can't reach and the step-free route. a massing has no windows, drains or doors, so each estimate reads what it does have (storeys, roofs, plan shape), states its assumptions and returns a range, never a single number, along with the drawing that would make it measurable. replacing big equipment has no estimate: it needs door widths. a reading or a recording always wins over an estimate.
no model decides a verdict, so the same inputs always give the same answer. property tests generate thousands of random cases and assert what must always hold: a range never wins on its best case, the order of options changes nothing, moving the whole model changes nothing, a bin route never cuts through a building.
to test the tests, i planted fifteen bugs, from comparing midpoints instead of worst cases to letting bins walk through walls. all fifteen were caught by the automated tests, 91 at the time and 97 now. the ifc adapter is tested end to end: models written in millimetres, turned off the grid and moved to survey coordinates must read the same as the boxes they were drawn from.
then i ran it on five public ifc models, including one exported from revit and turned 37° on site. all five loaded. the bin route refused on every one, correctly: none had a space named as a refuse store. but overlook read 0.1 to 1 m inside single buildings. a low roof between two taller parts looked like open air, and thin strips the adapter dropped left slivers that read as gaps. facades now overlook only across at least a storey of open air, along at least a window's width, and the adapter keeps every strip. the case study's readings did not move.
the tests prove the comparison is consistent and conservative, and that the two readers measure the geometry they are given. they do not prove these are the right checks, or that a real office model arrives clean: layers misnamed, rooms unnamed, a bin store drawn as a line. the other five checks are recorded, illustrative evidence or, for a dropped ifc file, estimates from stated assumptions; an estimate is a guess with its reasons shown, not a measurement. before any check is trusted on a real project it needs a written claim, the geometry it requires, the inputs that make it invalid, tests on real models and a reviewer with the right expertise.
practising architects on a real past project, testing whether the checks match what they wish they had caught.
so the readers that already measure dropped ifc files measure the model as it is being drawn.
one check taken all the way, with real models and an expert reviewer, before adding more.
the hardest design work here was deciding what the screen must refuse to say. every version got more trustworthy by showing less, and more useful to the person who has to defend the drawing.
| check | what is measured | tolerance | why that tolerance |
|---|---|---|---|
| overlook between homes | closest facing facades, higher is better | ±0.6 m | massing and plans read to about ±0.5 m, rounded up |
| glass you can't reach | share of glazing not reachable from inside or a balcony | ±3 pts | how fixed panes are classified moves the share by about 3 points |
| rain noise over bedrooms | roof surfaces directly below habitable windows | ±0.5 | counts are whole surfaces, so a difference of one is real |
| step-free route home | longest step-free route, entrance to front door | ±2 m | routes traced on plan read to about ±2 m |
| bins and deliveries | bin store to collection kerb | ±0.6 m | same reading precision as facade distances |
| replacing big equipment | clear service route for the largest plant item | ±0.1 m | door and corridor widths read to ±0.1 m |
| water and debris pooling | flat roof areas with no drain found | ±0.5 | counts are whole areas, so a difference of one is real |
these are reading tolerances i set from how precisely each kind of input can be read. they are assumptions, not standards, so the product shows each one with its reason, and a project can override it. an override is labelled everywhere it changes a verdict, including the exported review.
| parameter | value | why | what would change it |
|---|---|---|---|
| distance unit | gap ÷ tolerance | checks are in metres, percentages and counts. dividing by the tolerance makes every lead a multiple of its own measurement noise, which has no unit. | nothing; this is what lets one chart hold every check |
| the fog | ≤ 1× | inside one tolerance the two values cannot be told apart from how the input was read. calling it either way would be a guess. | a tighter tolerance, from better input |
| scale past the fog | log₁₀ | leads run from just over 1× to more than 40×. a straight scale would crush the small leads, which are the ones a review argues about. | a project where every lead is small |
| rings | 2×, 5×, 10× | the 1, 2, 5 steps engineers already read on scales and charts. roughly: clear, clearly, overwhelming. | an office's own thresholds |
| outer limit | 10× | past ten tolerances, more distance tells a reviewer nothing new. the dot stays on the outer ring and its label gives the exact figure. | nothing |
| ranges | worst case | the lead is measured from the leader's worst case to the runner-up's best case, so a range never wins on its best case. | nothing; this is the rule the tests check hardest |
| count tolerance | ±0.5 | a count of whole things changes in steps of one, so any difference of one is real and nothing smaller exists. | nothing |
| ties | between the pair | a tie sits in the fog on the line between the two options it cannot separate, so you still see which two are close. | nothing |