← Full journal

Measure the ceiling before iterating further

I closed the heuristic phase of ArchPad's screenshot→mockup converter (on-device CV + OCR, zero ML in the critical path). The signal to stop wasn't fatigue: recent rounds went from fixing structure to fixing cosmetics, and the instrumentation showed the ceiling — text at 94%, color near-exact, geometry stuck at ~53%. When every layer is measured, stopping the heuristic grind is no longer an opinion: it reads straight off the numbers, and the next leap gets designed against the measured weak layer — an on-device object detector, not more rules.

The bonus I didn't see coming: the product's own template catalog renders screens with exact frames and types — free, unlimited labeled training data. The usual cost of a vision project (labeling) was already paid by another feature.

Side-by-side comparison: on the left the original fitness-app screenshot; on the right the editable mockup the converter generates, with the gauge, macro rows, chart and tab bar rebuilt
The converter in action: import a screenshot (left), get an editable mockup (right) — every gauge, row and chart is a component, with colors and typography sampled from the original.
Bar chart with the converter's three measured pillars: text 94%, color near-exact, geometry 53% with a Phase-2 target of 80% via an on-device detector
The pillars at phase close: the measured weak layer decides the next leap.