★ Module M4 · Phase 2 · Order Accuracy QA · Computer Vision at Expo

Every takeout bag scanned before it leaves the expo. The single fix for Roxanne's #1 recurring review complaint.

One missing salsa cup costs a 1-star DoorDash review, a refund, and a customer who never comes back. A top-down camera at expo cross-checks every bag against the Toast ticket in under two seconds. Held bags get a 30-second fix. Reviews stop saying "missing items."

Step 01
Camera setup · expo station feeds
Three top-down IP cameras watch the bag-staging area. ONVIF feeds run to the edge box under the pass.
3 of 3 online
Cameras are Reolink RLC-810A mounted on the soffit above expo. No faces in frame — only the staging surface from above.
Expo Station 1
Above main pass · facing south
1080p · 30fps
Last frame 0.4s ago
Expo Station 2
Above secondary pass · catering bagging
1080p · 30fps
Last frame 0.6s ago
Bag Pickup Counter
Front counter · DoorDash + customer pickup shelf
1080p · 30fps
Last frame 12s ago
Step 02
Order item recognition library
Vision model trained on Roxanne's specific packaging — foil-wrapped, paper-boat, salsa cup, chip bag. Retrain anytime new packaging hits.
10 items · 96.2% avg
Menu item
Reference photos
Accuracy
Last trained
Actions
Carnitas burrito
Foil-wrapped · 9oz tortilla · sticker A
12
96%
4 days ago
Carne asada tacos (3)
Paper boat · double corn tortilla
18
98%
4 days ago
Chicken quesadilla
Foil-wrapped · sticker C · half-cut
14
95%
4 days ago
Birria (consomé + meat)
16oz soup cup + lid + foil-wrapped tortillas
11
91%
9 days ago
Fish tacos (3)
Paper boat · cabbage slaw visible
9
93%
8 days ago
Salsa verde cup (2oz)
Clear deli cup · green liquid · green lid
22
99%
2 days ago
Salsa roja cup (2oz)
Clear deli cup · red liquid · red lid
22
99%
2 days ago
Chips bag (4oz)
Brown paper · stapled · oval logo
10
97%
5 days ago
Agua fresca (16oz)
Clear cup · dome lid · jamaica = red, horchata = white
8
94%
7 days ago
Churros (3) + side rice/beans
Wax paper bag · 8oz souffle cup w/ lid
7
93%
11 days ago
Step 03
Scan workflow rules
When to scan, how confident is "confident enough," what counts as a fail. Josh + Jesse own this.
Last edited 6 hours ago
Scan timing
Confidence threshold
92%
80% · loose92% · default99% · strict
Below this score, the bag escalates to a human check instead of auto-passing.
What counts as a fail
Auto-pass on low-risk orders
Designed to keep service fast on simple orders. Toggle off any rule that catches too many false passes.
Step 04
Alert routing — when a scan flags a fail
Who gets pinged, where, and what the message says. Each route can be turned off without breaking the others.
4 routes live
Line cook on station
Mobile · vibration buzz
"Ticket #4471 — salsa verde missing. Add 1 cup before runner picks up."
Expo runner
Display screen · 24" monitor at expo
Red banner + ticket # + missing-item list. "Hold bag — 1 item missing"
Manager on duty
Slack · #expo-alerts channel
Only pinged after 2 consecutive fails on the same station — signals a station-level problem.
Customer
Auto-text via Toast phone-on-file
"Your order needs 30 more seconds — we're double-checking it before it heads out. Thanks for your patience."
DoorDash driver
In-app message via Toast → DoorDash bridge
"Order #4471 needs 1 more minute — please wait at the counter, do not leave without confirmation."
Step 05
When the scan can't decide
If confidence drops below the threshold, the runner gets a touchscreen prompt with three options. No bag leaves on a "maybe."
3 escalation paths
1
Runner manually confirms each item against the ticket on the expo screen
Tap-through checklist · 4-5 seconds on a 4-item order · scan result logged either way
Default
2
Runner rescans the bag by lifting and re-staging on the mat
Triggers a fresh frame · used when the camera was blocked or bag was at an angle
Active
3
Escalate to manager on duty for a final call
Last resort · only used when ticket itself looks wrong (e.g. Toast modifier didn't print)
Active
Live preview
Expo Station 1 · live preview
Top-down view of the staging mat. Detection boxes overlay in real time.
LIVE Ticket #4471 · DoorDash
BAG · TOP-DOWN CARNITAS BURRITO conf 97% CARNE ASADA TACOS conf 95% SALSA ROJA conf 99% CHIPS BAG conf 96% SALSA VERDE expected · not found 4 OF 4 LINES · 1 MISSING SIDE · HOLD FLAG TRIGGERED
Match score
84%
Below 92% threshold — bag held for runner check.
Ticket #4471 · DoorDash · 4 items ordered · 3 detected · expected salsa verde missing. Scan started 1.8s ago.
Today's accuracy
Tuesday · expo open since 11:00am
147
Bags scanned
132
Passed first scan · 89.8%
14
Held + corrected
1
Failed + sent back
vs last Tuesday · +6.2% accuracy (was 83.6%)
WEDTHUFRISATSUNMONTUE
Top misses this week
What the scan keeps catching · informs retraining + line callouts
Salsa verde forgotten
8
Chips bag missing on combo
5
Wrong protein on tacos
3
Utensils missing on catering
3
Birria consomé lid loose
2
All changes auto-saved · vision model running 96.2% accuracy across 10 items