| --- |
| title: Order Triage |
| emoji: π |
| colorFrom: green |
| colorTo: blue |
| sdk: gradio |
| sdk_version: 6.18.0 |
| python_version: '3.13' |
| app_file: app.py |
| pinned: false |
| license: mit |
| tags: |
| - backyard-ai |
| - track:backyard |
| --- |
| |
| Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference |
|
|
|
|
| # π¦ Order Triage Assistant |
|
|
| **Backyard AI track β Build Small Hackathon** |
|
|
| ## The problem |
|
|
| At Zipline's KD-1 distribution centre (Kaduna, Nigeria),many drone delivery orders for medical supplies |
| and vaccines arrive as informal, abbreviation-heavy text messages via Telegram/social |
| channels β e.g.: |
|
|
| ``` |
| Pcm syrp 4 |
| Pcm drop 3 |
| Pcm tabs 1 pkt |
| Given set 1 |
| Scalvein 10 mixed 23g and 21g |
| ``` |
|
|
| ``` |
| Marmara Hc |
| Vaccines requesiton tomorrow 11/06/2026 Thursday please |
| BCG 20 doses |
| Opv40 |
| Penta 30 |
| ... |
| ``` |
|
|
| Fulfillment staff then manually re-type each line into the inventory/order |
| fulfillment system β slow, error-prone, and easy to misread abbreviations |
| (is "Scalvein 10 mixed 23g and 21g" two items or one?). |
|
|
| ## What this app does |
|
|
| 1. **Paste the raw order text** as received. |
| 2. A small LLM (Cohere Command, β€32B class) extracts structured data: |
| sender, facility, requested date, urgency, and a list of line items |
| (item name, quantity, unit), expanding common abbreviations. |
| 3. Each item is **fuzzy-matched against your product catalogue** (with SKU codes), |
| so "PCM syrp" β "Paracetamol Syrup 120mg/5ml" with its real SKU. |
| 4. Low-confidence matches are **flagged for human review** rather than guessed silently. |
| 5. Output is shown as an **editable table** and exported as **JSON** (ready to feed |
| to an inventory API) and **CSV**. |
|
|
| ## Catalogue |
|
|
| This Space ships with a small **sample catalogue** (`sample_catalogue.csv`) covering |
| the product categories seen in real KD-1 orders (analgesics, vaccines, syringes, |
| cannulas, diluents, etc.) β built for demo purposes without exposing any internal |
| Zipline data. |
|
|
| To use with a real catalogue, upload your own CSV with columns: |
| `sku_code, product_name, category, unit` |
|
|
| ## Setup |
|
|
| 1. Get a [Cohere API key](https://dashboard.cohere.com/api-keys) (free tier credits work fine). |
| 2. Set it as an environment variable `COHERE_API_KEY`, or paste it into the |
| "Settings" panel in the app (not stored). |
| 3. `pip install -r requirements.txt` |
| 4. `python app/app.py` |
|
|
| ## Demo |
| [Here](https://youtu.be/PP_JcqlZEmg) is the link to the demo |
|
|
| ## Social Media Post |
| [Here](https://x.com/LukmanAJJK/status/2066260421611315625?s=20) is the X post on my submission |
|
|
| ## Roadmap / next stretch |
|
|
| - Voice input for low-literacy users. |
| - Direct push to inventory system API (instead of JSON export). |
|
|