๐Ÿ“ Overview
๐Ÿ–ฅ UI
๐Ÿค– How It Works
๐Ÿ“‹ Stories
โฑ Build Effort

AI Order Intake

Paste any email or SMS into the admin portal. AI maps it to the product catalog and creates a structured order draft โ€” ready to confirm in one click. Clients never change what they do.

0
Client behavior change
~60s
Per order (was 15โ€“30min)
~30h
Total build effort
Sprint 3
Target delivery
The Problem It Solves
TodayWith AI Intake
Staff reads email: "3 cases romaine and the usual herbs, Thursday please" Staff pastes that same email into the intake panel
Staff manually maps each item to the catalog, opens portal, enters one by one AI returns a structured draft: Romaine ร— 3, Mixed Herbs ร— 2 (from last order), delivery Thu
Staff creates QB invoice manually after order ships One-click confirm โ†’ order enters pipeline โ†’ packing sheet + QB invoice created automatically
~15โ€“30 min per order ยท ~4h/day ยท ~$27โ€“31K/year ~60 seconds per order ยท zero missed invoices
End-to-End Flow
Staff
Paste Email or SMS
โ†’
AI
Parse + Map to Catalog
โ†’
Human
Review Draft + Fix Flags
โ†’
Pipeline
Order Confirmed
โ†’
Ops
Packing Sheet
โ†’
Finance
QB Invoice
Key principle
AI Intake feeds into the existing order pipeline โ€” it doesn't replace it. Once confirmed, an intake order is identical to a portal order: same status flow, same packing sheet, same QB invoice.
Scope
In Scope (v1)Out of Scope
Paste email body text โ†’ parseAutomated inbox monitoring (future)
Paste SMS/text message โ†’ parseWhatsApp / iMessage native integration
AI maps to existing product catalogCreating new products from intake
Confidence scoring per line itemAuto-confirm without human review
Human review + edit before confirmEmail reply to client from portal
Confirmed order enters full pipelineMulti-order batch from one paste
Original text stored as audit trailAuto-detect client from email sender

UI โ€” The Intake Panel

A dedicated screen inside the Admin Portal. Paste any communication โ€” email, text, notes โ€” and get a structured order draft back.

Step 1 โ€” Paste & Parse
Admin Portal ยท AI Order Intake
Paste email or SMS
Hi Brendon, can I get 3 cases of romaine, 2 bags of the mixed herbs (same as last week), and maybe 1 bag of microgreens if you have them. Delivery Thursday please. Thanks โ€” MW Restaurant
Link to customer
Delivery date (extracted)
Step 2 โ€” Review the Draft
Reading the results
Green = AI is confident, no action needed. Yellow = review suggested. Red = must resolve before confirming โ€” blocks the Confirm button.
AI Draft โ€” MW Restaurant ยท Thu Jun 5
Romaine Lettuce
"3 cases of romaine"
3 cases
High
โœ“ Keep
Mixed Herb Blend
"mixed herbs (same as last week)"
2 bags
Medium
โš ๏ธ Quantity inferred from last order. Verify this is correct before confirming.
Microgreens Mix
"microgreens if you have them"
1 bag
Low
๐Ÿ”ด Conditional order ("if you have them"). Stock: 4 bags available. Include or remove?

3 items ยท MW Restaurant ยท Thu Jun 5 ยท 1 item needs resolution
Resolve all ๐Ÿ”ด items to enable confirm
Step 3 โ€” Confirmed โ†’ Pipeline
After confirmation
Order enters the pipeline as Confirmed. Packing sheet generated. QB invoice created. Original text stored on the order record as audit trail. Order appears in the admin list with an [AI Intake] tag โ€” filterable separately from portal orders.

How the AI Parses

What the AI sees, what it extracts, and how it decides when to ask for human help.

