I used Toggl for years. It was fine. I paid the monthly fee, started and stopped timers, pulled reports, and stitched the data into QuickBooks invoices by hand. Fine is a word that does a lot of work.
Then I started using AI agents to run parts of my business, and fine stopped cutting it.
The moment an AI assistant could read my email, check my calendar, update my project board, and draft my invoices, any tool it could not touch became the bottleneck. Toggl has an API. It has integrations. But the tool was not designed for an AI to drive it the way I want, and the pieces I actually wanted – my rounding rules, my invoice export format, reporting tuned to the way I bill – were never showing up on the roadmap.
So I built my own.
Why build, not subscribe
Most software subscriptions cover the 80% case. That is fair. The problem is the other 20%, because in a services business, the other 20% is where the margins live.
When I own the tool, the tool bends to how the business actually works, not the other way around. Every rounding behavior, every report column, every client-specific billing rule is decided by what I bill, not by what fits a generic schema designed for a million users.
There is no vendor deciding which features I get and which quarter they ship. There is no pricing tier gating the capability I need. The cost of hosting covers itself in saved subscriptions within the first year, but that is a secondary benefit.
The primary benefit is what the system unlocks.
Why AI-ready
A time tracker should do three things: capture hours accurately, produce reports, and feed invoicing.
All three are tasks an AI assistant can do well – if the tool exposes the right surface.
So I built the system API-first. Every action a human can take, an AI can take. Start a timer. Add a back-dated entry because I forgot to hit start on a call. Pull a client summary for the week. Export the billable hours for March and push them into QuickBooks as a draft invoice. The web interface is for me. The API is for my AI assistant. They share everything.
To close the loop, I built a companion MCP server alongside the app. MCP is the Model Context Protocol, a standard for exposing structured tools to AI agents, and this one wraps the time tracker’s public API so my assistant can call any endpoint as a tool. When I am deep in a project and I say “start a timer on the Acme website migration,” it happens. When I want a quarterly report across three clients, I ask, and the report lands in the conversation.
That is not a productivity hack. It is a different operating model. Hours that used to live in manual bookkeeping now live in a conversation.
What it actually does
Concrete is better than abstract, so here is what lives in the app:
- Multiple concurrent timers (I’m always multitasking).
- Daily, weekly, monthly, and custom-range reports, filterable by client and project, with CSV and PDF export.
- QuickBooks Online invoicing: pull unbilled hours for a client, push a draft invoice with one call. Sending the invoice straight to the client is next on the roadmap.
- Every endpoint that runs the web app is also available to the AI agent.
None of that is exotic. The point is not the feature list. The point is that every feature exists because I actually needed it, not because it fit a pricing tier.
The stack, briefly
For the developers reading along: the backend is Laravel 13 on PHP 8.5 with PostgreSQL 17. The frontend is a static site built with Vite and deployed separately. FrankenPHP serves the API inside a Docker container. Hosting runs on Sevalla. The AI integration is a small MCP server I built alongside it, sitting on top of the public API.
One backend, one static frontend, one AI adapter, one database. Nothing fancy.
What this means for a services business
If you run a services business, your time and your billing are the business. Everything else is downstream of those two things.
When that system is something you rent, three things happen. You pay for features you will never use. You cannot change the parts that actually matter to how you make money. And when a real shift in how work gets done arrives – the way AI is arriving right now – you are waiting on a vendor to decide whether your workflow is a priority on their roadmap.
When that system is something you own, none of that happens. You get exactly the behavior you want. You save something on subscriptions every month. And when the ground moves under you, you are the one deciding what to do next, not the vendor.
This is not an argument for building everything in-house. Most software you use should stay bought. The systems closest to how you make money are the ones worth owning, and the ones most worth making AI-operable.
Toggl is fine. For me, fine stopped cutting it.

