Hero · full bleed
The order app on the shop iPad, or a blurred paper ticket at the counter
Fabricare internship · Project 01 of 3 · 2026
Paper tickets to a shared order system.
Situation · ~120 words
Counters take orders, the hub does the work
- Orders physically move between base counters and Hinesville
- Tracked on paper plus phone calls, no shared view of where an order is
Before / after
Blurred paper ticket next to the same order in the app
Constraints · ~100 words
What every decision had to fit inside
- One person, three projects, 12 weeks
- Zero budget, no engineer, one decision-maker
- Inherited half-built codebase
- Users are staff mid-shift at a counter
Decision 1 · ~150 words
Finish what exists, don't rewrite
- Audit of the inherited FastAPI app
- What got deferred and what that cost
Decision 2 · ~300 words · centerpiece
Two-layer OCR, raw and final kept apart
- Pixels to text, then text to fields
- Human corrections always distinguishable, so accuracy is measurable
- Accuracy and coverage numbers, with how they were measured
Diagram
OCR layer → extraction layer → raw / final storage, with the low-confidence branch
Decision 3
When it can't read the photo
- Low confidence: stop and ask for a retake instead of guessing
- Why a plausible wrong ticket number is worse than an empty field
Screens
Intake, low-confidence retake state, order list, order detail
Shipping · ~120 words
Deployed, handed off, still running
- Hub-and-spoke model, deployed on Oracle Cloud
- Handoff documentation, running after I left