What the AI Sees
InputWhy It Matters
Pasted textThe raw email or SMS to parse
Product catalog (live)All active products: name, category, unit, price, current stock. AI matches against this โ€” no hallucinated products.
Client's last orderNeeded to resolve "same as last week" / "the usual" references
Client profileTier, standing orders, preferred products โ€” helps disambiguate
What the AI Extracts
WhatExampleResult
Product match"romaine", "the leafy stuff", "baby lettuce"Romaine Lettuce (matched from catalog)
Quantity"3 cases", "two bags", "a box", "6"3, unit: cases
Delivery date"Thursday", "this Friday", "June 10"2026-06-05 (resolved from today)
History reference"same as last week", "the usual", "repeat my order"Loads last order โ†’ pre-fills + medium confidence flag
Conditional items"if you have", "maybe", "only if available"Item included + red flag โ€” must resolve before confirm
Stock riskAny item where requested qty > current stockYellow flag: "Only X available, you requested Y"
Confidence Tiers
๐ŸŸข High โ€” No action needed

Exact match

Product name matches clearly. Quantity is numeric and explicit. No ambiguity.

"3 cases romaine" โ†’ Romaine ร— 3 cases
๐ŸŸก Medium โ€” Review suggested

Inferred or assumed

Product matched via synonym or history reference. Quantity inferred. Staff should verify before confirming.

"the usual herbs" โ†’ Mixed Herb Blend ร— 2 (from last order)
๐Ÿ”ด Low โ€” Must resolve

Blocks confirmation

Conditional logic, unknown product, or missing quantity. Confirm button stays disabled until resolved or removed.

"microgreens if you have them" โ†’ needs decision
Edge Cases
SituationAI Behavior
"The usual" โ€” no order history for this client๐Ÿ”ด Flag: cannot infer without history. Staff must enter manually.
Product not in catalog๐Ÿ”ด Flag: unknown item. Staff removes or maps to correct product.
Quantity not stated๐ŸŸก Defaults to 1, flags for verification
Two similar products (e.g. romaine vs romaine hearts)๐ŸŸก Shows top 2 matches, asks staff to select
Requested qty exceeds stock๐ŸŸก Flags available qty โ€” staff decides partial fill or contacts client
Text contains no order contentReturns empty draft: "No items found in this text"

Feature Stories

23 stories across 4 epics. All with acceptance criteria.

Epic 1 โ€” Intake Panel UI

The text quadrant โ€” where staff paste emails and SMS.
โ–พ
IDStoryPriorityAcceptance Criteria
AI-01Staff can access "AI Order Intake" from the admin navP0Panel in nav; not visible to customers
AI-02Staff can paste any free text into the intake areaP0Accepts unlimited text; no formatting required
AI-03Staff selects which client the intake is forP0Dropdown shows Active customers; required before parsing
AI-04Staff clicks "Parse Order" to trigger AIP0Button disabled until text + client selected; shows loading state
AI-05Delivery date extracted from text is shown and editableP1Extracted date pre-fills field; staff can override

Epic 2 โ€” Parsing Engine

AI maps free text to the product catalog.
โ–พ
IDStoryPriorityAcceptance Criteria
AI-06AI maps product names (exact, synonyms, partial) to catalogP0"romaine", "baby romaine", "the romaine" all map to Romaine Lettuce
AI-07AI extracts quantities including written numbersP0"two bags" โ†’ 2; "a case" โ†’ 1; missing โ†’ flagged
AI-08AI resolves "same as last week" / "the usual" via order historyP1History found โ†’ pre-fills + medium flag; no history โ†’ red flag
AI-09AI flags conditional items ("if you have", "maybe")P1Conditional โ†’ red flag; blocks confirmation until resolved
AI-10AI flags items where requested qty exceeds current stockP1Over-stock โ†’ yellow flag with available qty shown
AI-11AI extracts delivery date from relative and absolute referencesP1"Thursday" โ†’ resolved to correct date; shown in UI
AI-12Unknown products surfaced as red flagsP0Unknown item โ†’ red flag; staff can remove or manually assign

Epic 3 โ€” Review & Confirmation

