cd /news/ai-tools/i-built-an-offline-sales-analyst-for… · home › topics › ai-tools › article
[ARTICLE · art-151922] src=dev.to ↗ pub= topic=ai-tools verified=true sentiment=↑ positive

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.

by read3 min views2 publishedOct 17, 2026

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 up 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.

── more in #ai-tools 4 stories · sorted by recency
── more on @ollama 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-built-an-offline-s…] indexed:0 read:3min 2026-10-17 · —