Case study · Construction operations
LiveA phone scan of a room becomes a field plan, and the math stays in code
Wisdom Renovations runs residential renovations where one project means three to twenty invoices across about five trades. We built the parser that turns a phone LIDAR scan into a structured field plan, and it scores 100 out of 100 on its golden eval. The invoicing and collections work behind it is the harder half.
Parser live in production / invoicing and collections in build
Wisdom Renovations is named with permission and is already public on this site. The contractor network they operate within is under NDA and is not named here, and neither are any of the homeowners inside the reference job. The estimate and invoice figures below come from one real job, with the customer's identity kept local and out of every repository.
100/100
Field-plan parser on its golden eval
$151K
Past due on a single client, surfaced
3 to 20
Invoices per project, across ~5 trades
CMore Flo / construction quoting and scope-of-work redesign / case study walkthrough
About the company
Wisdom Renovations runs residential renovation projects, from single-room remodels to full home renovations. They operate inside a contractor network that is under NDA, so that entity is not named here, and neither is anyone inside the reference job.
The work is measured on site, priced across multiple trades, and billed in milestones. A standard bathroom bills 30 percent down, 30 percent after demolition, 35 percent after build-back, which is the reconstruction after demo, and 5 percent after the permit closes. A full home renovation breaks that formula, because rooms finish at different times.
The problem
One project can mean three to twenty invoices across about five trades, and the reference job we worked from had four change orders on top of that. The person who described the invoicing situation to us called it a cluster, and the detail behind that word is what makes it real: multiple owners of the process over time, no clean handoff between them, and every job type carrying a different milestone structure.
The first ask was not automation. It was visibility. One place to see what has been sent, what is outstanding, what is overdue, and who has already been messaged. That is not a glamorous request and it is the correct one, because you cannot automate a process nobody can currently see.
The estimating side had its own version of the same waste. The measurements already existed. Somebody had scanned the rooms with a phone. Then a person spent one to three hours per job turning those measurements into line items by hand, room by room, trade by trade, and on a large project a single missed line costs thousands. The data was there. Nothing carried it forward.
And the collections story is the one worth sitting with. There was $151,000 past due on a single client, across more than ten invoices. The job management platform they run has automatic payment reminders built in, and those reminders were switched off. Not because nobody thought of it. Because they are context-blind: they will chase a client who paid yesterday, or one who is mid-dispute over a change order, and every one of those costs a relationship. So chasing went back to being manual, which means it did not happen.
The invoicing situation got described to us as a cluster. Multiple owners over time, no clean handoff, and every job type billing a different way.
The solution
We built the field-plan parser first. A phone LIDAR scan becomes a structured field plan: measurements, linear footage, cabinet runs, and the scope breakdown, drafted for review. It scores 100 out of 100 on its golden eval, which is a fixed set of real cases with known-correct answers that runs on every change, and it is live in production. An earlier pass scored 96.6, and the gap between those two numbers is about a week of finding out what the model got quietly wrong on real jobs.
The measurements that matter got included because we were told to include them, not because we designed them in. Cabinet and countertop measurements needed to appear on the field-plan summary even if somebody typed them in by hand at first. That is the kind of detail you only get by asking the person who does the work.
On the billing side, the structure is data rather than logic. 30 / 30 / 35 / 5 for a bathroom, percent complete for something else, and whatever the bank dictated on a financed job. A new job type is a configuration, not a rebuild. Every dollar in it is computed by code, never by a model, which is the same rule that governs the Pearl Street engine and for the same reason.
Collections is being built to be context-aware, which is the entire difference between it and the feature that already exists and got turned off. It knows what was sent, who replied, and what is contested. Nobody gets chased for an invoice they paid yesterday. The system's job is to tell a person who to call and why, and the call stays a person's.
The impact
The parser is live and scoring 100 out of 100 on its golden eval. The person reviewing a scope is checking a near-complete draft rather than assembling one from a blank page, which is the difference between a fifteen minute review and three hours of line-by-line work. The estimated time recovery across the operation is roughly 26 to 38 hours a month, and we are labeling that an estimate because that is what it is.
The $151,000 past due did not get collected by software. It got surfaced, ranked, and turned into a list somebody could actually work, which is the part that was missing. The invoicing and collections modules are in build.
The reference job behind all of this was a real kitchen and flooring remodel with a master estimate of $56,867.50 and fourteen real PDFs. We are not going to tell you whose house it was, and the customer names inside that job stay local and out of every repository we touch. That is not a policy paragraph. It is why the numbers on this page are the ones we are willing to show you.
The platform's auto-reminders were turned off on purpose. They chase people who already paid, and each one of those costs a relationship.
Under the hood
How the system actually runs.
A phone scans the rooms. The parser turns that into a structured field plan a person reviews rather than builds. Downstream, the milestone structure decides what can be billed, and every number in it is computed by code. The collections layer is the one that has to be careful, because chasing the wrong person costs a relationship.
What goes in
- A phone LIDAR scan of the rooms, which is measurement data somebody already captured on site
- The scope: which rooms, which trades, what level of finish
- The billing structure, which is different for a bathroom, a full home, and a bank-financed job
What the system does
01
Parse the scan
Measurements, linear footage, cabinet runs. Structured into a field plan, scored against a golden eval on every change.
02
Draft the scope
Line items per trade, drafted from the measurements. The reviewer checks a near-complete draft instead of building one from nothing.
03
Apply the billing structure
30 percent down, 30 after demo, 35 after build-back, 5 after the permit closes. Or percent complete. Or whatever the bank dictated.
04
Rank collections by context
Who is past due, what was already sent, who replied, who is mid-dispute over a change order. Context first, chase second.
Human checkpoint
A person signs the scope and every invoice. On a full-home renovation, a person also makes the judgment call about what can honestly be billed, because rooms finish at different times and no formula covers it.
What comes out
A review-ready scope, invoices whose arithmetic came from code, and a collections list that knows who not to call.
Results
The numbers, plainly.
- 100/100 on the field-plan parser's golden eval, live in production, up from 96.6 on an earlier pass.
- $151,000 in past-due invoices on a single client surfaced and ranked into a list somebody can work.
- 10+ past-due invoices on that one client alone, which is why context-blind reminders were the wrong answer.
- 3 to 20 invoices per project across roughly 5 trades, with 4 change orders on the reference job.
- 26 to 38 hours a month of estimated time recovery. Labeled an estimate, because it is one.
- 1 real reference job with a $56,867.50 master estimate and 14 real PDFs behind every claim on this page.
- 0 customer names published, here or in any repository. That is the rule, not a preference.
More work
Other systems we built.
Read next
The thinking behind the work.
Get started
Redesign your quoting workflow
Book a 30 minute call. We find the one place your work waits on you, and you get a straight answer about whether AI is the fix. No pitch, no deck.