DEV Community

Cover image for Quote Forge
Shikhar Ahirwar
Shikhar Ahirwar

Posted on

Quote Forge

Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle Submission 💸

QuoteForge Local

A private, local-first AI proposal and quote builder for freelancers.

QuoteForge Local helps freelancers turn a client project brief into a professional proposal draft while keeping the client's information and AI processing on their own machine.

Describe the project, enter your hourly rate, estimated hours, and additional expenses. QuoteForge then calculates the project estimate using ordinary application code and uses the open-weight Llama 3.2 model through Ollama to draft the proposal.

Built for the Hacktoberfest Open-Source AI Challenge — Week 2: Side Hustle.

✨ What It Does

QuoteForge Local combines deterministic pricing with local AI assistance:

  • 📝 AI Proposal Drafting — Generate a proposal from a project brief.
  • 💰 Deterministic Quote Calculation — Calculates:

Hourly Rate × Estimated Hours + Additional Expenses

  • 🔒 Local-First AI — The project brief is processed through a local Ollama service instead of a hosted AI API.
  • 🤖 Open-Weight AI — Uses Llama 3.2 through Ollama.
  • 🚫 No API Keys Required — No OpenAI, Anthropic, or other hosted AI account is required.
  • 📋 Copy-Ready Output — Review and copy the generated proposal directly from the browser.
  • 🧠 Controlled AI Scope — The model is instructed not to invent credentials, deliverables, deadlines, guarantees, or other unsupported claims.
  • 💾 No Database — Generated content stays in the browser until the user chooses to copy it.
  • 📊 No Analytics — No tracking or third-party analytics are included.
  • 📤 No Automatic Sending — QuoteForge does not send proposals directly to clients.

🔐 Why Local-First?

Client briefs can contain sensitive business information.

Instead of sending that information to a third-party AI API, QuoteForge keeps the AI workflow local:

Browser → Local Python API → Local Ollama → Llama 3.2

The application is designed so that the project brief is sent only to the locally running Ollama service.

The first Docker Compose startup requires internet access to download the Docker runtime components and the selected Ollama model. After the model has been downloaded, the model is reused from the local Docker volume.

🧮 AI Does Not Control the Price

One important design decision is separating language generation from financial calculation.

The AI is responsible for wording the proposal.

The application code is responsible for calculating the quote.

For example:

₹1,000/hour × 20 hours + ₹2,000 expenses = ₹22,000

The model cannot modify this arithmetic because the calculation happens independently in ordinary application code.

This makes the system more predictable and prevents an AI-generated response from accidentally changing the quoted amount.

🤖 Responsible AI Design

QuoteForge deliberately gives the language model a narrow responsibility.

The model generates proposal wording, but it does not:

  • Decide whether a project is profitable
  • Determine the freelancer's pricing
  • Create binding contract terms
  • Invent previous client experience
  • Invent qualifications or credentials
  • Promise unsupported results
  • Automatically send proposals to clients

Missing information should be identified for the freelancer to confirm rather than being fabricated.

AI-generated content should still be reviewed by the freelancer before being shared with a client.

🛠️ Tech Stack

  • Python 3.12 — Standard library
  • HTML / CSS / JavaScript — Frontend
  • Ollama — Local AI runtime
  • Llama 3.2 — Open-weight language model
  • Docker Compose — Local deployment
  • MIT License

The Python backend intentionally uses the standard library, including modules such as:

  • http.server
  • urllib

This keeps the project lightweight and reduces unnecessary dependencies.

🚀 Run Locally

Requirements

You need:

  • Docker Desktop
  • Docker Compose
  • Sufficient disk space for the Ollama image and model

Start QuoteForge

docker compose up --build
Enter fullscreen mode Exit fullscreen mode

The first startup downloads the required Ollama model.

Once the services are ready, open:

http://127.0.0.1:8000
Enter fullscreen mode Exit fullscreen mode

Stop the application with:

