Most of this sits behind client logins, so I can describe it but not show it. Names are withheld where the contract requires. I can walk you through any of it on a call, including a reference.
45
systems built since 2013
8
countries
5
years as one client's whole software team
37
legislatures parsed into one model
Where the work is
8 countries here, holding the 29 engagements I can place and name. Some are one system; the NGO estate alone is five years of them.
Hover a marker to preview it. Click to keep it open while you read.
International NGO · 2021 to now
I am their software team.
A membership organisation with offices in more than one country, a board it answers to, and corporate members who expect to be served. For five years I have built and run its internal software estate, effectively as its in-house engineering function.
What I built
Staff travel authorisation with a supervisor, executive and exception approval chain. Annual performance reviews for all staff. An events system that builds the briefing packs, attendee lists and confirmation letters for each programme. Member portals. The press digest tool.
The harder part
Connected to their HR system and membership database so staff and member records are never retyped. Word and Excel deliverables to their exact templates. Then a full migration off a dead content system, carrying twelve years of records with a written account of every one.
Why it lasted
Nothing was built without the person who does the work in the room. Approval chains match how the organisation actually escalates, not an idealised version drawn in a first meeting.
Document generation in the demo system, not a client's. The organisation, the people and every value on it are invented, which the strip along the top says as well. The point is the relationship between the two columns: four of the seven fields resolve from the membership database, the HR system or finance, so none of them was typed into the document and a correction made once carries into every pack on the next generation.
Five years, still running on my code
Legislative intelligence platform · United States
A national data platform, built essentially alone.
Advocacy organisations need to know the moment a bill that affects them moves. I built the platform that tells them, and I wrote almost all of it.
What I built
The database, the API, the interface, and a separate document-parsing service that reads each state legislature's own publishing format.
The harder part
Thirty-seven jurisdictions, four of them reconciled label by label: 123 status labels mapped into one model, because no two states call the same stage the same thing. The other thirty-three run on a standard template until somebody has watched what that legislature actually publishes.
Built to survive
Legislatures change their formats without notice, so the parsers had to be replaceable one state at a time without taking the platform down.
A demo, and the bill is invented, which the strip along the top says so a cropped copy still says it. What is real is the pairing in the first line. The state publishes 3rd Reading, Passed, Referred to Senate. The platform shows Passed House, one of ten internal stages that every jurisdiction's own wording maps onto. Reconciling those vocabularies is the work, and this is what it buys: one progress bar that means the same thing everywhere.
Live, public product
University · Philippines · 2015 to 2024
Seven systems, and I was on their payroll.
Not a supplier to an institution but an employee inside one, building its internal systems from an office in the same building as the people who used them.
What I built
Budgets and expenditures across every unit and office. Purchasing and custodian inventory for the whole institution. Tuition payment by card, grade school through college. Student monitoring with OJT hours logged against each student. Staff requests routed through HR and Finance approval. Mail tracking for two separate offices.
The harder part
Every one of these touched money, records or both, inside an institution that answers to a board and to regulators. The tuition system took card payments from parents, which meant it had to be right on the first enrolment rather than iterated towards over a term.
What it taught me
That the process described in a meeting and the process people run are two different things. Urgent staff requests went straight to one person in Finance, because the official route took four days. Nobody mentioned it, because from the inside it did not feel like part of the process.
The budget screen from the demo system, not from a client. Every figure on it is invented. The shape is what the seven university systems had in common: money moving inside an institution that answers to a board.
Seven systems, nine years on staff
Spare-parts retailer · Germany
Find the part, or the sale is gone.
A catalogue of thousands of parts, where a customer who cannot find what they need in a few seconds concludes you do not stock it.
What I built
Real-time search across the whole catalogue by name, brand or part code, with results narrowing as you type and stock shown live. An API and a front end deployed into the client’s own region, so the search is fast where their customers actually are.
The harder part
Catalogues accumulate. The same manufacturer gets entered differently by different people over years, and part codes are written with and without separators. Search that only matches what was typed returns nothing to a customer who typed the right thing.
Why it is commercial
A search that fails is indistinguishable from not carrying the item. The cost is not a support ticket. It is an order that goes somewhere else and never appears in any report you will read.
The search returning results as you type, prices redacted
Caption: what this shows, and what has been redacted.
Live, with the parts ERP behind it
Lending · Singapore
The application arrives online, not across a counter.
Loan officers tracking client applications from registration through to a decision, with the client applying online instead of on paper in a branch.
What I built
Client registration and the online application, then the officer’s side of it: the queue, the state of every application in flight, and a record of what was decided, by whom, and when.
The harder part
Lending has a required sequence, and the system has to make the correct path the easy one without making an exception impossible. Exceptions are where the judgement lives, and a system that forbids them gets worked around within a month.
What it is not
I have not worked inside a BSP-supervised institution. If your compliance requirements go past what this was, I would rather say so on the call than find out together in month three.
The officer queue from the demo system. No applicant appears on it and every reference is invented, because a real screen here is regulated personal financial data and no amount of redaction makes it publishable. What is real is the shape: a required sequence, how long each application has sat where it is, and an exception that still runs through the sequence rather than around it.
Delivered, 2016 to 2017
Government department, Philippines · regional office
A paper process, across offices.
Document routing and tracking for a national labour department's regional operation. Every document, every office, every stage, with a record of who held it and for how long.
The point was public accountability. When a citizen's paperwork stalls, somebody has to be able to say where it stopped.
Government work sets the standard for the rest: if an audit trail satisfies a public office, it satisfies a board.
Delivered, 2020 to 2022
Two complete CRMs · United States
A company's whole operation, replaced.
Window furnishings retailer
Quote to install date
Quote through measurement, fabric catalogue, pricing rules, production stages and install date. Their entire commercial process, in one system, replacing a chain of spreadsheets and email threads.
A quote or fabric catalogue screen, pricing redacted
Caption: what this shows, and what has been redacted.
Storm-damage restoration contractor
Crews, dispatch and canvassing
Multi-tenant job management, crew dispatch and door-to-door canvassing, working on a phone away from the office and still talking to the tools the back office already ran on.
A demo tenant, not a live one, and every address on it is redacted. What is real is the shape a dispatcher is looking at: four crews across one day, one of them two hours over shift while another sits mostly free, four jobs still unassigned, and the same system on a crew phone that keeps working when the signal does not.
Both live, both sole-authored
Also built
Spare-parts ERP
Inventory batches, landed-cost tracking and barcode label printing, with product search across a large catalogue.
Valet storage platform
Booking, collection and return, with card and e-wallet payments.
Startup products, taken live
Founders with an idea and no technical lead, guided from decisions through build to a product in front of real users.
EV charging marketplace
Peer-to-peer listings and bookings between charger owners and drivers.
Wedding-planning SaaS
My own product, with a live AI assistant. Where I try things before I put them near a client.
The migration figures, record by record
Including what did not come across, and why. That table is on the detail page.
I can put you in touch with someone I have delivered for: a chief operating officer, a product owner, or an information-technology officer at a government agency. Names on a call, not on a page.