A customer’s story

Our time-tracking bill was $59 a month. The renewal offer was $704. So we spent two days replacing it.

We used Harvest for 13 years — six seats, 56,081 time entries, 1,797 invoices. Then the new pricing arrived: our plan’s default replacement was an Enterprise tier at $704 a month. This is what we built instead, what it took, and why we’d been quietly wanting to do it anyway.

Not affiliated with Harvest or Bending Spoons — we were customers for 13 years. Full disclosure in the footer.

13 years·6 seats·56,081 time entries·1,797 invoices·$59/mo → $704/mo
Cumulus Time dashboard showing weekly insights, hours cards, a 12-month billable-hours trend, a running timer, and per-project hours
The dashboard, staged with fictional demo data. Harvest users recognize the shape instantly — the 12-month trend chart and the Monday-morning AI weekly digest are the parts it never had.
The story

We were the happiest kind of customer

Cumulus Vision is a small consulting firm. Harvest ran our billing life: the team logged time in it daily, invoices went out of it monthly, payments came back through it, and everything synced to Xero. Six seats, $59 a month. It was good software at an easy price, and we recommended it to clients.

Then the pricing changed

Some context first: Harvest was acquired by Bending Spoons in 2025, and started rolling out new plans. Here’s the mechanism, as shown inside our account. At renewal, paid accounts move automatically to the Enterprise plan with “Unlimited usage billing.” The seats are almost a decoy — six seats at $17.50 is $105 a month, less than some legacy plans. The new part is a separate usage layer: a flat $599 a month, or a “Flex” alternative that bills you on tiers of how many projects, tasks, and clients you have — and how much you invoice.

For our account: $105 in seats + $599 usage = $704 a month, about 12× our old bill. We ran the Flex math too — for a consulting firm of our shape it lands within sight of the same number, and it prices your growth: invoice more, owe more. There’s also a Harvest fee added to your clients’ online payments on Flex, waived if you pay the $599.

One more thing worth saying plainly. Harvest’s public pricing calculator shows “Your total price” computed from seats alone, with a footnote that additional usage “is billed based on what you use, so you’re never overpaying.” The usage amounts themselves — including the $599 — appear nowhere public that we could find; they’re shown only inside your account. So the calculator quoted us a “total price” of $105 while our actual renewal was $704, and we can only tell you what our account was shown. Whether every account sees the same numbers, we have no way to know.

To be fair: they offered us a generous discount on the first year if we committed. But a discount on year one doesn’t change year two — the destination price was the price, and everyone involved knew it. We decided we’d rather solve it once than negotiate it annually.

Call it $8,400 a year for a timesheet and an invoice generator.

Here’s the thing — we build software for a living

We’d idly thought about replacing Harvest for years, the way you think about re-tiling a bathroom that works fine. At $59 a month it was never worth the weekend. The renewal notice recategorized the project instantly: $8,400 a year isn’t a subscription, it’s a budget line — and budget lines get engineering attention.

Judging by the number of people on Reddit announcing their own replacements or switching to alternative apps, we weren’t alone in that math. Honestly? For anyone with software development experience, this space is not that challenging. Time tracking and invoicing is a well-understood problem. That’s exactly why the new pricing felt wrong.

Two days later

Working with AI coding agents (Claude Code, running teams of agents in parallel), we went from empty repo to production in two days: time tracking with timers, the exact invoice generator we were used to — same detail levels, same 6-minute rounding, same numbering sequence — ACH payments embedded on client invoice pages, and the full Xero sync working end to end, with a few improvements over the integration we’d left behind.

All 13 years of history came along: every entry, every invoice, every payment, verified row for row against the originals. The team stopped opening Harvest within the first day; the whole team was fully cut over in under a week.

Hosted client invoice page with itemized time entries, totals, a Download PDF button, and a pay-by-bank-transfer button
Clients pay by bank transfer directly on the invoice page — flat $5 fee instead of a percentage. Same detail levels and 6-minute rounding the old invoices had. (Staged demo data.)
Client account statement page listing outstanding invoices with checkboxes, a total outstanding figure, and Pay selected / Pay all buttons
Every client gets an account page: tick several invoices, pay them with one bank transfer — the feature we could never have asked a vendor for. (Staged demo data.)

And then we kept going

Because once it’s yours, the wishlist stops being a wishlist. In the same two days we added the things we’d always wanted and could never have asked a vendor for: clients can pay several invoices in one bank transfer; there’s a proper API — just a feature, but one that fits how we work, since teammates deep in a Claude Code session can log their time without switching windows; permissions are enforced in the database itself, so billing rates and costs are structurally invisible to anyone not cleared to see them; and every Monday the app writes each of us an AI analysis of where the week’s hours and dollars actually went.

Weekly timesheet grid with per-day hour cells, a running timer bar, and a copy-rows-from-last-week button
The week grid, with a live timer running. The lock icons are invoiced days — once time is billed, the database refuses to let it change. (Staged demo data.)
Project analysis page with budget-burn chart, total hours, budget remaining, internal costs, invoiced and uninvoiced amounts, and a per-task breakdown
Per-project analysis: budget burn, internal cost vs. billable, uninvoiced dollars. Who can see these numbers is a database fact, not a UI setting. (Staged demo data.)
The math

What it costs now

Line itemBefore (renewal offer)After
Time tracking & invoicing
6 Enterprise seats + Unlimited usage
$105 + $599 = $704/mo$0 — we own it
Hosting & database~$45/mo
Xero sync connectionincluded$5/mo
Transactional emailincluded$0 (free tier)
ACH payment processing~$5 flat per invoice~$5 flat per invoice
(same processor, direct)
Software subtotal~$8,400/yr~$600/yr standalone

