{"slug": "scopekit-turn-a-messy-client-brief-into-a-quote-with-local-gemma", "title": "ScopeKit: Turn a Messy Client Brief into a Quote with Local Gemma", "summary": "A developer built ScopeKit, an MIT-licensed local AI workbench that uses Gemma 3 1B via Ollama to turn informal client briefs into reviewable scope suggestions, deliverables, hours, and Markdown proposals for freelancers. The tool attaches exact source passages to proposed tasks using code-based word-overlap matching after an early approach that let the model generate supporting quotes produced fabricated or unrelated citations. In a demo with a fictional florist brief, the model suggested only two hours of work, which the developer manually revised to 5, 3, and 3 hours, yielding an illustrative $632.50 estimate at $50/hour with 15% contingency.", "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“Just a simple website” can hide a surprisingly long conversation: Which pages? Who supplies the photos? Does “contact form” include email delivery? Are payments part of this phase?\n\nI built **ScopeKit**, a small local AI workbench for freelancers who need to turn those informal messages into something they can review and quote.\n\nPaste the client's brief, let Gemma suggest a scope, review the deliverables and hours, set your rate, and export a Markdown proposal with a client reply. Source passages sit beside the suggested tasks so you can trace them back to the request.\n\nThe intended customer is an independent web designer or small freelance studio. A possible paid offering is installation and customization of a branded proposal workflow. **That business idea is still a hypothesis: I have not tested willingness to pay or claimed customers or revenue.**\n\nThe project is deliberately small. There is no account system or client database. Working content stays in memory; only the appearance preference is saved in the browser.\n\n[Watch the 28-second ScopeKit walkthrough (MP4)](https://raw.githubusercontent.com/Kushaal-k/ScopeKit/main/evidence/scopekit-demo.mp4)\n\nThe video is an edited sequence of actual UI steps using a fictional florist brief and real local Gemma inference. Its pauses do not represent inference timings.\n\nThe test brief asks for a one-page florist website, wedding bouquet gallery, contact form, and phone compatibility. Gemma identifies the website, gallery, and contact form, then proposes questions, assumptions, and exclusions.\n\nIt also suggests only **two hours of work in total**. That is why review is part of the workflow. In the demonstration, the hours are manually changed to 5, 3, and 3. At $50/hour with a 15% contingency, the example estimate becomes **$632.50**, with a **$316.25** deposit. These are illustrative planning numbers, not validated effort predictions.\n\nThe model also puts “Mobile Responsiveness beyond basic phone compatibility” in its suggested exclusions. The client explicitly requested phone support, so that wording needs clarification before sharing. The tool does not establish that a scope is complete or that its proposed terms are appropriate.\n\n**Try it locally:**\n\n```\ngit clone https://github.com/Kushaal-k/ScopeKit.git\ncd ScopeKit\nollama pull gemma3:1b\npython app.py\n```\n\nInstall [Ollama](https://ollama.com/download) and Python 3.10+ first. Keep Ollama running, then open `http://127.0.0.1:8765`. Windows users can use `start.cmd`. The hand-written **Try an example** option lets you explore editing and exporting without a model; it is clearly labeled as a sample.\n\nThe MIT-licensed repository includes setup instructions, 19 automated tests, a cross-platform CI workflow, the demo video, a real model response, and a reviewed proposal export.\n\nThe frontend is plain HTML, CSS, and JavaScript. A Python standard-library server handles validation, quoting, and the local Ollama connection. There are no Python application dependencies or frontend build tools.\n\n**Gemma 3 1B** performs the core extraction through Ollama's schema-constrained chat API. Instructions and the brief use a user turn, consistent with [Gemma's prompt structure](https://ai.google.dev/gemma/docs/core/prompt-structure).\n\nThe most useful lesson came from source evidence. An early approach asked the model to produce supporting quotes. It sometimes invented them. Constraining the available quotes still allowed it to select an unrelated passage.\n\nThe final approach gives that mechanical step to code: Gemma proposes tasks, then the server attaches exact passages using task-word overlap and a few aliases, such as phones/mobile. It rejects unmatched task names and duplicate task anchors. One correction attempt is allowed before an error is surfaced.\n\nThis is a traceability heuristic. It cannot prove semantic correctness, completeness, or the absence of overlapping work.\n\nThe separation continues with money: **Python's Decimal arithmetic calculates the quote.** The model suggests hours; the user reviews them. Manually edited replies survive price changes, with a reminder to check their numbers.\n\n```\nClient brief → local Gemma → validation and source linking\n             → human review → decimal quote → Markdown proposal\n```\n\nThe interface has Light, Dark, and System themes, matching dropdowns, keyboard navigation, and responsive layouts. Briefs and proposals clear when the page reloads.\n\nAll 19 local validation and HTTP integration tests passed. The adapter tests use a mock Ollama server; separate real Gemma runs verify actual inference. [GitHub Actions also passed](https://github.com/Kushaal-k/ScopeKit/actions/runs/38799480217), running Python checks on Windows and Linux and JavaScript syntax validation.\n\nLocal open-weight inference fits the material this tool handles: client messages, project details, and draft commercial terms.\n\nOnce the model is downloaded, ScopeKit's inference workflow can work offline. It needs no hosted inference account, API key, or per-request payment. Hardware and electricity still have costs, and a small model still makes mistakes.\n\nOpen weights also let the user choose a different local model independently of the application. The model is a replaceable part of a workflow whose validation, calculations, and export format are inspectable.\n\nThe application uses the MIT license. Gemma weights have their own [Google Gemma Terms](https://ai.google.dev/gemma/terms); they are a separate download and are not bundled with the source.\n\n[AI Explore's “Structured Output Gives You Syntax. It Doesn't Give You Semantics”](https://dev.to/aiexplore369zoho/structured-output-gives-you-syntax-it-doesnt-give-you-semantics-3c13) informed the distinction between parseable output and trustworthy suggestions. ScopeKit's invented-quote failures made that distinction concrete.", "url": "https://wpnews.pro/news/scopekit-turn-a-messy-client-brief-into-a-quote-with-local-gemma", "canonical_source": "https://dev.to/kushaalk/scopekit-turn-a-messy-client-brief-into-a-quote-with-local-gemma-3fj0", "published_at": "2026-10-15 20:14:27+00:00", "updated_at": "2026-10-15 20:26:42.685494+00:00", "lang": "en", "topics": ["ai-tools", "large-language-models", "generative-ai", "ai-products"], "entities": ["ScopeKit", "Gemma 3 1B", "Ollama", "Hacktoberfest Open-Source AI Challenge", "Kushaal-k"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/scopekit-turn-a-messy-client-brief-into-a-quote-with-local-gemma", "markdown": "https://wpnews.pro/news/scopekit-turn-a-messy-client-brief-into-a-quote-with-local-gemma.md", "text": "https://wpnews.pro/news/scopekit-turn-a-messy-client-brief-into-a-quote-with-local-gemma.txt", "jsonld": "https://wpnews.pro/news/scopekit-turn-a-messy-client-brief-into-a-quote-with-local-gemma.jsonld"}}