Selected work

Work that turns into infrastructure.

Client names stay private; the work is real. Most of what we ship runs daily in the background for years, built around how the people using it already think about the job. A few of those things, below.

Public data
Procurement signal from public noise.

Raw public procurement data is voluminous, inconsistent, and hard to act on. We built a pipeline that ingests, normalizes, and enriches it, then turns the result into clean monthly signals feeding a newsletter and a small dashboard product.

Data pipeline Newsletter Dashboard Tinybird
Type
Data product
Status
In production
Stack
Tinybird, Next.js, Supabase
Lead generation
A verified business list, made to spec.

A client needed 1,000–2,000 businesses in a region with verified physical addresses — to a quality bar most off-the-shelf lists miss. We built tiered sourcing that hit that bar inside the API cost limits, and delivered a clean, spec-ready dataset with provenance per row.

Lead generation Address verification Tiered sourcing Google Places
Type
Data sourcing
Status
Delivered
Stack
Google Places, Postgres, custom verifiers
Product research
Not surveys, customer conversations.

Static survey forms were slowing product research and burying the interesting signal. We designed an AI-moderated feedback experience that adapts per session, follows up on its own, and drops into the product where it matters — no separate tool to learn.

AI experience Embedded Adaptive Claude
Type
AI application
Status
Shipped
Stack
Claude, Next.js, Supabase
Hospitality
A POS that finally reports itself.

A restaurant group's daily sales, cost, and inventory reports were stuck behind a legacy POS with no API and pulled by hand every morning. We built a cloud automation that logs in, extracts the reports, and loads a warehouse — every day, untouched, with structured alerts when something looks off.

Browser automation Warehouse Daily run Alerting
Type
Workflow automation
Status
Running daily
Stack
Playwright, Render, Postgres
The stack

Tools we reach for.

We pick tools that hold up under a long-term, low-touch engagement. Boring is a feature.

Next.js Supabase (Postgres + RLS) Tinybird / ClickHouse Render Playwright Claude · LLMs Google Places Wise (invoicing) Cloudflare
Start a project

Have something you'd like to quietly automate?

Tell us what's noisy. We'll send back a scope.