Everything in the lab
KpKnox Project Management SystemBusiness tool

Experiment

In daily use at Knox

Knox Project Management System

Running an agency means quoting, chasing, tracking and billing every single day. I built one place that does all four, so I stopped doing them by hand.

Role
Founder, product + build, solo
Apparatus
React · TypeScript · Express · MySQL · Claude Code
Tags
  • Agency operations
  • Quoting + billing
  • Team performance
The Knox project board in a browser window, with two cards over it. One shows a developer's monthly score, the other a suggested quote of 2 days for three tasks.

The problem

Every day at an agency looks the same. A client sends a list of work and wants to know how long it will take. Someone has to guess. Then someone has to check who is doing what, chase the people who forgot to log their time, and at the end of the month turn all of it into a bill.

None of that is the actual work. It is the work around the work, and it was landing on me.

The day-to-day problem

  • "How long will this take?"Before: a guess, every time. Now: the app suggests a quote from how long the same kind of task took us before.
  • "Who's on what today?"Before: asking around. Now: everyone gets their plan by email at 7am, and sees it on My Tasks.
  • "Did anyone log their hours?"Before: chasing at month end. Now: a nudge at 7pm that lists the tasks they touched but didn't log.
  • "What do we bill this client?"Before: rebuilding the month in a spreadsheet. Now: each client has a link that already shows their hours and the amount.
  • "Where's my work at?"Before: clients asking on calls and messages. Now: clients log in and see their own projects, without our hours or margins.
  • "Who's doing well?"Before: gut feeling at review time. Now: a monthly score built from work delivered, with the method written down.

Why not just use Asana

Asana tracks tasks. Our day runs on tasks, quotes, hours and bills, joined together.

  • Four tools, not oneOff the shelf, this is a task tool, a time tracker, a quoting spreadsheet and an invoicing tool. Four logins, and nothing talks to anything.
  • Clients inside, quotes hiddenWe want clients in the same project as the team. They must never see the hours behind a quote, or every quote becomes a negotiation.
  • Our rules, not a templateHow we quote, what counts as late, who gets credit for a task. These are decisions about how Knox runs. A tool should follow them, not the other way round.
  • No per-seat billEvery developer and every client would be a paid seat. Ours runs on hosting we already have.

How it works

A client’s list of work arrives as a batch. The app quotes it from our own history. A developer checks the hours and commits to a turnaround. Then the work happens on a board, time gets logged, and the bill builds itself.

New Batch: three tasks on the left, and on the right a suggested turnaround of 2 days with the hours per task and where each estimate came from
A new batch. The quote updates as you type, and says where every number came from.
The project board with five columns, from To-do to Done. Each card shows its due date and hours logged against the quote
The board. Every card shows hours logged against what was quoted.

A day with it

  • 7amEach developer gets their plan: overdue, due today, next.
  • During the dayThey work from My Tasks, move cards and log time as they go.
  • ClientsAdd work and follow it in their own projects.
  • 7pmDevelopers get a "log your time" nudge. I get the whole team's day in one email.
  • Month endClient bills are already in their timesheet links. I close the month's scores.
  • AnytimeAnything that rewrites the record, like deleting worked-on tasks, waits for my approval.
My Tasks: the team message, a developer's live score with five parts and two tips, then their tasks grouped by overdue, today and no due date, each with its points
A developer's home. Their score, what would raise it, and what each task is worth.

The score

Developers are scored monthly, 0 to 100, for reviews and bonuses. It counts work delivered: finished on time, close to the quote, not reopened, logged every working day. It never counts hours, because hours are easy to pad. Leave and holidays don’t count against anyone.

The score page: 44.5 out of 100, and a list of what to do next, each with the points it would add
Every tip names the tasks and the points they're worth.
How the score is calculated: the short version, the formula and the weight of each part
The full method is a page the whole team can read.

Everything it does

  • WorkProjects, teams, boards and lists. Tasks with notes, subtasks, tags, files, comments and several assignees.
  • QuoteBatches with a quote from history or a developer's hours. A client's PDF can become a batch through Claude.
  • ClientsTheir own projects. They add tasks, comment and ask for revisions, and never see hours.
  • BillA private link per client, by month, project, task and day, at their rate. CSV, print and PDF.
  • NudgeEmails on assignment, comments and completion. Morning plan, evening reminder, team summary, announcements.
  • MeasureAnalytics for the team, and the monthly score with points, levels and badges.
  • PeopleCheck-ins, leave and holidays.
  • SafetyArchive and undo anything. Big deletions and late quote changes need approval. Every score change is logged.
Analytics for one developer: hours logged, tasks completed, on-time rate, estimate accuracy and open workload
Analytics. Plain findings first, then the charts.

What I learned

  • For an internal tool, the rules are the product. Most of the work was deciding who sees what, and who gets credit for what.
  • If it touches pay, publish the method. People trust a number they can check.
  • Build on what people already use. A browser and their inbox. Nothing new to install, so the team actually uses it.

What happened

  • 2 emails a day do the chasing. A plan at 7am, a "log your time" nudge at 7pm.
  • ₹0 per seat. It runs on hosting we already pay for.
  • 268 automated tests on the rules that touch money and pay.

The honest note

Building your own tool is usually the wrong call. It made sense here because our process is unusual, the tool is small, and I can build it myself. If any of those were false, I'd be on Asana.

The performance score only started on 1 October. It touches pay, so it will take a few months before I trust it fully. The manager rating is still there for what the numbers can't see.

The screenshots are from a test project with made-up tasks, so no client's work is on show.

Not built yet

  • A proper phone layout. Today it is a desktop app.
  • Deactivating a user without deleting their history.
  • Task dependencies, a calendar view and saved filters. Left out until someone actually asks.