Human in the loop before the order enters the pipeline.
โ–พ
IDStoryPriorityAcceptance Criteria
AI-13Draft shows each line item with product, raw text, qty, confidence badgeP0All fields visible; badges color-coded high/medium/low
AI-14Staff can edit product, quantity, or unit on any line itemP0Edit โ†’ draft updates; re-validation runs
AI-15Staff can remove any line item from the draftP0Remove โ†’ item gone; count updates
AI-16"Confirm Order" disabled until all red flags resolvedP0Any red flag โ†’ button disabled + tooltip
AI-17Confirmed intake order enters pipeline as status = ConfirmedP0Confirm โ†’ order in dashboard with [AI Intake] tag; status = Confirmed
AI-18Original pasted text stored on order record as audit trailP1Order detail view shows "Intake source" with original text
AI-19Staff can discard draft and start overP1Discard โ†’ clears draft; no order created

Epic 4 โ€” Pipeline Integration

Intake orders flow into the same pipeline as portal orders.
โ–พ
IDStoryPriorityAcceptance Criteria
AI-20Confirmed intake order triggers packing sheet generationP0Same packing sheet as portal orders; includes [AI Intake] label
AI-21Confirmed intake order triggers QB invoice creationP1QB invoice created within 60s; matches confirmed draft
AI-22Intake orders filterable by [AI Intake] tag in order listP1Admin can filter: Portal / AI Intake / Guest
AI-23Availability decremented on confirmation (same as portal orders)P0Confirm โ†’ stock updated; same race condition rules apply
EpicStoriesP0P1
Epic 1 โ€” Intake Panel UI541
Epic 2 โ€” Parsing Engine734
Epic 3 โ€” Review & Confirmation752
Epic 4 โ€” Pipeline Integration422
Total23149

Build Effort

What the AI agent builds vs. what requires human judgment. Includes 30% buffer throughout.

~15h
AI Agent
~15h
Human
~30h
Total
2.5wk
Sprint 3
Hour Breakdown
AI Agent
Human
Frontend UI โ€” intake panel + draft view
5h AI
2h
7h
Backend โ€” parse endpoint + prompt
4h AI
2h
6h
Prompt calibration โš ๏ธ human-only
5โ€“8h human only
5โ€“8h
Pipeline integration โ†’ packing + QB
2h AI
1h
3h
Testing real emails โš ๏ธ human-only
4โ€“5h human only
4โ€“5h
Edge cases + iteration
2h AI
1.5h
3.5h
ComponentAI AgentHumanTotalNotes
Frontend UI (intake panel, draft, inline edit, confirm bar)5h2h7hDraft view is the most complex piece โ€” badges, flags, disabled state logic
Backend parse endpoint + prompt construction4h2h6hInjecting catalog + history into prompt correctly takes iteration
Prompt calibrationโ€”5โ€“8h5โ€“8hโš ๏ธ The real work. Requires Brendon's actual emails to calibrate against.
Pipeline integration (โ†’ createOrder โ†’ packing โ†’ QB)2h1h3hReuses existing pipeline โ€” minimal new code
Testing with real emails2h3h5hโš ๏ธ Cannot skip. Synthetic examples don't catch real-world patterns.
Edge cases + refinement2h1.5h3.5hโ€”
TOTAL~15h~15h~30h~2.5 weeks ยท includes 30% buffer throughout
The Critical Dependency
Brendon action required before Sprint 3
20โ€“30 real order emails and SMS from Brendon's clients. Raw forwarded emails work fine โ€” no curation needed. Without them, the prompt gets calibrated against synthetic examples that won't reflect the real language MW Restaurant, Safeway, or Halekulani Hotel actually use. This is the single item that can slip the Sprint 3 delivery by ~1 week.
Why human review stays in v1
No auto-confirm in v1. Every parsed order requires staff sign-off before entering the pipeline. This adds ~60 seconds per order but eliminates wrong fill risk entirely. Once real-world accuracy is measured, a configurable auto-confirm threshold can be introduced โ€” but only after production data justifies it.