FreePaid: A Private Local AI Client Manager for Freelancers
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
FreePaid is a private, local-first AI client manager for freelancers.
Freelancers often keep client conversations in WhatsApp, Slack, Instagram,
Discord, or email. The problem is not a lack of communication—it is losing
track of what was agreed, what was promised, and which "small request" quietly
became unpaid work.
FreePaid gives those conversations a private working memory. A freelancer can
paste an inquiry or an incoming client message into a project workspace and get:
- scope and scope-creep warnings;
- tracked promises and deadlines;
- project-memory context;
- a suggested reply based on their own rates, revision policy, working hours, and communication style.
The product is for independent developers, designers, writers, consultants,
and other service professionals who need lightweight project boundaries without
putting client conversations into another hosted SaaS or AI account.
Demo
Here is the demo video of the app in action:
The app runs locally:
git clone https://the-sukhsingh/free-paid-next.git
cd free-paid-next
npm install
npm run dev
Then open http://localhost:3000.
There is no hosted demo link yet. The product is intentionally local-first, so the most important behavior—local storage and in-browser inference—can be
tested in the browser where it runs.
Code
The source code is in this repository.
Repository: https://github.com/the-sukhsingh/free-paid-next
The main areas to explore are:
-
src/app/for the dashboard, clients, projects, and settings workflows; -
src/lib/db.tsandsrc/lib/appStore.tsfor IndexedDB persistence and reactive application state; -
src/services/lmService.tsfor local model loading and inference; -
src/services/analysisService.tsfor project and message analysis; -
src/components/ui/for shadcn/ui components backed by Base UI.
How I Built It
FreePaid uses open-weight language models in the browser through
Transformers.js and ONNX Runtime
Web.
The app selects WebGPU when the device supports it and falls back to
multi-threaded WebAssembly where possible. Model files are cached by the
browser, and the ONNX Runtime assets are served from the app's own
public/ort directory so inference does not depend on a remote runtime asset
path.
The architecture is deliberately simple:
- Next.js App Router provides the application routes and shell.
- shadcn/ui components generated with Base UI provide the interface.
- IndexedDB stores the freelancer profile, clients, projects, messages, scope, and AI memory.
- TanStack Store keeps local state reactive across the client UI.
- Transformers.js loads a selected open-weight model lazily.
- Prompt and analysis services turn local project context into warnings, summaries, and draft replies.
- Settings provides JSON backup and restore because local-only data is not automatically recoverable from another browser.
The model picker includes several quality tiers, from a small SmolLM2 model
for quick setup to larger Qwen and Gemma models for devices with more memory.
Why Does Open Innovation Matter?
This product only works as designed if the user's client data can remain under
the user's control.
A closed hosted API would make the first version easier to ship, but it would
also create a difficult trust decision: a freelancer would have to upload
private negotiations, rates, project scope, and client details to a third
party. Open models and browser inference make a different tradeoff possible:
the user can run the model on their own device, inspect the application code,
choose a model that fits their hardware, and use the app without creating an
AI account.
Open innovation also made the product practical for a side-hustle workflow:
- local inference avoids per-message API costs;
- IndexedDB avoids needing a hosted database;
- WebGPU and WASM let one codebase adapt to different devices;
- open UI primitives make the interface easy to inspect and extend;
- the project can be migrated between frameworks without giving up its privacy-first behavior.
The result is not an AI service that owns the user's work history. It is a
small tool that helps the freelancer keep ownership of it.
My Agent Session
This project was migrated from TanStack Start to Next.js with an AI coding
assistant. The migration covered the App Router routes, local persistence,
model loading, shadcn/Base UI integration, dynamic route handling, and
production-build fixes.
Prize Categories
This submission is primarily for the Hacktoberfest Open-Source AI Challenge
Week 2: Side Hustle. No additional partner prize category is being claimed at
this time.
Top comments (0)