6,385
messages delivered out of one clinic's system — and not one failed delivery in the log
COUNTED IN THE DATABASE
Two things I do. Pick the one you came for — the page rewrites itself, right down to the demo below.
Most businesses don't have a code problem. They have six tools, three spreadsheets, and a person copying data between them at 11pm. I design the layer that removes that person — login, data, workflows, alerts — and then I keep it running.
Marketing sites and content platforms built on Astro. This page is the sample: 100 across performance, accessibility, best practices and SEO — measured, not claimed.
Free, no pitch. If I'm not the right person, I'll say so on the call.
A real booking, moving through a system I built. Press the second button too — that one is the reason a client can stop checking whether it worked. The same page, built two ways. The difference is what a visitor sees while they wait — and what a search engine sees at all.
CLINIKO → GOHIGHLEVELThe second button is the one that matters. Most reminder systems fail exactly there — the appointment moves and yesterday’s promise still goes out. In this system that has been caught 1,816 times.
6,385
messages delivered out of one clinic's system — and not one failed delivery in the log
COUNTED IN THE DATABASE
1,816
reminders retired before they could send, because the appointment had already moved
WRONG MESSAGES PREVENTED
5 brands
restaurant storefronts running on one codebase, one deploy, five real kitchens
GROWKU · MULTI-TENANT
~80%
of one team's manual admin removed by putting five separate tools on one database
GROWKU · REPORTED BY THE TEAM
100
Lighthouse performance — on this page. Not a screenshot of someone else’s site.
MEASURED ON THIS BUILD
100
SEO — structure, metadata and crawlability, which is what AI search reads too
MEASURED ON THIS BUILD
100
accessibility — the same discipline that keeps the SEO score standing
MEASURED ON THIS BUILD
0 KB
of framework JavaScript. The interactive parts here are hand-written and tiny.
ASTRO · ISLANDS ONLY WHERE EARNED
The clinic you just traced, in plain terms — before I touched it, and after. The page you just watched load, in plain terms — the site you have, and the site after.
CLINIKO → GOHIGHLEVELBefore
A patient books in Cliniko. Someone then opens the CRM and types the same details in again, so reminders and follow-ups can go out.
After
A scheduled run reads both Cliniko accounts, resolves the patient to one timeline by email, and drives the CRM from what actually happened.
6,385 SENT · 0 FAILED · 1,816 STOPPED
The site you have
Heavy JavaScript, everything rendered in the browser, images the size of the page itself. It looks fine on the developer's laptop and loses visitors on a phone.
The site after
Static HTML first, interactive parts loaded only where they are actually needed, images sized and modern-format, structured data in place. The score is a build gate, not a launch-day screenshot.
100 / 100 / 100 / 100 LIGHTHOUSE
Every box is something I have actually built. Pick one. A fast site in front of a broken back office only makes the mess visible faster. Pick any box.
InteractiveA system I'd build for you
← pick a box
Architecture, build, and the part nobody advertises — keeping them alive afterwards.
MY OWN CLIENTHEALTHCARE
The system traced at the top of this page
Clinic bookings become CRM contacts, appointments and message sequences on their own — matched on email across two Cliniko accounts so a returning patient is never a new one, and driven by 67 rules the client owns rather than a product they rent.
6,385 MESSAGES, NONE FAILED
EMPLOYED · GROWKULED THE TEAM
Supabase, n8n, GoHighLevel, Telegram, OpenAI
Five tools behaving as one product. The first fix was identity — one account per person — because automation built on top of four unlinked records does the right thing to the wrong person, at scale.
~80% OF THE MANUAL WORK GONE
EMPLOYED · GROWKU5 TENANTS
One codebase, five storefronts, real kitchens
Ordinary online shops finish at payment. This one isn't finished until a ticket prints in a kitchen — so every order is checked against five integrity rules before payment is taken, and anything suspect reaches a manager on Slack with the order attached.
5 BRANDS · ONE CODEBASE
The part a diagram can't show, told through things that actually happened.
At Growku I lead the engineering team — splitting the work, reviewing it, and being the one accountable when it ships.
TalentStream went from a first phone call to a delivered platform with no project manager in between. I scoped it, priced it and shipped it.
At Yalla Cooperative I built the shared component system with the design team, so the same button stopped being renegotiated every sprint.
Across six client projects in Amsterdam, most of the job was making non-technical stakeholders comfortable with a technical decision.
At uPet I built automations that let marketing run their own campaigns without an engineer. Fewer tickets for me, faster for them.
Documentation and a diagram come with the work, in Arabic or English, so the next person is not dependent on a call with me.
Used on production systems with real customers on them.
Thirty minutes, free, and an honest answer about whether I am the right person for it. Thirty minutes, free, and a straight answer about whether a rebuild is worth it or whether a few fixes would do.