QuandrixStart a project

Selected work

Things we made
that weren't there before.

A studio is only as good as what it ships. Regulated marketplaces, compliance engines, production storefronts — different industries, same job: take something that only existed in someone's head and make it real.

Applications

Systems with real complexity in them — spatial reasoning, regulatory compliance, money moving between parties, decisions that have to be right.

STS — A marketplace for nutrient credits

STSSpatial platform · Regulated marketplace2024 — present

A marketplace for nutrient credits

Housebuilding across whole river catchments stalls when developers can't prove nutrient neutrality. This is the platform that issues, matches and trades the credits that unblock it.

The difficulty is geographic, and it is not negotiable. A mitigation site only offsets a development if it sits in the right place — upstream of the water recycling centre, outside the protected site, inside a permitted zone — and every catchment defines that differently. The spatial engine encodes each catchment's rule set and walks the river network graph to settle compatibility in a single API call, transforming between British National Grid and WGS84 as it goes.

Around it sits a credit ledger that tracks remaining nitrogen and phosphate to two decimal places, with the accounting written so an allocation cannot be sold twice even when a purchase is pending and its invoice is not yet settled. Then the business itself: dashboards for planning authorities, developers and homeowners; staged payments and direct debit; generation of the legal agreements each sale depends on; audit logging throughout; and a scheduled job that returns lapsed allocations to stock overnight.

1,900+ commits · 121k lines · 156 migrations · 32 API route modules

Built with Next.js on Vercel · Hono API on Cloudflare Workers · Supabase Postgres with PostGIS · Drizzle · GoCardless

  • PostGIS
  • TypeScript
  • Cloudflare Workers
  • Payments
  • Marketplace
STS — One CRM, two businesses that never meet

STSOperations platform · CRM2025 — present

One CRM, two businesses that never meet

Credit supply and credit demand are different businesses with different lifecycles. The CRM runs both, and knows they never convert into one another.

Homeowners book a septic-tank survey; the upgrade generates nutrient credits. Separately, developers buy those credits to offset new-build load. A lead is not a booking and never becomes one — the two sides are linked only by the credits that flow between them, and modelling that honestly is what keeps the reporting truthful.

The system carries the whole operational lifecycle: booking, survey, report, signing, installation, building control. Fifty-eight edge functions handle eligibility checks, slot allocation, geocoding, district-council lookup, document generation, payment reconciliation, refunds, campaigns and the hand-off that pushes a signed homeowner through to the trading platform.

58 edge functions · 359 migrations

Built with React · TypeScript · Supabase Postgres with PostGIS · TOTP MFA · Twilio · Mapbox · SendGrid · Vercel behind Cloudflare

  • CRM
  • PostGIS
  • Supabase
  • Automation
  • MFA
STS — Where does the water actually go?

STSCivil engineering · Hydrological modelling2025 — present

Where does the water actually go?

Nutrient neutrality looks like paperwork and is really a civil engineering problem. Before you can claim a wastewater upgrade offsets anything, you have to prove where the discharge ends up.

A protected habitat is failing because of nitrogen and phosphorus, so no new home may add to the load. Replacing a failing septic system with a treatment plant removes load, and the difference is a tradeable credit. But only if the discharge from that property actually reaches the same water body — and a map will not tell you that. Water follows terrain, not boundaries.

So the engine models it. It reconstructs the ground surface from high-resolution elevation survey, conditions it hydrologically, computes flow direction cell by cell across the catchment, and walks downhill from the discharge point until it meets a modelled channel — establishing the real drainage path and its distance. That analysis is precomputed per catchment and answers in about three milliseconds at request time. Thirteen further spatial criteria are resolved around it: groundwater depth, source protection zones, designated sites, flood risk, discharge route and ground conditions.

Then the arithmetic, which differs by regulator — two regions, two published methodologies, each implemented and verified separately rather than approximated by a shared one. Ten categories of compliance rule run in deterministic order over the assembled report, each citing the clause it enforces, and any failure returns an error instead of a document. None of it issues unseen — the engine assembles the evidence and does the arithmetic, then an engineer reviews the report and signs it off before it reaches a council. One principle is wired through all of it: where an input cannot be affirmatively evidenced, resolve toward less credit, never more. Under-claiming is a rounding error. Over-claiming is a habitat.

14 spatial layers per assessment · 10 rule categories · ~3 ms flow trace · 2 regulatory regimes

Built with Node · TypeScript · D8 flow modelling over LiDAR-derived terrain · Playwright PDF rendering

  • Hydrology
  • GIS
  • Civil engineering
  • Compliance
STS — Finding the buyers before they know they're buying

STSData pipeline · Lead intelligence2026

Finding the buyers before they know they're buying

An end-to-end pipeline that reads council planning portals, works out which applications will need nutrient credits, and grades each one by where it sits in the buying journey.

