From raw image to deliverable: the inspection evidence chain
Not just receiving photos —
delivering the evidence.
In shortSite photos are pre-labelled by AI, confirmed by people and turned into a deliverable inspection report in one click; a 714-photo project now gets its report in 84 seconds.
HEIC upload → three-tier images on OSS → vision-LLM pre-annotation → canvas annotation and human review → template-filled Word. Curtain wall and foundation pit share one chain; the report draws only confirmed boxes.
Desktop review
12345Desktop review: the photograph and the decision, together.
An actual wall photograph, eight annotation boxes and item-level review controls. The QA project was used for interaction acceptance.
Original Chinese interface, shown as built. The numbers mark the parts that matter.
- The queue of photos waiting for review.
- The original wall photo with eight AI-suggested boxes. The canvas is read-only for geometry: zoom, pan and locate; boxes are edited on the annotation page.
- Item #4, "breakage", is selected and highlighted on the photo and in the list.
- A decision for each box: confirm, reject or unsure. Every item starts as pending.
- Whole-photo decisions: pass or reject the photo at once.
Mobile annotation

Mobile annotation: leave room for the field image.
A production capture saved after the latest release. The excavation photograph sits alongside image navigation, drawing and saving controls.
- MY CONTRIBUTION
- Product scope and key trade-offs, interaction iterations, AI-assisted implementation, delivery validation; root-cause analysis and hotfix of a production incident in the report chain.
- CURRENT PROGRESS
- v0.6 accepted and synced to production; after the 22 September hotfix a 714-photo project passes end to end; normal samples leaking into reports remains on the books.
- ON THIS PAGE
- Desktop review, production mobile annotation, and the engineering record of the report chain.
The hard part is not putting photos in the cloud — it is making sure each photo still carries its evidence when it reaches the report.
Photos arrive from different devices, judgement needs people, and the result goes into a document with legal and engineering responsibility. Storage, AI inference, annotation state and document layout must be designed on one chain; lose state in any segment and the report merely looks right.
Three product decisions
Make upload useful before adding AI.
Separate material intake from AI processing. Users can organize images and choose what to process, while manual work remains available without an AI result.
Treat the phone as a field tool.
Design around capture, gallery upload and touch annotation, with room to work on a small canvas. Preserve source files and keep image navigation and saving coherent.
Separate annotation from confirmation.
An image being viewed, annotated or processed by AI does not imply review approval. Carry its source, records and status downstream without turning uncertainty into a finding.
Four hard parts of the chain
Not features — the places that keep this chain standing in production.
- SEMANTICS
- Translating annotation state into document semantics.
The report draws only confirmed boxes, and draws them itself; defect numbers restart per facade, photo numbers run through the whole report, one photo can carry several defects. Ordering by image_id, for traceability.
- ROOT CAUSE
- One OOM, root cause, 58-line fix.
The old path decoded every original, drew boxes and held them all in memory before layout; a 714-photo project drove one process to 4.3 G and the kernel killed it. Fix: OSS server-side resize, box coordinates scaled by the long edge, 8 parallel fetches, fallback to originals — 4 files, 58 lines; measured 83.6 s / 821 MB, mean box overlap old-vs-new 0.824.
- TWO DOMAINS
- Curtain wall and foundation pit on one chain.
Curtain wall fills blocks A–E of the client template; foundation pit adds 13 monitoring rule classes, a config snapshot frozen per daily report, first-test / re-test split, and a concurrency lock returning 409. One image → document chain, two rule sets.
- AI, HONESTLY
- "Fix false positives; misses are free." No recognition-rate claim.
The vision LLM only pre-annotates. Editing one defect class definition shifts other classes (they compete in one prompt); a newer model scored 7/10 vs 10/10 and 3.94 s vs 1.89 s, so it was not adopted.
Figures from validation and hotfix records, 2026-09-13 → 09-22; the 8–9 minute end-to-end time is bounded by the public network link, not compute. No customer or project names.
Say only as far as it has gone.
As of 2026.09.22
Image management and field operation
Mobile interaction, compatible upload, status guidance in production; upgrades keep history and existing entry points.
Scale and report generation
Bulk import with integrity checks, large-image preview and the large-project report hotfix all have measured records. Not the same as every batch operation being accepted.
Report mode and device coverage
Normal samples leaking into reports, very large user-side uploads, batch QC and export, more real devices remain on the books; business acceptance of the report platform is judged separately.
A report is one output of the workflow.
Source images, human observations and review status form the reusable foundation for reports or training data. This case starts with the whole workflow, then uses the engineering record of the report chain to substantiate one part of the delivery.
Contribution, collaboration and evidence
My role and existing foundations
I build on an existing team platform and industry material, shaping the current scope, interactions and acceptance work with coding-agent assistance for implementation and integration. Reporting also builds on existing templates and collaborators’ work; this is not a claim to have authored the entire system from scratch.
Evidence and presentation scope
Versions of screenshots are in the captions; performance figures come from dated validation and hotfix records. Test records are not presented as customer scale or commercial results; no customer names, project codes or internal addresses.