The inspiration

From April 2026, UK sole traders earning over £50,000 stopped filing tax once a year and started filing every quarter. Making Tax Digital (MTD) turned a single annual scramble into four, and qualifying income is gross turnover rather than profit, so someone billing £52,000 and keeping £14,000 of it is mandated to file using MTD. The threshold comes down further after that: those earning over £30,000 join from April 2027, and those over £20,000 from April 2028. This arrives in published waves, and an estimated 840,000 of the people in them are unrepresented and use no commercial accounting software at all. It has landed on people who do their admin at the last possible hour, because they are busy doing the work they actually get paid for.

The obvious answer was a product that lowers the entry bar for doing your bookkeeping and effectively support both the organised user that make all entry as they come, and the ones that leave things till the last minute.

What it does

Phjord is where a UK sole trader keeps the year: invoices out, receipts in, spending automatically sorted into HMRC's own categories, and a running quarterly total that is correct on the day the deadline arrives, or, if you prefer, easily assembled the night before. The mission of Phjord is to simplify the boring work and give you everything you need to manage your account on the go. Most software that currently offers MTD support are built for accountants and for filing rather than for MTD readiness, which leaves it overwhelming for new users trying to meet their filing deadline.

With Phjord, you describe a job in a sentence and get an invoice back to check. You photograph a receipt at the counter and either store it for later or have your AI process it and hand you an expense entry to approve. While invoicing, if your client is a large UK company, their published payment record opens beside the invoice, telling you how they pay and giving you the decision while you still control the terms. If you have several invoices or receipts sitting in a desktop folder, you can batch upload them and Phjord records them to your earnings and expense dashboard. When the quarter closes, the figures are already added up and exportable to your accountant or to the product you file with.

How I built it

The whole system runs on Google Cloud: Cloud Run behind Firebase Hosting, Cloud SQL for Postgres, Cloud Storage for documents, Secret Manager, Cloud Scheduler for the recurring jobs such as reminders and follow ups, and Cloud Build from source. Gemini is in the live path in seven places, from drafting invoices to reading receipts to proposing HMRC categories.

Every AI action is a proposal, and proposals move through exactly three states: proposed, then approved, then committed. Skipping a state throws. Only executors, which are ordinary deterministic code, are allowed to touch the database or send anything.

The part I am most pleased with is what the proposal schemas are not allowed to contain. A model drafting an invoice returns line items and nothing else, because the schema it fills has no field for a total. There is a test that walks every proposal schema in the codebase and fails the build if any field is aggregate-shaped or matches a forbidden name pattern. It is impossible to merge a schema that lets a model volunteer a sum.

Receipts use Gemini's native image and PDF input rather than optical character recognition into text, and the parser is instructed to return the printed lines and never a total, for the same reason. Turnover comes from payment records the user confirmed, never from anything a model wrote.

The payer intelligence works the same way. The UK publishes payment practices data for large companies, and Phjord holds roughly 110,000 filings covering about 10,000 companies. The profiles are computed in plain code. Gemini's job is to narrate figures it did not calculate and to recommend terms, which a human then accepts or ignores.

Every agent call writes its input, decision, action and outcome to an append-only evidence table. The database role the application runs as has no UPDATE or DELETE permission on it. The audit trail cannot be rewritten by the thing being audited.

Challenges

HMRC closed the door mid-build. The initial plan was for users to file to HMRC directly from Phjord. The quarterly filing is built, and a real quarterly update was accepted in HMRC's sandbox across all twenty-five endpoints. Then production access closed for new products before I could apply, with the next guidance due at the end of September. The feature is finished and gated off behind an environment flag checked in three separate places, because a hidden form is not an access control. For now, Phjord prepares the figures and a recognised product sends them, and the site says so plainly. I will reapply when the door opens.

What I learned

Competing with Xero, QuickBooks and Sage as a solo founder is a fair fight on engineering grounds. It is not a fair fight on permission. Quarterly filing is built and was accepted end to end in HMRC's sandbox, and then production access closed to new products before I could apply, with the next guidance due at the end of September. There is no version of working harder that opens that door. What it changed, however, was the order of the work rather than the amount. The filing code sits finished, ready to deploy once access is restored, and the months in between have gone, and will continue to go, into the parts that need nobody's permission to ship.

Where it stands

Phjord is live at phjord.com, taking real payments through Stripe, with a paying subscriber who is not related to me.

Built With

Share this project:

Updates