What I Built
SubScribe Field OS is a local-first, voice-driven operating system for construction field documentation. It turns a spoken sentence on a noisy job site into a signed, printable change order, daily log, or delay notice—entirely offline.
Small subcontractors (electrical, plumbing, HVAC) lose thousands of dollars every year because out-of-scope work never gets documented in time. They are not at a desk—they are on a ladder. SubScribe lets them speak a change order in plain language ("We moved four electrical boxes eight feet because of a duct obstruction") and get back a structured, contract-aware, PDF-ready document in seconds. No internet, no cloud, no training required.
Who would pay for it: small trade contractors who need to protect their margins and get paid faster for work outside the original scope. A tool that recovers even one unbilled change order per month pays for itself many times over.
The repository contains the full local stack: audio transcription, schema enforcement, contract RAG, SQLite audit trail, and the printable PDF engine.
How I Built It
The entire pipeline runs on a laptop. No API keys. No per-document fees.
Local audio transcription (faster-whisper). faster-whisper runs quantized (int8) on the local CPU. The key detail is an initial trade prompt injected into the model, loaded with construction terminology (conduit, junction box, drywall, HVAC, rough-in, EMT). Without it, noisy field audio is mistranscribed into nonsense; with it, trade language parses correctly.
Schema-enforced routing (Gemma 2B + Ollama + Pydantic). Raw transcripts go to Gemma 2B via Ollama with temperature=0.0 and format="json". Strict Pydantic schemas (ChangeOrderOutput, DailyLogOutput, DelayNoticeOutput, plus an IntentClassification router) validate every response. If the model hallucinates a broken format, Pydantic rejects it and the orchestrator retries. This is the difference between a demo and a tool someone trusts with money.
Offline contract RAG (ChromaDB). Before generating a change order, the system queries a local ChromaDB store built from the subcontractor's original scope agreement PDF. Only the most relevant clauses are passed to Gemma as context, so the output can cite the exact contract section justifying the claim—without a contract ever leaving the device.
Local audit trail (SQLite). Every processed item is serialized via Pydantic and inserted into local SQLite with a timestamp across three tables: daily_logs, change_orders, delay_notices. No external database, no sync conflicts.
Printable PDF engine (Jinja2 + WeasyPrint). A Jinja2 HTML template renders an official invoice: company header, out-of-scope description, clause reference, labor-hours Ă— rate table, material costs, total due, and a physical signature block for the GC's site supervisor. WeasyPrint compiles it to a local PDF in under two seconds.
Field UI (Streamlit/Gradio). A one-page interface to tap "Record Audio" or drop a .wav, inspect the extracted JSON, and click "Export Signed PDF." The FastAPI review dashboard wraps the SQLite queries for home-office project managers and is deployed to Render's free tier.
Why Does Open Innovation Matter?
Open innovation is not a preference here—it is a hard requirement for the business model to work.
Privacy is the product. Change orders contain labor rates, material costs, and contract terms. Uploading that to a closed cloud API creates liability no small contractor should accept. Running Gemma locally via Ollama means client data never leaves the device: the contract PDF, the audio, the financials—all stay on hardware the contractor controls.
Zero marginal cost makes the side hustle viable. A closed API charges per token. A contractor processing 20 documents a day would watch those fees eat their margin. Local inference with Gemma has zero cost per document, which is what makes this affordable for a small trade contractor.
Offline is non-negotiable. Job sites have unreliable internet; basements have no signal. A cloud-dependent tool fails exactly when the contractor needs it—standing in a mechanical room trying to document a delay before the crew moves on.
Model flexibility protects the user. If a better open model drops next month, or an older laptop needs a smaller one, the stack lets you swap models without rewriting the application. No lock-in to a single vendor's pricing or roadmap.
I tested the same pipeline with a hosted, closed model. Extraction quality was comparable—but the closed model required uploading contract PDFs to a third party and introduced a per-document cost. The open, local approach won on trust, cost, and reliability: the three things that actually matter to a contractor in the field.
My First User
My friend tried SubScribe on his own laptop. He recorded change order/daily log out loud and exported the PDF.
Would he pay? Yes. He said he'd pay $5–10/month for it, which is the number that matters to me: it's small enough for a solo contractor to say yes without thinking, and it confirms the local-first, zero-marginal-cost design actually makes the pricing work.
Prize Categories
Best Use of Gemma — Gemma 2B via Ollama is the core intelligence layer for routing and extraction.
Best Use of Render — the FastAPI review dashboard is deployed to Render's free tier so project managers can view field entries once the device reconnects to Wi-Fi.
I and my friend Nithin Selvan TS made this.
Top comments (0)