Chill Pay ☕
What I Built
Ever since Dad started his startup, his mornings became business.
But the 1st? The 1st was something else.
One morning, the 1st, I woke up early. But guess who was already awake?
Dad. Laptop open. Calculator in hand. A cup of hot tea beside him, slowly going cold.
Is there an exam today? Why is everyone so tense?
Oh. Right. It’s the 1st. Salary day.
I can’t take his worries away. But I could make sure that on the 1st, at least, his tea stays hot. So I built Chill Pay, a local payroll and invoice app that turns his messy monthly notes into approved pay and invoice PDFs.
Dad can enjoy his hot tea. And any small startup owner who currently does payroll with WhatsApp messages, a calculator, and a lot of worry.
The problem
My father runs a small startup in India. Some people are monthly employees, some are contractors, and some are trainees. Every month, leaves, extra work days, and bonuses reach him as messages and scribbled notes. He turns them into each person’s final pay by hand. One wrong number means an awkward conversation with someone who is counting on that money.
Cloud payroll tools charge per employee and want his team’s salary data on someone else’s servers. For a small startup, that’s a hard trade.
What Chill Pay does
This month: Dad types or pastes his note. A local model reads the names and numbers out of it. He then reviews leaves, extra days, and comp-off, and code calculates every row amount.
People: members, departments, and projects. Each member is an employee, contract, or trainee, with their own pay.
Records: past months, invoices, reports (payroll register, monthly TDS, financial-year TDS, CSV export), and advances.
Setup: company details printed on invoices, login accounts, and Department Head leave.
Approvals: a Department Head approves or rejects a submitted entry with a comment. If a department has no head, or the head is on leave, HR can approve instead.
Invoices: each approved member gets one PDF, numbered from their name and billing month (e.g. RAKU_INV202609 for Raj Kumar, September 2026).
Roles: Finance sees Records only. Members and Department Heads see This month and Records. HR sees everything.
The rule I never broke: the AI never calculates money. It only reads human messages.
Demo
Code
Chill Pay
Chill Pay is a local payroll and invoice app. Each account is its own company. Notes for a month are reviewed by a person, then Python calculates the pay and creates one invoice per member.
The chat model only reads a note. It does not calculate money. Pay is calculated in app/services/payroll_engine.py.
What you can do
The side panel has four pages.
This month
- Notes. Type a payroll note in chat, or paste it on the monthly run. A saved member can be matched by full name, or by a first name when only one member has that first name.
- Review. Check leaves, extra days, and comp-off. The amount on the row is calculated by code.
- Decisions. A Department Head approves or rejects a submitted entry with a comment. HR can approve a monthly run when that department has no head yet. After a head is assigned…
How I Built It
Model: gemma:2b, an open-weight Gemma model running locally through Ollama
Frontend: React
API: FastAPI
Database: SQLite, one file on Dad’s machine
How the AI fits in:
the note goes to Gemma, which pulls out names and numbers. Those land in an editable review table, not straight into payroll. If Ollama isn’t running, Dad can type the note by hand and nothing breaks.
And python does math.
Guardrails for a “never wrong” app:
Months before a member’s joining date can’t be approved.
Approved payroll is saved as a snapshot, so later edits never rewrite history.
Each company login is its own world. One company can’t see another’s members, pay, or invoices.
The hardest part:
Getting a 2B model to return consistent structured output, handling phrases like "Ravi half day Tuesday", or deciding where to stop trusting the model and start asking the human.
Why Does Open Innovation Matter?
Privacy. Salary is some of the most sensitive data a company has. With a local open-weight model, nothing goes to a cloud model. The data, the calculations, and the invoices stay in a SQLite file on Dad’s own machine. He doesn’t have to trust anyone’s privacy policy.
Cost. No per-token bills and no per-employee fees. A tool like this only works for a tiny startup if running it costs almost nothing.
No lock-in. No vendor can change the price, the terms, or the API underneath him. If a better open model arrives next year, I swap it in.
A small model is enough. The job is narrow: read short, messy notes and pull out names and numbers. A 2B model on a normal laptop does that, and since code does the money, the model never has to be perfect, only helpful.
The Lazy Payoff
Slow and steady isn’t about doing things slowly. It’s about not rushing the parts that can’t be wrong. Chill Pay is deliberately unhurried where it matters:
A small local model that reads, but never decides.
Every row calculated by code, the same way every month.
A human review before anything is approved.
A snapshot, so the past stays put.
And that leaves the morning slow in the nice way.
Payroll used to take Dad about 4 hours. With Chill Pay it took 10 minutes.
His reaction: Wow, now it can done in minutes.
Prize Categories
Best Use of Gemma: gemma:2b runs locally through Ollama and turns messy payroll notes into names and numbers, with a manual fallback when Ollama is off.
Best use of eleven labs : It was used for voice over of demo video.
Running a startup and dreading the 1st of the month? ☕ Tell me which part of your workflow is the slow and messy. I’m taking on a few small pilot projects.
💬 Comment below or DM me and we can talk.
Top comments (0)