+
+
+
+House scanning briefing: what we are building, what works, what is blocked
+
+
+
+
+
+
+
+
+
+
House scanning: what we are building, what works, and what is blocked
+
Team briefing, 26 September 2026, facts as of 09:10. Readers: Sam, Hunter, Shrey, Aiden. About ten minutes.
+
+
A homeowner walks the outside wall around their electric meter with an iPhone. The phone measures the wall, a server applies the clearance rules in plain code, and the app shows where the battery goes, in AR, on the real wall.
+
Today it runs end to end in the iPhone Simulator on a recorded real walk and gets a real answer from the live server. It has never run on a physical iPhone at a real wall. That is the blocker, and the first job this morning.
+
+
+
+
+
1. The problem: a battery has to fit between the rules
+
+
+
+
Wider than the screen: scroll sideways for the rest of the picture.
+ Everything is drawn at one scale: 5 ft between tape marks. The red hatched areas are places the battery may not go. The battery just fits between the electric meter and the window's zone. Rules shown: 3 ft from the gas meter, from AC units, fences and other batteries, and from doors and windows that enter the home; 3 ft of clear space in front; 6.5 ft of headroom; within 20 ft of cable run from the meter; a flat, seen stretch of wall behind it.
+
+
+
+
Base Power puts a home battery on the outside wall, close to the electric meter, because a cable runs from the meter to the battery. The battery is 31 in wide, 22 in deep and 39.5 in tall. Whether it fits, and where, depends on the clearance rules in the picture. Today a person has to go to the house and check.
+
Our product does that check with the homeowner's iPhone, in a couple of minutes. The app measures the wall. A server applies the rules in plain code. The app shows where the battery goes, in AR, on the real wall.
+
The demo's rules come from public sources and live in server/rules.yaml, each with its citation. Two numbers there are placeholders because no public value exists (pool 10 ft, driveway 5 ft). Base's own thresholds are private, load at runtime from a file that is not in git, and do not appear on this page.
+
+
+ The rules the demo uses, with sources
+
+
Rule
Value
Source
+
+
Distance from the gas meter
3 ft
Base's public help page; Austin Energy; Texas Gas Service
+
Distance from AC units, fences, other batteries
3 ft
Base's help page
+
Distance from doors and windows that enter the home
3 ft
IRC R328.4
+
Clear space in front of the battery
3 ft
Base's help page
+
Cable run from the meter
within 20 ft
Base's help page
+
Headroom
6.5 ft
NEC 110.26, a demo choice
+
Wall behind the battery
flat, and seen by the camera
demo requirement
+
Pool, driveway
10 ft, 5 ft
placeholders; no public value exists
+
+
+
+
+
+
2. How a scan becomes a decision
+
Six pictures. Each one is the last one with one thing added. The tape along the bottom is real: the app shows the wall unrolled like a tape measure, with the electric meter at zero.
+
+
+
+
+ Point at the electric meter and tap. The meter becomes zero. Every position from now on is measured left or right of it, in feet.
+
+
+
+
+ The phone takes a close-up of the meter by itself when the picture is sharp, to read the meter's number. Then you walk along the wall, left and then right. The phone keeps photos automatically.
+
+
+
+
+ A haze covers wall and ground the phone has not seen and lifts as it sees them. The team calls this fog of war. The tape strip grows as you walk.
+
+
+
+
+ Mark things as you pass: gas meter, AC unit, door, window, driveway edge, fence. If something a rule needs is still unseen, the app asks for one more view, in one sentence.
+
+
+
+
+ The phone sends a small file of measurements, about 17 KB for a real walk. The server slides the battery's footprint along the wall in 2-inch steps and checks every rule at every position.
+
+
+
+
+ The server answers with the best spot (shortest cable run first), the cable route, and every check's outcome and reason. The phone draws the battery on the wall, placed relative to the meter, in 3D and in AR.
+
+
+
+
+
+ The recap. AI is used only to recognise things: it reads the meter's text and finds objects. The placement decision is ordinary code with the rules in a file, so every answer traces back to a rule and a measurement.
+
+
+
+
3. Three ideas that make the answer honest
+
+
The phone counts its own steps, so error grows with distance
+
+
+ AR tracking is dead reckoning: the phone estimates how far it moved from the camera and motion sensors, like counting your own steps from a doorway. Small errors add up, so the farther from the meter, the less sure a position is. The server widens every AR measurement's error bar by 0.3 ft plus 0.16 ft per foot along the wall. Where the analogy breaks: a miscounted step is only a stretch along the wall, while the phone's error also drifts sideways.
+
+
+
The error bar decides: PASS, FAIL or UNSURE
+
+
+ Every measurement carries an error bar. A check passes only when the margin beats the error, fails only when it is past the rule by more than the error, and is UNSURE otherwise. Equal is UNSURE. UNSURE means a person checks it, or the app asks for a better view. The three examples are the dossier's, for the 3 ft gas meter rule with ± 0.8 ft.
+
+
+
Unseen is not clear
+
+
+ If the camera never saw part of the area a rule depends on, that check cannot pass. It stays UNSURE, and the server names the view that would settle it. Here the ground beside the spot was never seen, and the checks that use ground need 6 to 13 ft of it. A blank on the map is never treated as empty ground.
+
+
+
+
4. Where it stands this morning
+
+ ✓ proven in the Simulator on a recorded real walk
+ ! fixed this morning
+ ? not yet proven on a real phone
+
+
+
Tap the meterIt becomes zero.
✓Simulator?Real phone
+
Read the meter's numberClose-up; three candidates to tap.
✓Simulator?Real phone
+
Walk the wallHaze lifts; tape strip grows.
✓Simulator!Now reports ground depth, clear space in front, and a tilt-up view for headroom?Real phone
+
Mark things, one more viewGas, AC, door, window, fence.
✓Simulator!Server now publishes exactly what settles each check?Real phone
+
Upload scene.jsonMeasurements only.
!17 KB, not 16.5 MB of photos; answer in 0.5 s?Real phone
+
Server decidesLive on Vercel.
✓252 tests; independent checker 50 of 50
+
Show the spot in ARPlaced from the meter.
✓Simulator, 3D and AR?Real phone
+
+
✕
Never run on a physical iPhone at a real wall.Every stage marked "?" above shares this one gap. Everything that decides accuracy is waiting on that data.
+
+
Placeholder rulesWith the public placeholder rules, automatic approval is off, so every real result says "An installer will take a look."
+
Hidden wallThings standing in front of the wall can hide it, and nobody owns checking that yet (decision 7).
+
Parked: web review page (#15)It shows the server's answer in a browser. It helped check the server before the app could upload. It is not the product.
+
+
+
+
Does what we built work, and is it part of the app we'd ship?
In the Simulator on a recorded real walk, yes: meter to result, with a real answer from the live server. The app and the server are the product. The web review page is not, and it is parked.
+
Are the overnight tests doing anything?
Each of the five changed the app or the server (section 6 lists what). Three other pieces of overnight work changed nothing: the panel-label search, finer statistics on the modern-phone data, and the research notes.
+
What is done that achieves the goal?
The server, live with 252 tests. The whole app flow in the Simulator. Uploads fixed to 17 KB. The first-try fixes, merging now while the build is repaired.
+
What is the main blocker?
A real-phone session. See the next section.
+
+
+
+
5. The main blocker, and what to do this morning
+
+
+ Nothing decides accuracy until this runs. Hunter's research handoff (PR #18) reaches the same conclusion.
+
+
+
Run the field test first, about an hour. You need a current non-LiDAR iPhone, the Measure Lab build, a 30 ft tape and a real meter wall. Follow experiments/evals/field/FIELD_SHEET.md: type the tape readings into the prepared templates, and one command turns them into a score and the phone's real scale error. A dry run recovered a planted 1.5% error exactly, so the scoring end is ready.
+
The overnight tracking numbers (finding 1) come from a 2023 iPhone with LiDAR and a dataset whose reference may itself be scaled to the phone's tracking. Most homeowners' phones lack LiDAR. The field test measures our own phone on our own wall, which is the only direct measurement.
+
+
+
+
6. What the overnight tests found, and what each changed
+
All five ran on public real-world datasets with laser-measured ground truth. Dataset images are never in git. Each finding below ends with the line that answers "did this test do anything".
+
+
+
Finding 1. How far off is the phone's own tracking?
+
+
+ 2018 iPhone 6s (ADVIO)
+ 2023 iPhone 14 Pro Max (MARViN)
+ server's allowance
+
+
+ Position error after walking, p90 (9 in 10 cases are better). A current iPhone's own tracking stays inside the server's allowance at every distance; the 2018 phone is far over it. The allowance line is the 0.16 ft per foot part of the server's error bar. Caveats: the MARViN reference may itself be scaled to the phone's tracking, and that phone has LiDAR, which most homeowners' phones lack.
+ Data table
+
+
Walked
2018 iPhone 6s (ADVIO), in
2023 iPhone 14 Pro Max (MARViN), in
Server's allowance, in
+
+
3 ft
18.6
4.0
5.8
+
10 ft
55.7
8.6
19.2
+
20 ft
94.6
13.4
38.4
+
30 ft
132.6
18.5
57.6
+
+
+
+
+
What it changed: the server's error allowance comes from this. The field test measures our own phone.
+
+
+
+
Finding 2. Can photos alone give 3D measurements?
+
+
+ Learned depth models (MoGe-2, Depth Anything 3), rescaled with the phone's poses. Flat walls come out at about 5 in at best at a realistic phone error. Window and door edges, which are what clearances are measured from, come out at 8 in or worse in every setting.
+
+
What it changed: no photo-to-3D measurement pipeline. Every point a check depends on is an AR tap; learned depth only draws the 3D picture. This saved building the wrong thing.
+
+
+
+
Finding 3. Does the app's coverage map claim wall it never saw?
+
+
+ wall a photo saw
+ claimed, never seen
+ good wall thrown away
+
+
+ Run on real photos of a laser-scanned building. The map claimed 1.1 ft of a 19.3 ft wall that no photo saw, hidden behind scaffold footings. Requiring views from different angles removed it only by also discarding 6 to 8.5 ft of good wall. A depth test, available on LiDAR phones, removed it cleanly. The hatched span is drawn at 8.5 ft, the larger end of the range.
+
+
What it changed: decision 7 (who checks what is hidden). A wrong claim in the app's code, "the server rechecks from the images", was corrected: the server never sees images.
+
+
+
+
Finding 4. Can the phone read the meter?
+
+
+ Apple's on-device text recognition read the full meter number on 71 of 73 real meter photos, but could not tell which line on the plate was the number (right on 21 of 75). A barcode held the number on 20 of 24 photos that had one. A tap-to-confirm list of three candidates contained it on 85% of held-out photos.
+
+
What it changed: the app shows three candidates to tap, barcode match first, plus two photo checks that trigger a retake (blurry; number too small, "move closer").
+
+
+
+
Finding 5. Can a first-time homeowner finish a scan?
+
+
+ The verification agent's friction audit: no, not before this morning's fixes. However well it was walked, the app said it had seen ground only 4 ft out while checks need 6 to 13 ft, never reported the space in front of or above the wall, and turned corners into "walk past this" requests.
+
+
What it changed: the capture contract, and the app fixes in section 4: the server publishes exactly what settles each check, and the app reports real ground depth, the walked path as clear space in front, and a tilt-up view for headroom.
+
+
+
Three pieces of overnight work changed nothing in the product: the panel-label search (too few open photos: 7 US panels against 40 needed), finer statistics on the modern-phone data, and the research notes.
+
+
+
7. Decisions for this morning, recommendation first
+
+
Run the field test first
Recommend: about an hour, before anything else.
A current non-LiDAR iPhone, Measure Lab, a 30 ft tape, a real meter wall. Follow experiments/evals/field/FIELD_SHEET.md. One command turns tape readings into a score and the phone's real scale error.
+
How points get measured
Recommend: AR taps, not depth maps.
Finding 2: learned depth gets edges to 8 in or worse.
+
How far to walk
Recommend: outward from the meter on both sides; stop when the nearest spot that fits is fully seen.
The server prefers the shortest cable, so walking farther cannot find a better spot, and shorter walks drift less.
+
Base's real rules
Recommend: load them into the private rules file now.
Confirm with Base which rules the demo follows and which number on the meter plate they need (plates carry several). Otherwise the demo can never show a real "fits here".
+
Merge order
Recommend: #11 server first, since the others depend on its schemas.
Then #14 docs, #10 app, #13 verification, #12 evals, then #7, #4, #8, #6, #16, #17, #19.
+
Lane owners
Recommend: name one owner per lane.
Capture app, geometry, rules, output. Agents then know whose OK they need.
+
Who checks what is hidden behind things?
Recommend: the app.
Before the result, show the homeowner the photo of the chosen spot and ask if anything blocks the wall or ground there. On LiDAR phones, also run a depth test (finding 3).
+
What must the scan see, and what can we just ask?
Recommend: pool and driveway become one yes/no question, labelled as the homeowner's answer.
Instead of requiring 8 to 13 ft of photographed ground.
+
+
+
+
8. Asks: only a person can do these
+
+
Sam: review bots. Only CodeRabbit is installed and it is rate-limited; Greptile, Macroscope, Aikido and Codex review are not installed.
+
Sam: a one-time App Store Connect key for TestFlight (PR #8).
+
Sam: web previews on Vercel were turned off because the free plan's 100 deploys a day ran out; reconnect later.
+
Anyone, 5 minutes: confirm the meter labels on the local review page on Sam's laptop.
+
+
+
+
9. Reference: what exists, and how to try it
+
Open pull requests. None of these is merged yet. The server (#11) is live.