Custom CRM and operations platforms — from the first inbound lead to the settled invoice.
Platforms for companies that outgrew their spreadsheets and then found that off-the-shelf software does not fit the way they actually work. Not a dashboard bolted onto a database — the system the whole company spends its day inside.
| Sales | lead qualification, deals, quotes with digital signing |
| Operations | projects, planning, field execution, logistics and stock |
| Finance | invoicing, payment reconciliation, VAT, collections |
| People | role-based access, HR, training |
| Outward-facing | customer portals, partner flows, marketing attribution |
Every role gets an interface built for the work it does, instead of one screen with the rest hidden behind permissions. I own these end to end: the domain modelling, the architecture, the database, the deploys — and the phone call when something breaks on a Saturday.
|
Disposable inboxes for developers. One mailbox per flow, with the one-time code and the action link pulled out for you — plus a deliverability read of the headers, which is usually the answer to why did this land in spam. brew install brentc22/tap/catchbox |
A free menu bar hider for macOS 27. The macOS 27 rewrite drew the menu bar as a single window and broke every tool in that category at once. The repository documents what changed, measured on a real machine rather than guessed at. brew install --cask brentc22/stash/stash |
Correctness before cleverness wherever money is involved. Pricing, VAT regimes and invoice totals are guarded by database-level invariants that run on a schedule and alert only when the state changes — an alarm that repeats every fifteen minutes gets dismissed, and is worthless from then on.
Access control is not something you bolt on afterwards. A public customer portal on the same database as internal finance data makes every row-level policy load-bearing. I assume a policy is broken until I have watched it refuse the request.
Every incident becomes a written rule, and the ones that matter become automated checks — a warning in prose only helps if you read it in the minute before you would have made the mistake.
Measured, not assumed. Before I claim something works, I run the check and read the output. That habit is the single biggest difference between a system you trust and one you hope about.
Most of my work lives in private client repositories, so the graph below tells the story rather better than the repository list does.
Belgium · open to interesting problems



