self-initiated

counterweight

a second pair of eyes for design reviews. it sits beside the model an office already draws in, compares early options on the everyday things that fail after handover, and only says what each drawing can support.

architecture tooling · product design · design engineering · evidence design · ai trust

six options for one housing brief, seven everyday checks, one sync from the design platform. every frame is the working prototype.

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.

points at the model

every number is drawn back where it was measured: the facades, the route, the roof.

says what each drawing can support

measured, estimated, seen in an image, or not in this file. only numbers are ranked.

never picks a winner

it shows who leads each check and by how much, and leaves the trade-offs to the architect.

role
product, research, interaction design and the engineering of the rules, readers and ifc adapter
team
solo, built with claude
context
self-initiated concept, desktop widget
year
2026

decided in the first review, found a year after handover

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

~60%

of 18,704 latent defects in 74 buildings could have been prevented by better design, against 33% by better workmanship.1

6.9% + 7.4%

of contract value lost to design errors, in direct and then indirect costs, across 139 projects.2

same faults

recur from building to building, because teams move on and feedback rarely reaches designers.3

and ai is arriving

  • uk practices using ai41% in 2024, 59% in 20254
  • generated imagessystematically break projective geometry5
  • ai explanationsraise acceptance whether or not the ai is right6
  • llm compliance checkersgive different answers to the same question10

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?

what architects need from a tool

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.

try it

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.

the tool i built and threw away

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.

four kinds of evidence

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.

measured

read from geometry the input contains. one number.

9.4 m

estimated

a range from stated assumptions, such as a scale bar drawn by hand.

11.3–12.8 m

observed

seen in an image. shown with the crop it came from, never turned into a number.

full-height glazing

not in input

the file cannot answer. neutral, out of every comparison, and it says what would answer it.

needs elevations

a typical ai checker any file model, plan or render model reads everything the same way score or answer one confident output the source of each number is lost, and it is as sure about a render as about a bim model. counterweight input file bim, massing, plan or image reader geometry, or an image region evidence mark measured, estimated, observed or not in input value a number, or a range lo to hi tolerance per check, with where it comes from gap leader's worst case vs runner-up's best verdict leads, too close to call, or open never ranked observed: shown with its crop not in input: says what would answer it map position direction: who leads distance: gap ÷ tolerance what would help missing inputs, ranked by checks they answer
fig. 1. the same file can produce a number on one check and only an observation on another. a massing has facade distances but no windows; a render shows glazing but has no scale.

one chart that will not pick a winner

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.

radar chart

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

heatmap

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

bars per check

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

ranked list

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

the map

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.

2× 5× 10× courtyard terraces twin bars tower perimeter points 1 2 3 4
fig. 3. the map, redrawn. every position is a number you can read back.
  1. 1
    direction is who leadsa check sits on the spoke toward the option its evidence favours.
  2. 2
    distance is by how muchthe lead divided by the check's tolerance, on rings at 2×, 5× and 10×. a 1.2 m lead on overlook and a 6 point lead on glazing can sit on the same chart honestly.
  3. 3
    the fog is too close to callanything within one tolerance stays in the middle, between the two options it cannot separate. the tool will not pick a side.
  4. 4
    a tail means a rangewhen the lead rests on estimates, the dot sits at the smallest lead the evidence allows and a blurred tail runs to the largest.
the same map in the prototype, with the fog drifting.

the reasoning behind every ring, threshold and scale is in the appendix.

key design decisions

01

every number points back at the geometry

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.

02

numbers from ai renders are hidden by default

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.

03

no overall winner, anywhere

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.

04

the next drawing request writes itself

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.

smaller decisions

  • sync is a button, not livea review compares fixed versions, and geometry mid-edit is often broken
  • a sync shows what movedreviews repeat, so the change is the news, not the whole table again
  • looking is not leaving outclick inspects; the eye, or shift-click, removes an option
  • a failed sync keeps the last good comparisonand the status says so

language

geometry proves a condition, not an experience. every sentence the tool writes was checked against that line.

this canopy will disturb residents when it rains.

a canopy is directly below these windows. whether rain is audible depends on roof build-up and room construction.

scheme a fails the overlook standard.

4 facing window pairs are closer than 12 m, your project setting.

two roofs have no drainage.

no drain objects on 2 flat areas. they may be unmodelled rather than missing.

when the answer is "not from this"

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.

no evidence anywherenothing is scored, and each file says what it is missing.
evidence in one optionone range is not a comparison, so the check stays open.
ai reference, range too loosescaled from people in the image. hidden, left out, crop shown.
scale not verifieda hand-drawn scale bar turns every length into a range.
observed, never measuredan image can show glazing. it cannot size it.
object may be unmodelleda missing drain is a question for the model, not a defect.
model changedthe check now reads too close to call, and says it changed since the last review.
one option leftthe map steps aside rather than draw a chart of one.
sync failedthe last good comparison stays on screen, and the status says so.

built to plug into the tools offices already use

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.

