I Built an Offline “Sales Analyst” for Small Shops with Ollama and DuckDB A developer built AskMyShop, an offline natural-language sales analyst for small shops that runs Qwen2.5 7B locally through Ollama and queries uploaded CSV or Excel files directly with DuckDB. The Streamlit and Plotly app returns a chart, a one-line plain-language insight, and the generated SQL, with a read-only SELECT safety layer and a single retry that feeds SQL errors back to the model. The developer says keeping data on the owner's laptop avoids per-question API fees and works without reliable internet. This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle What I Built AskMyShop is a local app that lets a small shop or restaurant owner ask questions about their sales in plain language and get a chart plus a one-line answer. Many small businesses keep sales in Excel or CSV exports from a billing app, but can’t afford an analyst. They’re left asking questions like “which dish is not selling?” or “which day is my busiest?” and guessing the answers. With AskMyShop, the owner uploads their sheet, types a question e.g. “Which items sold least last month?” , and gets: a chart a one-line insight in simple words the SQL used, so they can see how the answer was found Who would pay: small restaurants, tiffin shops and grocery stores. Pricing idea: ₹499 one-time setup, or ₹199/month for monthly report templates . Demo Tip: Show the Wi-Fi turned off in the video. It proves the “private and offline” claim in two seconds. Code An asynchronous, GPU-accelerated Telegram Bot engineered using Pyrogram and faster-whisper distil-large-v3 . Automatically extracts English audio streams, transcribes multi-channel media, and generates mobile-optimized, styled Advanced SubStation Alpha .ass English subtitles. distil-large-v3 running on CUDA float16 hardware acceleration, achieving round ‑based to eliminate IEEE 754 drift on long files. .mkv , .mp4 , .avi , prefers explicit English streams, and converts raw Audio to 16kHz mono PCM WAV with a .ass files with a How I Built It Model: Qwen2.5 7B / Qwen2.5-Coder running locally through Ollama Query engine: DuckDB, which queries the uploaded CSV/Excel directly with no database setup Structured output: Instructor with a schema, so the model returns the SQL and the chart type in a predictable format UI and charts: Streamlit with Plotly Safety layer: only read-only SELECT queries are allowed, and if the SQL fails, the error is sent back to the model for one retry Prompt design: the prompt includes the table schema, sample rows, and a few example questions with correct SQL, tuned to the shop’s own column names Optional faster-whisper for asking questions by voice What I learned: e.g. small models sometimes write wrong SQL, so showing the query under every answer built trust, and schema plus examples in the prompt improved accuracy. Why Does Open Innovation Matter? Privacy: sales and customer data never leave the owner’s laptop. For a small shop, that data is the business. Cost: there’s no per-question API fee, so a low flat price still leaves a margin. With a paid API, every question the owner asks would eat into a ₹199/month plan. Works offline: many small shops have unreliable internet, and this works without it. Customization: I could tune the prompt with the shop’s own column names and item names including Tamil names , which a generic tool handles poorly. No lock-in: if a better open model comes out, or the shop has an older laptop, I can swap the model without rewriting the app. Add one honest comparison here, e.g. “I tried the same questions on a hosted model: accuracy was X , but it required uploading the data and costs Y per query.” My First User Who they are: a shop owner, a relative who runs a business, a tea stall, a hotel. What they asked first: What worked / what confused them: Would they pay, and how much: What they asked for next: If you haven’t shown it to anyone by the deadline, delete this section.