Skip to content
Webitops

Product engineering studio

We build and operate complete web products.

Not just features. Domain modelling, billing, notifications, localisation, deployment, monitoring and search — the whole surface of a product that has to survive contact with real users. Three of ours are in production today.

Products we built and run

Each one is live, publicly reachable, and maintained by us. The case studies go into the engineering decisions rather than the feature list.

HoopoTrack

A tracking page for repair shops — customers follow their repair on a live link instead of phoning to ask.

Notification delivery is idempotent under retries and reserves its quota inside the same transaction that creates it.

Case study hoopotrack.com ↗

Nissab-Zakat

A free reference for the Islamic zakat threshold, computed daily from live metal prices across 11 languages and ~150 currencies.

Ships a real MCP server, an RFC 9727 API catalogue and llms.txt — machine consumers are a first-class audience, not an afterthought.

Case study nissab-zakat.com ↗

Portflossio

A portfolio tracker for Casablanca Stock Exchange investors, with weighted-average cost, capital-gains reporting and time travel.

Nothing derived is ever stored — positions, cash and P&L are recomputed from an append-only event log, and made fast by two cache counters.

Case study portflossio.com ↗

What we take on

Product engineering, end to end

Domain modelling through to production. The interesting problems are rarely the screens — they are the invariants underneath them, and what happens when a request fails halfway.

Multi-tenant SaaS

Tenancy boundaries, role and ability models, per-tenant quotas and metering, subscription lifecycle, and the audit trail that makes all of it defensible.

Payments and billing

Checkout, webhooks, plan changes, refunds, dunning, and the reconciliation work that keeps entitlements honest when a payment provider and your database disagree.

Notifications that survive failure

Email, WhatsApp and in-app delivery built to be idempotent under retries, with quota reservation, explicit terminal-vs-transient failure handling, and reconciliation for stuck sends.

Localisation and RTL

Genuinely multilingual products — up to eleven locales in production, including right-to-left Arabic, locale-negotiated routing and translated URL slugs rather than bolted-on string files.

Technical SEO and AI discoverability

Structured data, hreflang, programmatic landing pages and Core Web Vitals — plus the newer surface: MCP servers, llms.txt and well-known discovery documents that make a product legible to agents as well as crawlers.

Notes from the build

All notes →
  • Derive, don't store: a ledger you cannot corrupt

    Event sourcing discipline without an event-sourcing framework — what it buys, what it costs, and the honest test for whether your domain actually needs it.

  • Two-dimensional cache versioning

    Invalidating a graph of derived values with two counters instead of enumerating keys. A small technique that makes it structurally impossible to forget to invalidate something.

  • Making a public data site legible to AI agents

    MCP servers, llms.txt, RFC 9727 API catalogues and well-known discovery documents — what we actually shipped to make a public data service consumable by machines, and which parts earned their keep.

Have something that needs building properly?

We take a small number of engagements at a time. Tell us what you are building and what is in the way.

Get in touch