In August I got this from Harvest support:

I've been an independent contractor since 2009. Prior to that, amongst many other projects, I built timekeeping applications for a handful of corporations, mainly to track time for their software engineers. I built integrations into SharePoint, Project Web App, and Jira, with dashboards for management. When I went solo, I needed the same for myself. I toyed with the idea of building an app for personal use, but started using Harvest in the meantime. It nagged me for years because of its simplicity. I could easily build a replacement. But for $12 a month, Harvest did exactly what I needed. I couldn't justify the time it would take against what I would save.
Come 2026, that calculation changed. I already had a cloud-based, enterprise-grade platform to build on. I just had to build the app. So, I did.
I build corporate integrations and automations for a living. APIs are my language. I went straight to the Harvest API and pulled everything I could. Then I worked backwards. What structure do I need to retain 15 years of history? So I built around the data. Then I built an API on top. Then a UI. Then I added the rest: authentication, teams, billing, Stripe, Xero and QuickBooks integrations, browser extensions, etc.
Time tracking was the easy part; the details took much longer than I expected. Multi-currency touched every part of the stack. Clients get a portal they sign into with an emailed link to see their invoices, pay through Stripe and pull a statement, and row-level security makes sure they only ever see their own records. Teams over 500 users get a dedicated database at no extra cost, completely isolated from everyone else.
My platform runs in Azure. I have a complete CI pipeline that pushes versioned containers, running in parallel with zero downtime, so features and bug fixes go out seamlessly. I have thousands of unit tests. I even built a tool that runs every use case in Playwright and snapshots the UI in multiple orientations and resolutions, then flags every visual difference from the previous build for me to review before it ships.
Lastly, I slapped a UI on my Harvest importer and added OAuth, so users can easily pull their entire history into the app. My account import came to 9,784 records: 9,060 time entries going back to January 2011, 517 invoices, and the expenses, estimates, clients and projects around them. The whole import took about 13 minutes. Oddly, the 9,060 time entries took about a minute; the 517 invoices took about ten. Most of the data can be pulled in batches, but the invoices take longer because you can only fetch the invoice line items and payments per invoice. Same goes for the invoice PDFs. After the import, it reads Harvest again and checks every record, hour and amount against what arrived.

When it finishes, the check runs on its own:

I call it eddish, the thing that sprouts up when the harvest is over. I’ve been using it for the last two months to bill my own clients. If you want to see what your Harvest account would bring across before signing up for anything, there’s a read-only preview.