This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
Basalt is a web app for freelancers who hate rewriting the same client paperwork.
You pick a command — Invoice, Proposal, Follow-up, or Scope — paste messy notes, and Basalt turns them into copy you can send. It feels like a command bar, not another endless chat window.
Who would pay for it? Independent freelancers and small studios. If you bill every week, saving 20–30 minutes per invoice or proposal is worth a few dollars a month. Small and specific on purpose: one job, four commands, ready-to-send text.
Links
- GitHub: https://github.com/nonsense3/Basalt.git
- Live demo: https://basalt-iomq.onrender.com
Demo
Landing
Workspace — Invoice
Workspace — Proposal
Workspace — Follow-up & Scope
Code
nonsense3
/
Basalt
Freelancer command bar powered by open-weight Gemma 4. Basalt turns messy client notes into invoices, proposals, follow-ups, and scoped briefs — in one command. Built for the
Basalt
Freelancer command bar powered by open-weight Gemma 4.
Basalt turns messy client notes into invoices, proposals, follow-ups, and scoped briefs — in one command. Built for the Hacktoberfest Open-Source AI Challenge: Week 2 — Side Hustle.
Why Basalt?
Freelancers rewrite the same invoices, proposals, and chase emails every week. Closed chatbots work until client data, cost, or lock-in gets in the way.
Basalt keeps the workflow in a focused command bar and uses Gemma 4 (Google’s open-weight model) so you can:
- Swap model size via
GEMMA_MODELwithout rewriting the product - Point the same prompts at a local Gemma later (Ollama / Edge)
- Keep pricing predictable for a tool someone would actually pay for
Screenshots
Landing
Workspace — Invoice
Workspace — Proposal
Workspace — Follow-up
Workspace — Scope
Features
| Command | What it does |
|---|---|
| Invoice | Line items, totals placeholders, payment terms from rough notes |
| Proposal | Short client proposal: approach, deliverables, |
Live
How I Built It
-
Model: Google’s open-weight Gemma 4 (
gemma-4-26b-a4b-it, with fallback togemma-4-31b-it) via Google AI Studio and@google/generative-ai. Retries on Google 500s so the workspace stays usable when the API blips. -
App: Next.js 15 + TypeScript. Interactive landing command bar →
/workspacewith live generation through/api/generate. - Design: Dark cinematic hero with a warm crimson→coral→amber aurora (CSS-only).
-
Hosting: Render Web Service via
render.yaml(Node build/start — not a static site).
Partner tech is only what the product needs: Gemma for generation, Render for hosting.
Why Does Open Innovation Matter?
A freelancer side hustle dies if inference costs spike or a closed vendor changes terms overnight.
Because Basalt runs on open-weight Gemma:
- Cost control — small open models keep a $5–10/mo product realistic.
-
No lock-in — swap
GEMMA_MODEL, or later point the same prompts at local Gemma so client notes never leave the laptop. - Niche tuning later — fine-tune on a freelancer’s past invoices without restarting on a closed API.
Closed chat is fine for demos. Open weights are what make this a business someone could actually run.
Categories
- Use of Gemma
- Use of Render










Top comments (0)