Ctrl+C
Enter fullscreen mode Exit fullscreen mode

Later launches can reuse the locally stored model through the Docker volume.

⚙️ Changing the AI Model

The default setup uses:

llama3.2
Enter fullscreen mode Exit fullscreen mode

The OLLAMA_MODEL configuration can be changed to another model available through Ollama, provided the machine has enough resources to run it.

🏗️ Architecture

                ┌──────────────────┐
                │     Browser      │
                │  HTML/CSS/JS     │
                └────────┬─────────┘
                         │
                         ▼
                ┌──────────────────┐
                │   Python API     │
                │  Local Adapter   │
                └───────┬──────────┘
                        │
              ┌─────────┴─────────┐
              │                   │
              ▼                   ▼
      ┌──────────────┐    ┌──────────────┐
      │ Quote Logic  │    │   Ollama     │
      │ Rate × Hours │    │  Llama 3.2   │
      │ + Expenses   │    │ Local Model  │
      └──────────────┘    └──────────────┘
Enter fullscreen mode Exit fullscreen mode

The quote calculation and AI generation remain separate by design.

🎯 The Problem

Freelancers often need to create proposals quickly after receiving a client inquiry.

That process can involve:

  1. Understanding the client's brief
  2. Structuring the proposed work
  3. Writing professional proposal language
  4. Calculating the estimated price
  5. Reviewing the proposal for unsupported claims
  6. Sending it to the client

Many AI proposal tools require sending client information to a hosted AI service.

QuoteForge explores a different approach:

Can AI help freelancers write proposals without requiring their client data to leave their machine?

💡 The Solution

QuoteForge Local combines a simple deterministic quote calculator with a locally running open-weight language model.

The result is a small, transparent workflow:

Client Brief → Local AI Draft → Deterministic Quote → Human Review → Copy

The freelancer remains in control of the final proposal.

🌱 Why This Fits "Side Hustle"

QuoteForge is designed around a practical freelancer workflow rather than AI for AI's sake.

A freelancer can use it to quickly turn an initial project description into a structured proposal while maintaining control over:

  • Pricing
  • Scope
  • Client information
  • Final wording
  • When and where the proposal is sent

The goal is not to replace the freelancer.

The goal is to remove repetitive proposal-writing work while keeping important decisions under human control.

⚠️ Limitations

QuoteForge is intentionally small and focused.

It currently does not:

  • Store client accounts
  • Provide a CRM
  • Send emails
  • Sign contracts
  • Process payments
  • Determine whether a project is financially profitable
  • Guarantee the accuracy of AI-generated text
  • Provide legal or financial advice

The generated proposal should always be reviewed before being shared with a client.

🔮 Future Ideas

Possible future improvements include:

  • Multiple proposal templates
  • Export to PDF
  • Proposal version history stored locally
  • More detailed project breakdowns
  • Local proposal history
  • Additional Ollama model presets
  • Custom freelancer profiles stored locally
  • Optional local document import
  • Improved accessibility
  • Automated proposal quality checks

These features would be considered carefully to preserve the project's local-first philosophy.

🌍 Privacy Philosophy

QuoteForge follows a simple principle:

Your client data should not need to become someone else's AI training input just to help you write a proposal.

There are no third-party fonts, analytics services, hosted AI APIs, or accounts required by the application itself.

The initial Docker setup does require network access to obtain the container image and Ollama model. Once running locally, proposal generation uses the local Ollama service.

📜 License

QuoteForge Local is released under the MIT License.

See LICENSE for details.

🏆 Hacktoberfest

Built as a submission for:

Hacktoberfest Open-Source AI Challenge — Week 2: Side Hustle

QuoteForge demonstrates how open-weight AI can be integrated into a realistic freelance workflow while keeping pricing deterministic and AI processing local.


Repository: shikharahirwar489-ui/quoteforge-local

Project: QuoteForge Local

Focus: Local AI • Freelancing • Privacy • Open-Weight Models • Responsible AI

Top comments (0)