Building & Shipping an AI Feature
From idea to shipped feature
This final lesson ties the course together with a repeatable workflow you can apply to any Mobile AI feature — using a concrete example: “scan a receipt and auto-fill an expense form.”
Step 1 — Define the job clearly
Write down exactly what the feature does and what “good enough” means. For our example: detect text on a receipt, extract the total and date, and pre-fill the form — correct most of the time, with easy manual correction.
Step 2 — Choose the approach
Apply the on-device vs cloud framework. Receipts are sensitive and the user may be offline, and text recognition is a solved on-device problem — so use on-device OCR (ML Kit / Vision), with optional cloud parsing only if needed.
Step 3 — Build the pipeline
- Capture — let the user photograph the receipt (with a guide overlay).
- Pre-process — crop, correct orientation.
- Inference — run OCR to get the text.
- Post-process — use rules/entity extraction to find the total and date.
- Present — pre-fill the form and let the user confirm/edit.
val text = recognizer.process(image).await() // OCR
val total = extractAmount(text.text) // your parsing logic
val date = extractDate(text.text)
form.prefill(total = total, date = date) // user can edit
Step 4 — Design for trust and errors
- Show what was detected and make every field editable.
- Indicate low confidence (“please check the total”).
- Provide a fully manual path if scanning fails.
Step 5 — Optimise & test
- Run inference off the main thread; keep capture smooth.
- Test on real low-end devices and with messy, real-world receipts.
- Measure latency and accuracy; iterate on pre/post-processing.
Step 6 — Ship and learn
- Roll out gradually; watch crash and performance metrics.
- Collect (with consent) feedback on wrong results to improve parsing.
- Improve over time — swap in a better model or move parsing server-side without changing the UX.
A reusable checklist
- Is the on-device vs cloud choice right (privacy, offline, cost)?
- Is inference off the main thread and fast on low-end phones?
- Are confidence, errors and a manual fallback handled?
- Is sensitive data protected, and is the user informed?
- Did optimization keep accuracy acceptable?
Common mistakes
- Shipping the “happy path” only, with no correction or fallback.
- Adding AI for its own sake instead of solving a real user problem.
- Not measuring real-world accuracy after launch.
Summary: Ship AI features with a clear workflow: define the job, choose on-device vs cloud, build the capture → pre-process → infer → post-process → present pipeline, design for trust and failure, optimise and test on real devices, then roll out and keep improving. Solve a real problem — not AI for its own sake.