Planning data is public but hostile — inconsistent portals, no common schema, and nothing that says whether an application needs credits. The pipeline scrapes Idox Public Access systems across multiple authorities, then applies a stage-aware grade: an application that is pending with a nutrient assessment submitted and no credit certificate on file needs credits now; one where the certificate already exists is won by someone else and is dropped, with the provider attributed where it can be identified.

The eligibility gate is deliberately fail-closed. An application only survives if it is overnight accommodation, confirmed inside a Natural England catchment, and still a live opportunity — anything unconfirmed is discarded rather than guessed at. Survivors are enriched with agent and applicant contacts and pushed straight into the CRM.

Built with Python · Playwright · Supabase · CRM integration

  • Scraping
  • Data pipeline
  • Enrichment
  • Python
Mili Mendez — The shop is the smallest part

Mili MendezOperating system for a food business2026

The shop is the smallest part

A one-person food business has to be a shop, a marketing department and a food-safety regime that satisfies an inspector. This is all three, sharing one system.

The storefront is what the public sees: bilingual, with bespoke commissions, cacao provenance and traceability, recipes, a blog and a partner portal. Behind it, a full back office runs products, orders, dispatch and printed shipping labels, gift vouchers, suppliers, CSV import, QR codes, an EPOS sync and a Meta commerce feed. Payments settle server-side through Stripe and PayPal, with prices, promotional codes, vouchers and stock all re-validated on the server, because anything the client can send, the client can change.

The CRM is a lifecycle engine rather than an address book. It cross-sells on what was actually bought, chases a review, nudges a reorder at fifty days and again at sixty, makes a final approach at a hundred and eighty, recovers abandoned baskets, catches a first-order anniversary, and flags who is worth a handwritten thank-you. Alongside it sit lifetime value, marketing reach and opt-in rates, so campaign decisions come off the data rather than a hunch.

Then the part that is genuinely unusual: a food-safety record system built to the shape of an SFBB/HACCP regime. Diary, cooking logs, cleaning schedules, supplier records and four-weekly reviews — with IoT thermometers polling the fridge and freezer and writing their own temperature logs against the statutory limits, so the evidence accumulates whether or not anyone remembers. When an inspector visits, one screen generates a printable pack for whatever date range they ask for. Three applications, one login, and thirty-six tables with row-level security on every one of them. It has been through a documented security audit, and it runs on hosting the business owns rather than rents — migrated off a no-code platform so nobody else holds the shop.

3 applications · 36 tables · 95 RLS policies · 34 edge functions

Built with React · TypeScript · Supabase Postgres · Stripe & PayPal · IoT temperature sensors · SendGrid · Anthropic API

  • E-commerce
  • CRM
  • Compliance
  • IoT
  • Payments
  • Security
milimendez.com
GrantFinder AI — Grant applications in minutes, not evenings

GrantFinder AIAI · Not-for-profit2026

Grant applications in minutes, not evenings

Charity funding is gated by admin stamina rather than merit. Search in plain English, then generate a complete application from what the organisation told you once.

A charity builds its profile a single time — the administrative facts that pre-fill form fields, and the narrative material the model draws on. Entering a charity number auto-enriches from the Charity Commission API and 360Giving, so most of it arrives already filled in. Search combines full-text and pgvector semantic matching across scraped opportunities, ranked by eligibility fit rather than keyword overlap.

The drafting rules are the interesting constraint: only verified profile facts, inferences flagged, funder language adapted to, specific numbers used — and nothing fabricated, no invented partnerships, no generic charity-speak. The model proposes and a human always approves. Around twenty funder scrapers keep the opportunity set current.

1,282 open opportunities tracked · 110k historical grants analysed · 322+ funders profiled

Built with React · Supabase with pgvector · Claude API · Playwright scrapers · 360Giving + Charity Commission APIs

  • LLM
  • RAG
  • Semantic search
  • pgvector
findmeagrant.co.uk
Shout Mate — Five facts, the moment the pager goes

Shout MateReal-time alerting · RNLI2026

Five facts, the moment the pager goes

When a lifeboat crew member is paged, they get an SMS and email with the tide, the wind and the light — fetched live, at that moment, for their station.

The alert email arrives in the crew member's inbox and is forwarded to an inbound parse webhook, which validates the signature, the envelope, the original sender and the subject before doing anything, then deduplicates and acknowledges immediately so the sender never waits. Tide events come from UKHO Admiralty, wind from Met Office land observations with an Open-Meteo model fallback, sun times computed locally. Every value is fetched per alert rather than cached, and the message states which period and which source each figure came from.

It is explicitly supplementary to existing RNLI paging and says so — never a tasking mechanism, never the only thing that tells someone about a shout. Knowing what a system must not be relied upon for is part of building it.

Built with TypeScript · SendGrid Inbound Parse · UKHO Admiralty · Met Office · Twilio

  • Real-time
  • Webhooks
  • Integrations
  • Safety-critical

Websites

Sites that have to earn trust in the first ten seconds — a counselling practice, a barristers' chambers, a village shop — and know exactly how much website that takes.

