What I Build
Custom code, no page builders, no marketplace themes. Most builds go live in one to four weeks.
What I build, what I keep running, and who I build it for.
- Services
- 13
- Groups
- 3
- Tools
- 18
- Person
- 1
Read about one properly
Web Apps
Marketplaces, SaaS MVPs, internal tools and community platforms, written from scratch.
Custom web applications built from scratch: marketplaces, SaaS MVPs, internal tools and community platforms. The parts that make your business different get written for your business, rather than configured around a template built for someone else's.
- Scope
You and I agree what version one contains, and what waits. Fixed price from that.
- Build
Written in the open, with something you can click on inside the first week.
- Handover
Deployed, documented, and the source handed over. No lock-in to me.
- Marketplaces
- SaaS MVPs
- Internal tools
- Community apps
- Dashboards
- Integrations
Built withNext.jsReactNodePostgresSupabaseStripeAPIs
MVPs
A first version real people can use, built in weeks rather than quarters.
The smallest version of the idea that real people can actually use, built well enough that you keep it rather than throw it away. Scope gets cut to what proves the thing, and the rest waits until somebody has asked for it.
- Cut
Everything not needed to prove the idea comes out of version one.
- Build
One core flow end to end, working properly rather than four half done.
- Launch
In front of real users, with enough analytics to tell you what happened.
- Scoping
- Core flow
- Accounts
- Payments
- Analytics
- Launch
Built withNext.jsReactSupabasePostgresStripe
WordPress
Plugins written from scratch when WordPress is genuinely the right tool. No marketplace bloat.
When WordPress is genuinely the right tool, the plugins get written rather than bought. No bloat, no licence to renew, and no security risk inherited from a marketplace author who stopped updating three years ago.
- Audit
What the site runs on now, what is safe to keep, and what is costing you.
- Rebuild
Plugins written for the job, and a theme that loads only what it uses.
- Handover
Migrated with the URLs preserved, and updates that will not break it.
- Custom plugins
- Themes
- Migrations
- Performance
- Security
- Maintenance
Built withWordPressPHPMySQLPluginsAPIs
Trade Systems
Quoting, scheduling and job tracking built around how the work actually runs.
Quoting, scheduling and job tracking for contractors and technical businesses, built around how the work actually runs rather than how software thinks it should. Usually replacing a paper diary and a stack of spreadsheets.
- Shadow
How the work actually runs today, including the parts nobody wrote down.
- Build
Quoting, scheduling and tracking shaped around that, not around a template.
- Roll out
Onto the phones your engineers already carry. The paper diary retires last.
- Quoting
- Scheduling
- Job tracking
- Invoicing
- Field apps
- Reporting
Built withNext.jsPostgresPWAAPIsStripe
AI & Electronics
AI workflows, automation, PCB design and the design work around them.
AI workflows, automation, PCB design and the design work around them. Usually one build rather than four suppliers who each need the others to finish first.
- Define
What should run without a person, and what genuinely still needs one.
- Prototype
A board or a workflow you can try, before anything is committed to.
- Produce
Made, tested, and the firmware and design work finished around it.
- AI workflows
- Automation
- PCB design
- Firmware
- Motion
- Brand
Built withAIPythonAPIsPCB DesignFirmwareAdobe
LLM Apps
Chat over your own content, retrieval and agents scoped to a job you can check.
Language models wired into something that already exists, rather than a demo that impresses once and is never opened again. Chat over your own documents, retrieval that cites what it used, and agents scoped to a job small enough that you can tell when it got it wrong.
- Define
One job worth automating, small enough that a wrong answer is obvious.
- Ground
Pointed at your own content, so answers cite something rather than invent it.
- Ship
Inside the product people already use, with the running cost measured first.
- Chat interfaces
- Retrieval
- Agents
- API integration
- Evaluation
- Guardrails
Built withAIPythonNext.jsAPIsPostgresSupabase
Branding
A mark, a type system and a palette that still work at sixteen pixels.
A mark, a type system and a palette, made by the person who is then going to build the site with them. No handover gap where the identity says one thing and the website says another, and nothing that only works at poster size.
- Dig
What the business actually is, in plain words, before anything gets drawn.
- Draw
A mark, a type system and a palette that survive being used small.
- Pack
Files for everywhere it has to appear, and rules short enough to follow.
- Identity
- Logo
- Type
- Palette
- Motion
- Guidelines
Built withAdobeAI
Hosting
Somewhere fast to put it, set up properly, with backups that actually restore.
Somewhere fast to put the site, set up properly and pointed at your domain. Certificates that renew themselves, backups that have been tested by actually restoring one, and monitoring that tells me before it tells you.
- Move
Migrated with no downtime you would notice, and the domain pointed properly.
- Harden
Certificates, backups and monitoring set up, and then actually tested.
- Watch
Alerts reach me first, so most problems are fixed before you see them.
- Setup
- Domains
- Certificates
- Backups
- Monitoring
- Migrations
Built withNext.jsWordPressAPIs
Maintenance
Updates, backups and small fixes each month, so nothing rots quietly.
Updates applied and then checked, rather than applied and hoped for. Backups verified rather than merely taken. And the small changes that pile up handled while they are still small, before they turn into a project.
- Update
Core and plugins updated on a schedule, then checked rather than hoped for.
- Verify
Backups restored somewhere safe, so you know they work before you need them.
- Report
A short note each month: what changed, what broke, what I would do next.
- Updates
- Security
- Backups
- Fixes
- Small changes
- Reporting
Built withWordPressPluginsPHPMySQLAPIs
Therapists
Calm private-practice sites with booking that fits how you actually work.
A calm site for a private practice, with booking that fits how you actually work rather than a generic calendar bolted on. Written to be read rather than skimmed, quick on a phone, and careful with anything a client types into it.
- Talk
How you take clients now, and what you want to stop doing by hand.
- Build
A calm site, and booking that matches your real hours and your real limits.
- Settle
Live, listed properly, and adjusted once you have seen a fortnight of use.
- Booking
- Private practice
- Directories
- Accessibility
- Copy
- Privacy
Built withNext.jsWordPressAPIsStripe
Startups
One builder from landing page to product, with no suppliers to co-ordinate.
From the landing page that tests the idea to the product behind it, with one person doing both. No agency layer, no account manager, and no waiting on three suppliers who each need the others to finish first.
- Land
A page that can test the idea, up quickly, with the analytics to read it.
- Build
The product behind it, once there is a reason to build the product.
- Iterate
Changes next week rather than next quarter, because it is one person.
- Landing pages
- MVPs
- Dashboards
- Integrations
- Brand
- Iteration
Built withNext.jsReactSupabaseStripeAIAdobe
Start from what you have
I have an idea and nothing built yet
Prove it before you spend a quarter on it.
I have a WordPress site that needs to do more
Written properly, or worked on where it already is.
We run the business on spreadsheets and a diary
The process becomes the software, not the other way round.
We do by hand what software could be doing
Automated where it is safe to, and left alone where it is not.
I am starting a practice and booking by email
A calm site, and booking that fits how you actually work.
It is built and live, and nobody is looking after it
Somewhere fast to sit, and somebody watching it.


