P1: Fix extraction (regex-first), rebuild Modal (vLLM 0.19 + L4 + nemotron-mini-4b), delete orphan, cleanup
ccf7eb1 | # SYSTEM DESIGN β Sidewalk FM | |
| **A voice/text bookkeeping ledger + advisor for one named informal street trader.** | |
| Build Small Hackathon 2026 Β· Backyard AI track. Design principle (from the winning-pattern research): **the demo must never break** β deterministic core, models enhance. | |
| --- | |
| ## 1. The user (named, specific) | |
| **Mama Aisha** β a morning-market produce trader. Low-literacy-friendly, speaks in plain language ("bought 50 mangoes at 200 shillings each"), often offline / limited connectivity, needs to know *am I making a profit?* β not formal accounting. | |
| ## 2. High-level flow | |
| ``` | |
| βββββββββββββββ text/voice ββββββββββββββββββββββββ | |
| β Trader β βββββββββββββββΊ β EXTRACTION β | |
| β (Gradio UI) β β 1) deterministic β | |
| βββββββββββββββ β regex/rules (1st) β | |
| β² β 2) Nemotron LLM β | |
| β advice + ledger β backup (messy in) β | |
| β ββββββββββββ¬ββββββββββββ | |
| β β structured txn {action,item,qty,price,ccy} | |
| β ββββββββββββΌββββββββββββ | |
| β β LEDGER STORE β JSON/SQLite (local, private) | |
| β ββββββββββββ¬ββββββββββββ | |
| β ββββββββββββΌββββββββββββ | |
| β β MATH ENGINE (Python) β revenue/cost/profit/margin | |
| β β β never the LLM β (deterministic, exact) | |
| β ββββββββββββ¬ββββββββββββ | |
| β βββββββββββββββββββββββββΌββββββββββββ | |
| ββββββββββββββ€ ADVISORY β | |
| β Nemotron-Mini-4B on MODAL (vLLM) β | |
| β fallback: deterministic canned β | |
| β advice from the numbers β | |
| ββββββββββββββββββββββββββββββββββββββ | |
| ``` | |
| ## 3. Components | |
| - **Input (Gradio):** text box now; voice (Nemotron 3 ASR) + TTS (Kokoro 82M) in Phase 2. | |
| - **Extraction:** deterministic parser first (regex for `buy/sell/return qty item at price ccy`), grounded β every field traceable to the input. Small **Nemotron** LLM only as a backup when regex fails. (NOT `nemotron-parse` β that's image/OCR and 400s on text.) | |
| - **Ledger store:** append-only transactions, local (privacy β "a trader's books are private"). JSON file or SQLite. | |
| - **Math engine:** pure Python β totals, per-item margin, daily profit. Deterministic so numbers are always correct and the demo never breaks. | |
| - **Advisory:** `nvidia/Nemotron-Mini-4B-Instruct` on Modal (vLLM 0.19.0, L4) produces short, actionable advice from the computed numbers. If the endpoint is unavailable, a rule-based advisor returns canned guidance from the same numbers. | |
| ## 4. Transaction schema | |
| ```json | |
| { "action": "buy|sell|return|refund", "item": "string", "quantity": number, | |
| "unit_price": number, "currency": "string", "vendor": "string|null", | |
| "notes": "string|null", "ts": "ISO-8601" } | |
| ``` | |
| ## 5. Model stack (all β€4B β Tiny Titan; all NVIDIA β Nemotron prize) | |
| | Component | Model | Params | Provider | Status | | |
| |---|---|---|---|---| | |
| | Extraction backup | Nemotron (small instruct) | β€4B | NIM/Modal | optional | | |
| | **Advisory** | **nvidia/Nemotron-Mini-4B-Instruct** | 4B | **Modal (L4, vLLM 0.19.0)** | core | | |
| | *(opt)* ASR | Nemotron 3 ASR | 0.6B | β | Phase 2 | | |
| | *(opt)* TTS | Kokoro | 82M | β | Phase 2 | | |
| | *(opt)* Receipt OCR | MiniCPM-V 4.6 | ~1.3B | OpenBMB | Phase 2 (OpenBMB prize) | | |
| ## 6. Serving (Modal β also the 10k-credit prize) | |
| - App `sidewalk-fm-advisor`; endpoint `https://joshua-abok--sidewalk-fm-advisor-serve.modal.run/v1`. | |
| - vLLM 0.19.0 OpenAI-compatible, L4 single GPU, `min_containers=1` (stays warm for the demo), `max-model-len 8192`. | |
| - README must note Modal-at-runtime to qualify for the Modal prize. | |
| ## 7. Reliability / graceful degradation (the differentiator) | |
| Every model call has a deterministic fallback: | |
| - Extraction: regex first β LLM only if regex fails β if LLM down, ask the user to rephrase. | |
| - Math: always Python (no dependency). | |
| - Advisory: Modal LLM β if down, rule-based advice from the numbers. | |
| Result: **the core ledger + math + basic advice work with zero external calls** β "Off the Grid"-leaning, demo-safe. | |
| ## 8. Prize β feature mapping | |
| Backyard AI (named trader) Β· Modal (advisory runtime) Β· NVIDIA (Nemotron) Β· Tiny Titan (β€4B) Β· Best Agent (parseβledgerβanalyzeβadvise) Β· Off Brand (custom UI, P2) Β· Best Demo (video+social, P2) Β· Bonus Quest Champion (stack) Β· OpenBMB (MiniCPM receipt, P2) Β· OpenAI Codex (Codex commits, P2). | |
| ## 9. Out of scope (post-hackathon) | |
| Fine-tuned classifier, published vendor-dialogue dataset, revenue "garden" visualization, multi-agent "market council", Android/GGUF edge build. | |