跳到正文
DEV Community· Bhumika Sudarshani·· 4 小時前AI 評分37

Van-to-Quote:將口述工作記錄轉成定價 PDF 報價單的本地應用程式

Van-to-Quote

AI 導讀

Van-to-Quote 是一款本地應用程式,可將技工口述的工作記錄轉成包含項目、數量、人工及 VAT 的 PDF 報價單。faster-whisper 負責轉錄,Qwen2.5 3B 在本地抽取資料,價格及計算則由用戶的價目表和程式碼決定,模型不會設定價格。下載模型後,整個流程可離線執行,客戶姓名、地址及價格不會離開筆記簿電腦。

正文

Bhumika Sudarshani

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle*

What I Built

Van-to-Quote is a local app that turns a tradesperson's spoken job notes into a priced PDF quote.

Plumbers, electricians and other tradespeople finish a job and then spend an evening typing up quotes. Cloud quoting apps charge a monthly fee, need a signal, and keep customer data on someone else's server. With Van-to-Quote you hold a button and say "replaced two radiators, three hours, forty meters of pipe". A draft quote appears with the right items, quantities, labour and VAT. You fix anything that looks off, then download the PDF.

Who would pay: solo tradespeople and small trade businesses who quote on site, often with poor signal. Because there is no per-quote cost, it could be sold as a one-time license or a small flat fee.

Demo

See the demo GIF and screenshots in the README: [PASTE REPO LINK]

Code

Van-to-Quote 🔧

Talk about a job, get a priced PDF quote. Runs fully offline once models are downloaded.

Setup

  1. Install Ollama (https://ollama.com), then: ollama pull qwen2.5:7b (or qwen2.5:3b for small laptops)
  2. pip install -r requirements.txt
  3. Edit prices.json with your business name, rates, VAT and price list
  4. python app.py and open http://localhost:5000

Mic access works on localhost. To use from a phone on your wifi, serve over HTTPS or use the text box.

How it works

Whisper (faster-whisper) transcribes -> a local LLM extracts items, quantities and hours as JSON -> your own price list supplies every price and all maths is plain code. The model never makes up a price. Config via env vars: LLM_MODEL, WHISPER_MODEL, OLLAMA_URL.

How I Built It

The whole pipeline runs on a laptop:

  1. faster-whisper (open-source speech recognition) transcribes the recording.
  2. Qwen2.5 3B, running locally through Ollama, extracts the customer, items, quantities and labour hours as JSON.
  3. Plain Python matches items against the tradesperson's own prices.json, calculates VAT and totals, and builds the PDF with ReportLab.
  4. A small Flask web page shows an editable draft. Items that aren't in the price list are flagged orange so a price can be set by hand.

The key design choice: the model never sets a price. It only decides what was done. The price list and ordinary code decide what it costs. A small model can mishear a number, but it can't invent a price or get the maths wrong, and every mistake is visible on the draft screen before anything is sent.

I tested the full flow end to end on my own laptop with spoken job descriptions.

Why Does Open Innovation Matter?

  • Private by design. Customer names, addresses and prices never leave the laptop. A cloud API can't offer that.
  • Works with no signal. Basements, new builds and rural jobs are exactly where tradespeople quote.
  • Costs nothing per quote. There is no API bill, so a flat price for the tool still leaves real margin however many quotes someone writes.
  • Swappable and adaptable. Changing the model is one setting, and the price list and prompt are plain files. A plumber, a painter and an electrician can each have their own setup, and nobody's pricing or terms can change under them.

來源:DEV Community · dev.to