Our actual number is lower still: under $5 a month. We already host other apps on the same Vercel and Supabase accounts, so this one rode along on plans we were paying for anyway — the only genuinely new line item is the $5 Xero connection. The ~$50/month column is the honest standalone estimate if you’re starting from zero.

The build itself: two days of AI-agent development, one person supervising. We build software with these tools every day, so our marginal cost was mostly attention. Your mileage will vary — that’s an honest caveat, not false modesty.

The stack

Deliberately boring

Nothing here is exotic, and that’s the point — a replacement you own has to be maintainable on a Tuesday afternoon between client calls:

  • Next.js on Vercel — the app, the API, the client invoice pages, the cron jobs
  • Supabase (Postgres) — with row-level security and column privileges doing the permission enforcement, so “who can see billing rates” is a database fact, not a UI promise
  • Stripe — embedded ACH bank payments on invoice pages, ~$5 flat per invoice
  • Xero — one-way sync via a $5/month custom connection; invoices and payments land exactly the way the old integration posted them
  • Resend — invoice delivery and late-payment reminders
  • Claude Code — built the app; and since the app has an API, logging time from a terminal session became one more way we use it. A weekly job also writes each person an AI analysis of their week.

Total infrastructure: about $50 a month standalone — under $5 in our case, since it shares accounts with apps we already host.

Projects list grouped by client with billing mode, budget progress bars, hours, and billed totals
The whole thing is a normal web app — this projects view, grouped by client with budget burn inline, is the kind of software one person can maintain. (Staged demo data.)
What we’d tell you

Should you do this?

Maybe not. If the new price is noise in your budget, renew and move on. If an off-the-shelf alternative fits how you work, migrate. Software you own is software you maintain — we went in knowing that, with the skills in-house.

But the real story isn’t one vendor’s pricing. It’s that the build-vs-buy math for internal tools has quietly inverted, and most companies haven’t re-run it. We’re not building a product to sell — this is our internal app, built for exactly how we work. The point is that that option now exists for any team with development experience, at a cost that used to be unthinkable.

The part we didn’t expect to feel so good: the roadmap is ours now. We never used Harvest’s forecasting product — it didn’t fit how a professional-services firm like ours plans work — so we simply didn’t have forecasting. Next month we’ll build one shaped exactly like our business. No feature requests, no waiting for someone else’s dev team, no “planned for next quarter.” We make the app fit us, instead of fitting ourselves to the app.

Community

Others who left

We’re not the only ones. When the new pricing landed, builders all over the forums started replacing Harvest with their own tools — some for their team, some as products. We’re collecting their stories here, in their own words.

Story cards land here as they come in — app name, builder, what it replaces, and a screenshot, in two groups: built for your own team, and built as a product others can use.

Yours could be the first. A short writeup and a couple of screenshots is all it takes.

Built your own? Tell us about it — a short writeup and a couple of screenshots is all it takes.

Submit your story →

Stories are contributors’ own accounts, lightly edited for length. A listing isn’t an endorsement — evaluate anything here the way you’d evaluate any software.

Call to action

Want the code?

We’re deciding whether to open-source it. It’s not a product and won’t become one — but if enough people want a self-hosted starting point, we’ll clean it up and publish it. One email when we decide, in either direction. No newsletter.

 

Who’s behind this

We’re Cumulus Vision, a Salesforce development company that also builds custom apps and AI workflows. This app was built by AI agents, supervised by one person, in two days — and this page exists because we figured our renewal email wasn’t the only one out there.

FAQ
Is this open source yet?
Not yet. The app runs our real business — before publishing we’d genericize the config, strip our data out of the test fixtures, and audit the history. That’s real work, which is why we’re measuring interest first.
What’s the stack?
Next.js on Vercel, Supabase (Postgres with row-level security), Stripe for ACH, Resend for email, a one-way Xero sync, and an API. It’s a normal web app — the API is simply a feature, one we happen to use a lot because our team often works in Claude Code. Permissions — who can see rates, costs, invoices — are enforced in the database, not the UI.
Does it really replace Harvest?
It replaces what we used: time tracking, timers, invoicing from unbilled time, client payment pages, Xero sync, late-payment reminders, reports. It deliberately skips estimates, expenses, and retainers — we hadn’t used them in years. Your subset is probably different from ours.
How long did switching actually take?
Two days to build, and the team was fully cut over — daily time tracking, timers, the terminal workflow — in under a week. The last mile is one invoice cycle run in parallel with the old system before we cancel, because we bill real clients and verify before we burn bridges.
Did the AI really build it in two days?
Teams of Claude Code agents wrote, tested, and deployed it August 12–14, 2026, with one human directing, reviewing, and QA-ing throughout. The migration verification — row counts, invoice replays, totals matching to the penny — was the part the agents were most rigorous about.
Are you affiliated with Harvest?
No — see the footer. We were customers for 13 years, and this site exists because of a pricing change. The product is good. The new price wasn’t, for us.

Harvest is a trademark of its owner, Bending Spoons S.p.A. (which acquired Harvest in 2025) or its affiliates. This site is not affiliated with, endorsed by, or sponsored by them. It’s a former customer’s account of switching away, published under nominative fair use. Pricing figures reflect what our own account was shown as of August 2026; seat prices also appear on Harvest’s public pricing page, while usage-billing amounts are displayed in-account.

Privacy, in one line: this site stores only what you choose to send it — an email address for the open-source list, and story submissions — and uses them for nothing else.

A Cumulus Vision project · Contact