design platformadapter rhino adapter revit adapter sketchup adapter archicad adapter forma adapter ifc files adapter snapshot per alternative: element ids, categories, geometry, units, and what the input contains engine readers, one per check rules.js, tested baseline per review widget verdicts, the map, what changed, what would help change event: comparison out of date show in model: element ids and a camera hint, back to the platform
fig. 2. one adapter per platform, one engine and one widget for all of them. the platform only ever sees element ids coming back.
find the alternatives

maps the team's own grouping to options: layers or blocks in rhino, design options in revit, tags in sketchup, or one file each.

send a snapshot

not the model. element ids, categories, geometry, units, and what the input contains: openings, drains, rooms.

watch for edits

listens for the platform's own change events and marks the comparison out of date.

show in model

takes element ids and the measured line or route back, highlights them and moves the view.

what is real

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.

how it is tested

  • fewer than two comparable inputsopen, nothing scored
  • gap = leader's worst case − runner-up's best caseconservative
  • gap ≤ tolerancetoo close to call
  • observed or not in inputnever ranked
  • number read from an ai referencehidden until asked for

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.

what this does not prove

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.

what's next

recorded sessions

practising architects on a real past project, testing whether the checks match what they wish they had caught.

a live rhino adapter

so the readers that already measure dropped ifc files measure the model as it is being drawn.

one reviewed check

one check taken all the way, with real models and an expert reviewer, before adding more.

reflection

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.

appendix

tolerance per check
checkwhat is measuredtolerancewhy that tolerance
overlook between homesclosest facing facades, higher is better±0.6 mmassing and plans read to about ±0.5 m, rounded up
glass you can't reachshare of glazing not reachable from inside or a balcony±3 ptshow fixed panes are classified moves the share by about 3 points
rain noise over bedroomsroof surfaces directly below habitable windows±0.5counts are whole surfaces, so a difference of one is real
step-free route homelongest step-free route, entrance to front door±2 mroutes traced on plan read to about ±2 m
bins and deliveriesbin store to collection kerb±0.6 msame reading precision as facade distances
replacing big equipmentclear service route for the largest plant item±0.1 mdoor and corridor widths read to ±0.1 m
water and debris poolingflat roof areas with no drain found±0.5counts 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.

why these numbers on the map
parametervaluewhywhat would change it
distance unitgap ÷ tolerancechecks 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 foglog₁₀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
rings2×, 5×, 10×the 1, 2, 5 steps engineers already read on scales and charts. roughly: clear, clearly, overwhelming.an office's own thresholds
outer limit10×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
rangesworst casethe 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.5a count of whole things changes in steps of one, so any difference of one is real and nothing smaller exists.nothing
tiesbetween the paira tie sits in the fog on the line between the two options it cannot separate, so you still see which two are close.nothing
what the tests assert
  • a gap within tolerance is always too close to callpass
  • a range never wins on its best casepass
  • the leader beats every option, not only the runner-uppass
  • the order options are listed in changes nothingpass
  • units do not matter: scaling values and tolerance together changes nothingpass
  • flipping the direction and negating values gives the same leaderpass
  • a larger tolerance can turn a lead into a tie, never a tie into a leadpass
  • an option left out never leadspass
  • removing an option ranked third or lower changes nothingpass
  • ties stay in the fog, leads sit outside it, further always means morepass
  • ai numbers are hidden by default; observations never become numberspass
  • anything that is not a number is refused, never rankedpass
  • every check states its tolerance and where it comes frompass
one sync, step by step
  • 01 · edit in the platformwidget marks the comparison out of date
  • 02 · synconly elements whose fingerprint changed travel
  • 03 · re-readonly checks that read those elements re-run
  • 04 · compareagainst the last review; moved checks are marked
  • 05 · if the platform does not answerthe last good comparison stays, and says so

sources

  1. chong, w.k. and low, s.p. (2006). latent building defects: causes and design strategies to prevent them. journal of performance of constructed facilities 20(3). doi
  2. lopez, r. and love, p.e.d. (2012). design error costs in construction projects. journal of construction engineering and management 138(5). doi
  3. bordass, b. and leaman, a. (2004). probe: how it happened, what it found, and did it get us anywhere? and (2005) making feedback and post-occupancy evaluation routine, building research and information 33(4). pdf
  4. riba (2025). second riba ai report. link
  5. sarkar, a. et al. (2024). shadows don't lie and lines can't bend! generative models don't know projective geometry… for now. cvpr 2024. arxiv
  6. bansal, g. et al. (2021). does the whole exceed its parts? the effect of ai explanations on complementary team performance. chi '21. doi
  7. buçinca, z., malaya, m.b. and gajos, k.z. (2021). to trust or to think. proceedings of the acm on human-computer interaction 5(cscw1). doi
  8. google pair. people + ai guidebook: explainability and trust. link
  9. building and construction authority, singapore (2019). façade access design guide, v1.1. pdf
  10. ying, h. and sacks, r. (2024). from automatic to autonomous: an llm-driven approach for generic building compliance checking. cib w78 2024. preprint