{"slug": "voice-order-taker", "title": "Voice Order Taker", "summary": "A developer built Voice Order Taker, a local Streamlit app that transcribes WhatsApp voice notes in Urdu, Roman Urdu, Pashto and English and extracts them into a structured order sheet using Whisper and Gemma running locally through Ollama. The app constrains the model's output to a fixed JSON schema with a worked example and temperature 0, and converts relative date words like \"kal\" into real dates, keeping customer addresses on the user's own machine with no cloud or API costs. The developer notes that a small local model is less accurate than a large cloud model on messy mixed-language speech, so the app always presents an editable table for the seller to confirm.", "body_md": "*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle](https://dev.to/challenges/hacktoberfest-week2-2026-10-12)*\n\n[https://voice-order-taker-jvh7zuvem9z6qbfuqfcvpm.streamlit.app/](https://voice-order-taker-jvh7zuvem9z6qbfuqfcvpm.streamlit.app/) \n\nVoice Order Taker is a local app that turns WhatsApp voice notes into a clean order sheet.\n\nIn Pakistan, a lot of home businesses run on voice notes. A baker, a tiffin cook or a small clothing seller gets messages like \"do kilo chocolate cake aur teen dozen samosay kal shaam tak, house 12 Jinnah Road\", in Urdu, Roman Urdu, Pashto or a mix with English. The seller replays each note, then writes the order down by hand. With 20 or more orders a week, that is hours of work, and one misheard quantity means a wrong delivery.\n\nWith my app, the seller uploads the voice notes and the app:\n\nThe person who would pay for this is a home seller handling a steady stream of orders. They don't need a big business tool. They need something that saves an hour a day and doesn't send their customers' addresses to a stranger's server.\n\nTurn WhatsApp voice notes in Urdu, Roman Urdu, Pashto or English into a clean order sheet and a daily prep list. Everything runs on your own computer. No cloud, no API key, no per-order cost.\n\nBuilt for the Hacktoberfest Open-Source AI Challenge (Week 2: Side Hustle).\n\nHome bakers, tiffin services and small clothing sellers take most of their orders as WhatsApp voice notes. Someone says \"do kilo chocolate cake aur teen dozen samosay kal shaam tak, house 12 Jinnah Road\", and the seller has to replay it and write it down by hand. With 20 or more orders a week, this takes hours and mistakes happen.\n\n`.ogg`, `.opus`, `.m4a`, `.mp3`, `.wav`).\nEverything runs on a normal laptop with no cloud service.\n\nThe most important part was making a small model reliable. A free-form prompt gave me bad results, so I forced the output into a fixed JSON schema and added a worked example inside the prompt:\n\n```\nclass OrderLine(BaseModel):\n    customer: str = \"\"\n    item: str = \"\"\n    quantity: float = 1\n    unit: str = \"\"\n    delivery_date: str = \"\"\n    address: str = \"\"\n    notes: str = \"\"\n\nclass OrderList(BaseModel):\n    orders: list[OrderLine]\n\nr = ollama.chat(\n    model=model,\n    format=OrderList.model_json_schema(),\n    options={\"temperature\": 0, \"num_ctx\": 2048},\n    messages=[{\"role\": \"system\", \"content\": system},\n              {\"role\": \"user\", \"content\": transcript}],\n)\n```\n\nThe prompt also converts words like \"kal\" (tomorrow) and \"parson\" (day after tomorrow) into real dates, and I give Whisper a short list of dish names as an `initial_prompt` so it recognises local food words.\n\n**What went wrong along the way.** I built this on a laptop with a nearly full C: drive and limited RAM, which turned out to be good testing for a \"runs on cheap hardware\" project:\n\n`av<17`.\n[Add your real numbers here, for example: \"I tested X voice notes. N came out fully correct, M needed one edit, and K failed. Average time per note was about Y seconds on CPU.\"]\n\nFor this kind of customer, open models are not a nice extra. They are what makes the product possible.\n\nThe trade-off is honest too: a small local model is less accurate than a large cloud model on messy mixed-language speech, so the app always shows an editable table and the seller confirms the result before acting on it.\n\n[Add your DevRelay or Entire session link here, or delete this section.]\n\n[Who they were (for example, a home baker, a relative who runs a food business), what voice notes they tried, what they said, and whether they would pay. Even one real quote helps. If you did not get a user, delete this section.]\n\n**Best Use of Gemma:** the extraction step runs on Gemma locally through Ollama, so all order data stays on the user's machine.", "url": "https://wpnews.pro/news/voice-order-taker", "canonical_source": "https://dev.to/laiba_ashfaq_4b3f4b363ad4/voice-order-taker-3j47", "published_at": "2026-10-19 06:12:04+00:00", "updated_at": "2026-10-19 06:18:16.739204+00:00", "lang": "en", "topics": ["artificial-intelligence", "large-language-models", "ai-tools", "natural-language-processing", "ai-products"], "entities": ["Ollama", "Gemma", "Whisper", "Streamlit", "WhatsApp", "Hacktoberfest"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/voice-order-taker", "markdown": "https://wpnews.pro/news/voice-order-taker.md", "text": "https://wpnews.pro/news/voice-order-taker.txt", "jsonld": "https://wpnews.pro/news/voice-order-taker.jsonld"}}