Work

Systems we built, and still run

Four builds, described in full. Two are our own products, in production today. Two were commissioned. We have said which is which, because the difference matters.

Our own product

Invco

A multi-tenant invoicing platform with the back-office automated end to end.

Role
Design, architecture, build, operations
Year
2026
Status
In production
Stack
Next.jsTypeScriptPostgreSQLPrismaSumUpIMAP/SMTP
25database models
65API routes
53pages
~34,000lines of code

The problem

Small businesses lose days a month to the same loop: raise the invoice, email it, wait, check whether it was paid, chase, reconcile the payment against the invoice, repeat. Every step is manual, and every step is where money goes missing.

Why it matters to you

This is the exact shape of work we sell. Scheduled sending, inbound matching, payment reconciliation and accrual are not concepts we have read about — they are jobs running in production, and we can show you the logs.

Evidence: 135 commits between 10 June and 25 August 2026.

What we built

  • Multi-company workspaces — one login owns and switches between several businesses, with every query re-scoped to the active company.
  • Scheduled invoice email, queued and released by a cron worker rather than sent by hand.
  • Inbound reply capture over IMAP: client replies are pulled from the mailbox and matched back to the invoice thread automatically.
  • A payment processor with account rotation, webhook handling and a reconciliation job that matches settled payments to open invoices.
  • A referral system paying 20% recurring, with attribution, daily commission accrual and payout records.
  • An OAuth 2.0 server and an MCP interface, so the platform can be driven programmatically with per-user keys.
  • Client portal, PDF template engine, rate limiting, and nightly encrypted backups to private release storage.
Our own product

Digipto

A UK cryptoasset conversion service, with the entire sales response loop built in.

Role
Design, architecture, build, operations
Year
2026
Status
In production
Stack
Next.jsTypeScriptPostgreSQLPrismaSupabaseWeb Push
7database models
13API routes
36pages
~5,300lines of code

The problem

A regulated financial service has to answer enquiries fast and keep a record of every exchange. Off-the-shelf chat widgets give you the conversation but not the audit trail, and they do not connect to the lead record underneath.

Why it matters to you

Slow enquiry response is one of the two problems we lead with. This is a working answer to it: capture, route, notify, respond, record — built for a sector where the record itself is a compliance requirement.

Evidence: 50 commits between 27 July and 27 August 2026.

What we built

  • A live chat widget with a full agent console — agents pick up conversations, reply, and leave internal notes against the lead.
  • Lead capture and routing, with conversation, message and note history stored against each lead.
  • Email threading, so replies outside the widget still land on the same record.
  • Web push notifications, so an enquiry that arrives out of hours is not missed.
  • The public service pages: how it works, fees, buy, sell, business accounts, plus the AML, complaints, privacy, terms, cookies and risk pages a regulated service requires.
Client engagement

Jadewave Limited

A London recruitment agency's site, built as a working jobs platform rather than a brochure.

Role
Design and build
Year
2026
Status
Delivered
Stack
WordPressCustom themeCustom post typesPHP
4sectors covered
5form workflows
0page builders used

The problem

A recruitment agency has two audiences with opposite needs on the same site — candidates looking for roles, and employers looking for staff. Most agency sites serve one well and bolt the other on.

Why it matters to you

A named UK client — Jadewave Limited, Company No. 08804531 — and a build with real workflows behind it, not a template with a contact form.

Evidence: Companies House registration is public and verifiable.

What we built

  • A jobs board as a custom post type, filterable by sector across Industrial & Warehouse, Healthcare & Care, Hospitality & Catering, and Office & Professional.
  • Job detail pages with an application form that accepts CV uploads.
  • A separate CV registration route for candidates with no specific role in mind.
  • A "request staff" workflow for employers, kept distinct from the candidate journey.
  • A bespoke theme with no page builder and no plugin dependencies — everything ships in the theme, so nothing breaks on a plugin update.
Client engagement

MS Parfums

A Belgian fragrance store, built for conversion and speed.

Role
Design and build
Year
2025
Status
Live at msparfums.be
Stack
ShopifyCustom themeConversion optimisation
5.0client rating
1written review

The problem

An independent fragrance retailer competing against far larger operations online, where a slow or confusing store loses the sale before the product is ever seen.

Why it matters to you

The client wrote it better than we could: the site is "fast, clean, and well-structured, with a strong focus on conversion and user experience", delivered with "deadlines respected, and changes implemented quickly".

Evidence: Full written review published on the client's Fiverr order.

What we built

  • A custom Shopify storefront structured around the buying decision rather than the catalogue.
  • Performance work so the store loads fast enough to hold a cold visitor.
  • Product structure and pricing presentation built around how the range actually sells.

What these numbers are, and are not

The figures on this page are counted from the codebases: database models, API routes, lines of code, commits. They describe scope and pace, and can be verified live on a call.

They are not client outcome metrics. We do not yet publish "saved 18 hours a week" figures, because we will not publish numbers we have not measured. Our pilot engagements exist precisely to measure them, on the client's own baseline, before and after.

Want to see any of this running?

We will screen-share the real thing — the admin panel, the cron logs, the reconciliation job. Not slides.

Book a 45-minute call