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:
- 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.
- Review: every field can be edited. You fix what the model got wrong before anything is written.
- 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
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:
-
Structured extraction. I pass a Pydantic model's JSON schema straight to Ollama's
formatparameter (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. - Proposal drafting. A second call writes the proposal using the human-reviewed scope as the source of truth, not the raw brief.
-
Structured extraction. I pass a Pydantic model's JSON schema straight to Ollama's
- 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)