| --- |
| title: Sidewalk FM |
| sdk: gradio |
| tags: |
| - sidewalk-fm |
| - gradio |
| - hackathon |
| - build-small |
| - tiny-titan |
| - backyard-ai |
| - best-agent |
| - off-brand |
| - best-demo |
| - nvidia-nim |
| - modal |
| - well-tuned |
| - swahili |
| - multilingual |
| license: mit |
| --- |
| |
| **Hackathon Entry** |
| HuggingFace Build Small Hackathon 2026 β Backyard AI track |
| π Tiny Titan + Best Agent + Off Brand + Best Demo + Well-Tuned + NVIDIA Sponsor + Modal |
|
|
| **For a real person:** Mama Aisha, a morning-market produce trader who speaks Kiswahili and |
| English. She logs sales by *voice* in her own language and hears whether she's making a profit β |
| no typing, no accountant. |
|
|
| > "What's your biggest expense today?" |
| > "I spent 500 shillings on mangoes, but I don't know if I'm making a profit." |
|
|
| **Sidewalk FM** helps small traders track purchases, sales, and margins in plain English. |
| It's for the person who runs a shop on the street β not the accountant. |
|
|
| --- |
|
|
| ## π§ Models Used |
|
|
| | Role | Model | Size | Provider | Badge Eligible | |
| |------|-------|------|----------|----------------| |
| | **Extraction** | `nvidia/nemotron-mini-4b-instruct` | 4B | NVIDIA NIM | β
Tiny Titan | |
| | **Advisory** | `nvidia/nemotron-mini-4b-instruct` | 4B | **Modal vLLM (T4)** β deterministic fallback | β
Tiny Titan + Modal | |
| | **Voice β Kiswahili** | [`Joshua-Abok/finetuning-wav2vec-large-swahili-asr-model_v12`](https://huggingface.co/Joshua-Abok/finetuning-wav2vec-large-swahili-asr-model_v12) | ~1B (our **fine-tune**, WER 14.36%) | HF Inference | β
Tiny Titan + **Well-Tuned** | |
| | **Voice β English / code-switch** | `openai/whisper-large-v3` | β | HF Inference | multilingual fallback | |
|
|
| Every model β€4B β **Tiny Titan**. We **fine-tuned and published** the Kiswahili ASR model β |
| **Well-Tuned**. Advisory served on **Modal** β **Modal** prize. NVIDIA Nemotron throughout β |
| **NVIDIA** prize. |
|
|
| ## π Why this wins for a real trader (Backyard AI) |
| Mama Aisha can't type fast and isn't an accountant β but she speaks. Sidewalk FM is **voice-first |
| and bilingual (English + Kiswahili)**, using a Swahili model **we fine-tuned ourselves** so it |
| actually understands a Nairobi market trader, not generic English. The ledger and profit math are |
| **deterministic Python** (never the LLM), so the numbers are always right and the demo never breaks. |
|
|
| --- |
|
|
| ## π§© Features |
|
|
| - **Natural Language Input:** "bought 50 mangoes at 200 shillings each" |
| - **Bilingual Voice Input:** Click the mic π€ and speak in **English or Kiswahili** β Swahili uses our **fine-tuned** wav2vec2 model, English/code-switch uses Whisper, gated so it never breaks |
| - **Structured Ledger:** Transactions parsed and stored with full metadata |
| - **Deterministic Math:** Revenue, costs, profit calculated with pure Python β never the LLM |
| - **AI Advisory:** Get actionable advice on inventory and pricing via NVIDIA NIM or Modal vLLM |
| - **Custom HTML Ledger UI:** Styled tables with color-coded margins (Off Brand badge) |
| - **Structured Agent Traces:** Every extraction, validation, and advisory step is logged for audit π‘ |
| - **Voice-to-Ledger:** Full text flow β log a sale β see margin β get advice β all in one demo |
|
|
| --- |
|
|
| ## π¦ Deployment |
|
|
| ### HF Space (Gradio) |
|
|
| The Gradio app (`app.py`) uses NVIDIA NIM for extraction and advisory. |
|
|
| ```bash |
| pip install -r requirements.txt |
| python app.py |
| ``` |
|
|
| ### Deploy to HF Spaces |
|
|
| 1. Push to a repo (this one) |
| 2. Create Space with `gradio` runtime |
| 3. Add API keys to Secrets: `NVIDIA_NIM_API_KEY` |
|
|
| --- |
|
|
| ## π₯ Modal vLLM (Optional β On-Prem Advisory) |
|
|
| For a hosted advisory model on Modal GPU, use the Modal deployment: |
|
|
| ```bash |
| modal deploy modal_serve_qwen3b.py |
| ``` |
|
|
| ### Hard Deployment Constraints |
|
|
| 1. **GPU: L4** β Nemotron 4B with comfortable VRAM headroom |
| 2. **Only 1 GPU** β no multi-GPU setups |
| 3. **min_containers=1** β endpoint stays warm, never scales to 0 |
| |
| ### API Endpoints |
| |
| - `GET /health` β Model health check |
| - `GET /v1/models` β Available models |
| - `POST /v1/chat/completions` β OpenAI-compatible chat completions |
| |
| --- |
| |
| ## π Architecture |
| |
| ``` |
| User Input (natural language) |
| β |
| βΌ |
| ββββββββββββββββββββ |
| β Deterministic β β Regex/rules: fast, reliable, no hallucination |
| β Extraction β β "bought 50 mangoes at 200 shillings" |
| ββββββββββ¬ββββββββββ |
| β |
| [regex failed?] |
| β |
| βΌ |
| ββββββββββββββββββββ |
| β NIM Fallback β β nemotron-mini-4b-instruct for messy input |
| ββββββββββ¬ββββββββββ |
| β |
| βΌ |
| ββββββββββββββββββββ |
| β Validation β β Hard rules: qty > 0, action in {buy,sell,return} |
| β & Ledger β β Pure Python struct, deterministic |
| ββββββββββ¬ββββββββββ |
| β |
| βΌ |
| ββββββββββββββββββββ |
| β Deterministic β β calculate_margins() β never the LLM |
| β Math Engine β β revenue, costs, profit, margin% |
| ββββββββββ¬ββββββββββ |
| β |
| ββββββ΄βββββ |
| β β |
| βΌ βΌ |
| ββββββββ ββββββββββββ |
| β Rule β β Modal β |
| β Basedβ β vLLM β |
| βAdviceβ β Advisory β |
| ββββββββ ββββββββββββ |
| ``` |
| |
| --- |
| |
| ## π― Badges Targeted |
| |
| | Badge | Status | |
| |-------|--------| |
| | **Backyard AI** | β
Track real-world problems (street traders) | |
| | **Tiny Titan** | β
FULL β all models β€4B (nemotron-mini-4b-instruct) | |
| | **Best Agent** | β
Multi-step tool use (parse β validate β ledger β analyze β advise) | |
| | **Off Brand** | β
Custom ledger UI (not a chatbot) | |
| | **Best Demo** | β
Story + video + social post | |
| | **Well-Tuned** | β
Our **fine-tuned & published** Kiswahili wav2vec2 model (WER 14.36%) | |
| | **NVIDIA Sponsor** | β
Full NVIDIA stack (Nemotron Mini 4B on NIM + Modal) | |
| | **Modal β Best Use** | β
Advisory served on Modal (vLLM) at runtime | |
|
|
| --- |
|
|
| ## π‘ Structured Agent Traces |
|
|
| Every action in the pipeline is logged with structured traces: |
|
|
| | Step | Fields | |
| |------|--------| |
| | extraction | method (regex/llm), success, fields | |
| | validation | success, error | |
| | advisory | method (rule/nim/modal), success, error | |
|
|
| This provides full auditability β judges can trace exactly how every answer was reached. |
|
|
| --- |
|
|
| ## links |
| https://www.linkedin.com/posts/joshuaabok_buildsmallhackathon-buildsmall-huggingface-share-7472437382152179712-Q3jX/?utm_source=share&utm_medium=member_desktop&rcm=ACoAAF92zkABF9X9x72P-GywndHGRVJCSFAjFL8 |
|
|
|
|
| https://youtu.be/uzu377Yq_EM |
| |
| ## π License |
| |
| MIT |
| |