STS — Type a postcode, get a straight answer

STSWebsite · Eligibility & booking2026

Type a postcode, get a straight answer

Nutrient neutrality is confusing enough that every enquiry used to begin with a phone call. The site answers the first question itself, for any postcode in England, and takes the booking too.

Whether a property falls inside a nutrient neutrality catchment is a question with a real answer, and until you have it nothing else can happen. The checker resolves any English postcode against the catchment boundaries and the planning authority behind them, so a homeowner or a developer gets a straight answer in seconds instead of an email thread. It answers for the whole country even though STS only trade in two regions, because "you are affected, but not by us" is still the useful answer — and every out-of-area check quietly maps where demand is building.

Then it takes the work off the phone. A survey is booked on the site, and that booking is not an email into an inbox: it checks eligibility, resolves the district council, geocodes the address, takes a real slot from the calendar and confirms it, arriving in the CRM as a live job with the whole downstream lifecycle already waiting for it. The support agent on the same page handles the questions that would otherwise have been the call.

Built with Webflow front end · embedded eligibility checker · Supabase edge functions · CRM integration

  • Web design
  • Eligibility
  • Booking
  • Integrations
yoursts.co.uk
Veritas Counsel — Direct access to exceptional barristers

Veritas CounselWebsite · Legal services2026In build

Direct access to exceptional barristers

A membership practice offering direct access to the Bar, given a site with the composure that proposition requires.

Legal services sell on credibility before anything else. We are building the site around the practice's distinct offerings — the Corporate Protection Programme, corporate debt recovery, lifetime planning and membership — so each reads as a considered product rather than a list of services, and a prospective client can work out which one they need without a phone call.

  • Web design
  • Brand
  • Content structure
Therapy Barn — Making the first message easier to send

Therapy BarnWebsite · Counselling practice2026

Making the first message easier to send

An integrative counselling practice specialising in addiction. The whole design problem is that the people it helps most are the least likely to get in touch.

Someone considering counselling for a substance problem is often ambivalent about being there at all, and every extra step is a reason to close the tab. So the site is built to make first contact as small an act as possible: a free phone consultation rather than a booking form, no pricing wall, no account, and a clear account of what a first session is actually like before anyone has to commit to one.

Trust is the other half. The practice is online rather than local, so credibility can't come from a high street presence — it has to come from the page. Professional registrations, the counsellor's own background, and the specialism are all stated plainly and early, and the tone stays calm throughout. Nothing on the site pressures anyone, because pressure is exactly what would lose them.

  • Web design
  • Brand identity
  • Content
  • Accessibility
www.therapy-barn.co.uk
The Tuck Shop — The village shop, exactly as much website as it needs

The Tuck ShopWebsite · Identity2026

The village shop, exactly as much website as it needs

A village shop in Walberswick. The right answer here was not a storefront — it was opening hours you can trust and a feed that proves the door is open.

Somebody standing on Walberswick green with a phone wants three things: is it open, where is it, and what's in today. So that's the whole site — hours, address, phone, directions, a live Instagram feed doing the job a menu page would do badly, and a newsletter for seasonal news. No basket, no accounts, no ordering.

Deciding what not to build is the same skill as building it. This shop and the Mili Mendez system came out of the same studio in the same year; one needed three applications and ninety-five security policies, the other needed the opening hours to be right. Matching the engineering to the business is the job.

Built with Vite single-page build · Cloudflare · Behold Instagram feed

  • Web design
  • Brand identity
  • Restraint
thetuckshopwalberswick.co.uk

Specialised business support

Regulatory work and commercial strategy, for businesses that need someone who understands the technology and the market it sells into.

Norwich Finance TechnologyRegulatory · Open Banking2024 — present

Getting authorised, then building on it

AISP compliance for an Open Banking business — and now a product designed to run on the rails that authorisation opened up.

Operating as an Account Information Service Provider means satisfying a regulator before writing a line of production code: the risk management framework, operational and security risk assessments, vendor assessment, and the governance to evidence all of it on request. We did that compliance work, which is the difference between an Open Banking idea and an Open Banking business.

With the permissions in place, we are designing an internal product that runs on those rails — the same transaction data, put to work inside the business rather than sold as a service.

  • AISP
  • FCA compliance
  • Open Banking
  • Risk framework

MintusBusiness development · Fintech2024

Taking tokenisation to institutions

Commercial and go-to-market work for a platform turning fine art, property and renewable energy into investable financial products.

Deep technology is only worth what someone will buy. We worked the commercial side — institutional positioning for private banks, asset managers and fund administrators, the propositions and material that carry a tokenisation story into a room of people who price risk for a living, and the market analysis behind where to aim it.

Selling something genuinely novel means explaining the mechanism, not just the upside. Being able to speak to both is why this kind of work sits with us rather than with an agency.

  • Go-to-market
  • Institutional sales
  • Positioning
  • Fintech

Your project could
be the next one.

Start a project