Cases
We publish cases when the client signs off.
Most of what we build sits behind NDAs, logins or internal use. We'd rather show the work concretely in a conversation than build a logo wall full of distant half-stories.
Why this looks the way it does
A short, honest explanation.
Most consultancy sites have a section with fancy logos and two-line "results" that can't be verified. We've chosen not to — for two reasons.
First: a lot of what we build is internal tooling, customer-facing SaaS behind login, or infrastructure nobody sees. Putting a logo on our site because we touched three files in 2023 would be misleading. Cases that genuinely deserve a front-page mention need sharp numbers we can stand behind, and the client must approve it publicly.
Second: our business doesn't depend on a marketing page convincing you. It depends on us, in a discovery conversation, showing concrete work, talking about your challenges, and letting you talk to one or two of the clients we've worked with. That's a better buying process.
What we show in a conversation
Concretely — without marketing glaze.
30-60 minutes, NDA if needed, and you'll get a much clearer picture of whether we're the right match than any logo wall would give you.
Live demo of systems we've built
We show working SaaS platforms, customer portals or infrastructure — not screenshots. With permission from the client or on our own systems.
Anonymised architecture diagrams
If an NDA prevents us from showing a specific client, we can show the technical architecture without named data — that shows how we think, not who we've built for.
Code samples and pull requests
Concrete examples of how we solve the problem you're facing — multi-tenant patterns, billing flows, RAG retrievers, whatever it is. Best for showing depth and taste.
Reference call with an existing client
On request we can put you in touch with a client at a similar stage or industry. We ask first; you get an honest impression of what working with us is like.
An honest assessment of whether we're the right match
If your problem sits outside our expertise, or you'd be better served by another team, we say so in the conversation — not after a quarter.
The kind of problems we keep coming back to
Patterns we've seen from several angles.
This describes types of work we're good at — not a track-record tally. But it gives you an idea of where our weight sits.
- 01
B2B SaaS hitting multi-tenant pain
- The problem
- A SaaS product grows past the first customers — suddenly someone's asking about SSO, audit logs, organisations-within-organisations or data residency. The original architecture was built for one user at a time.
- Our approach
- We do a quiet refactor toward multi-tenant isolation (RLS in Postgres, organisation scope on every query), introduce SSO via WorkOS or similar, and tighten the auth model without breaking existing customers.
- 02
Marketing site stuck in a heavy CMS
- The problem
- The site sits in WordPress, Drupal or a legacy headless CMS, every update is a struggle, and the Lighthouse score is red. Marketing wants speed; developers want control.
- Our approach
- We move to Next.js on Vercel or Cloudflare with a headless CMS marketing can write in (Sanity, Payload, or markdown files), build a component library matching brand, and migrate in stages with 301s in place.
- 03
Cloud bill running away
- The problem
- The monthly AWS or GCP bill has doubled in six months, nobody knows quite why, and there are no budget alarms. Tagging is sporadic, and nobody dares turn anything off for fear of breaking something important.
- Our approach
- We do a cost analysis, identify the top-5 expenses, fix tagging, introduce budget alarms, and propose concrete migration paths (e.g. always-on EC2 to serverless, or self-managed WAF to Cloudflare). Typically 20–40% savings without functional loss.
- 04
AI prototype that needs to ship to production
- The problem
- Someone on the team built an LLM prototype in a notebook that works — but nobody knows how it becomes a service with rate limiting, evaluation, observability and a price strategy that doesn't eat the margin.
- Our approach
- We rebuild it as a typed service (TypeScript or Python), add caching, evals, fallback models and structured outputs, and put it behind an API gateway with quotas and budget alerts. Including prompt versioning so you can roll back.
- 05
Internal tool that became business-critical
- The problem
- A Python script or a Notion-based workflow has grown into the backbone of an entire business process. Now the person who knows where the buttons are has gone on holiday — and something needs to save it.
- Our approach
- We build a proper app around the process — typically Next.js + Postgres + simple auth — without trying to automate everything at once. We take it piece by piece, and leave the rest in the script until it's ready.
- 06
Migration from legacy infrastructure
- The problem
- A system has run for 8 years on a hosted legacy stack. The vendor is winding down the product, or prices have risen, or it just can't take more load.
- Our approach
- We do an architecture assessment, categorise what can be moved 1:1 and what needs to be rebuilt, and lay out a staged migration plan with rollback. Cloudflare and Vercel are often the landing; sometimes AWS for components with specific requirements.
References
On request, we can put you in touch.
We have a handful of clients happy to take a short call with potential new clients about what working with us is like. We ask first, and we pick the one closest to your stage or industry.
Mention it when we talk — it's typically a good idea after the discovery call, where we've figured out whether we're the right match. The reference call is usually the last thing that closes a decision, and it should keep being that.
Let's talk concretely
The best case is the one we walk you through live.
Drop us a few lines about what you're facing. We'll honestly assess whether it's something for us, and if it is, we'll show concrete work that resembles it.