DEV Community

Shivam Kumar Jha
Shivam Kumar Jha

Posted on

FreelanceFlow AI: Turn Messy Client Briefs into Proposals with a Local LLM

Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle Submission ๐Ÿ’ธ

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

What I Built

FreelanceFlow AI turns a messy client brief into a structured, editable project proposal, and it runs entirely on your own machine.

Every freelancer knows this unpaid part of the job: a client sends a rambling email ("we need a simple websiteโ€ฆ maybe show our Instagram?โ€ฆ budget around $2k"), and before any paid work starts you have to work out the real requirements, split them into deliverables and milestones, spot what's missing, and write a professional proposal. For people doing this as a side hustle, that's an evening gone for every quote.

FreelanceFlow AI does it in three steps:

  1. Extract: paste the brief, and a local open-weight model pulls out the project title, summary, requirements, deliverables, milestones, deadline, budget, assumptions, and questions you should ask the client.
  2. Review: every field can be edited. You fix what the model got wrong before anything is written.
  3. Draft: add your name, your rate, and a tone, and get a Markdown proposal you can edit, copy, or download.

One rule is fixed: the AI never invents your price. If you don't enter a rate, the proposal says [Your rate].

Who would pay for it? Freelance developers, designers, and small agencies who send several proposals a week and don't want to paste confidential client details into a cloud chatbot. Faster quoting means more bids and less unpaid admin.

Code

GitHub logo jhashivam0022 / freelanceflow-ai

An open-source AI assistant that turns freelance client briefs into structured project proposals using open-weight language models.

freelanceflow-ai

An open-source AI assistant that turns freelance client briefs into structured project proposals using open-weight language models.




How I Built It

  • Model runtime: Ollama for local inference. Any Ollama chat model works through one environment variable (OLLAMA_MODEL).
  • Models: developed and tested with Google's open-weight Gemma (gemma:2b), with Qwen 2.5 7B recommended for better extraction.
  • Backend: Python + FastAPI. The key design decision was splitting the work into two model calls:
    1. Structured extraction. I pass a Pydantic model's JSON schema straight to Ollama's format parameter (structured outputs), so even a 2B model has to return valid, typed JSON. The backend validates it again with Pydantic and returns a clean error if the model goes off the rails.
    2. Proposal drafting. A second call writes the proposal using the human-reviewed scope as the source of truth, not the raw brief.
  • Frontend: React + Vite. A three-step flow with an editable scope view in the middle.
  • Tests: pytest with a fake LLM, so the API logic is tested without a GPU.

What I learned: small local models are good at reading a brief but still miss details. In testing, gemma:2b skipped a budget and deadline that were clearly in the brief and added a milestone nobody asked for. Instead of hiding that, I made human review a required step. The AI does the boring 80%, and the freelancer checks the 20% that matters.

Why Does Open Innovation Matter?

Client briefs are confidential: budgets, unreleased products, internal plans. Many freelancers are under NDA and shouldn't paste that into a third-party AI service.

Open-weight models change that:

  • The brief never leaves your laptop. Browser โ†’ local FastAPI โ†’ local Ollama. No third-party API in the loop.
  • Zero cost per proposal. A side-hustle tool shouldn't charge you every time you bid on a job.
  • No lock-in. Switching from Gemma to Qwen to Llama is one config change, so the tool improves as open models improve.
  • Runs on what you have. A 2B model works on a normal laptop, and a bigger GPU gets you a bigger model.

A closed API would have made the core promise ("your client's data stays with you") impossible.

Prize Categories

  • Best Use of Gemma: FreelanceFlow AI was developed and tested with Google's Gemma (gemma:2b) via Ollama for both structured requirement extraction and proposal drafting.

Built with help from an AI coding assistant.

Top comments (0)