I'm a founder and developer reading Information Management for Business at UCL, working between London and İstanbul.
Most of what I build has the same shape: an AI agent dropped into a real bottleneck in a real business, wired to real data, with a human still holding the pen on anything that leaves the building. Less demo, more Tuesday morning.
It all sits under one umbrella — Seam. Where systems meet.
Inbound RFQ email in. Catalogue-accurate quote out.
It reads an entire email thread in whatever language it arrived in, resolves each requested line against a ~1,500-SKU catalogue and 159 customers' negotiated contract prices, does the arithmetic (m², packs, boxes, cash vs. term, live central-bank FX), renders a branded PDF, and leaves the reply sitting in the inbox as a draft. A person always presses send.
The rule the whole system is built around: it will never invent a price. If a line has no catalogue price and no contract price, it gets named, marked pending, and handed to the sales team — no estimate, no interpolation from a similar product, no number derived from cost. Every prompt, schema and regression test in the repo exists to keep that sentence true.
- Multi-tenant on Supabase, per-tenant row-level security, fail-closed
- Four surfaces on one core: web console, Slack command, an MCP server so Claude can query the catalogue, a WeasyPrint PDF service
- A golden-case regression harness that has to go green before any prompt or model change ships
- Live on the sales inbox of a ~2,000-person nonwovens and microfibre manufacturer
| Project | What it is | Stage |
|---|---|---|
| Seam Vision | Fabric defect detection for textile production — YOLOv8 inference behind a Flask service, Next.js front end, Supabase for runs and reports. | in build |
| Misafir | An AI maître for restaurants and multi-venue groups. Reads reviews and guest messages, drafts replies in the guest's own language, runs the reservation lifecycle, sends the owner a weekly brief. Draft-first, human approval gate. | pilot talks |
| Seam Studio | Websites, and the systems behind them. | taking clients |
| RUNWITH | Matching runners to the right run club in Türkiye — built on a census of 200+ clubs. | early |
- Draft-first. Anything customer-facing gets composed by the agent and sent by a human. The approval gate is a feature, not scaffolding I'll remove later.
- The model doesn't get to make numbers up. Prices, quantities and totals come from the database or they don't exist. Prompts alone don't enforce that — schemas, deterministic maths in code, and regression tests do.
- Authorisation server-side, always. RLS on every table, never a user id read out of a request body, service-role keys nowhere near a browser.
- Multi-tenant from line one. Hard-coding the first customer is a rewrite you've agreed to do later.
- Ship it, then watch it. Every workflow has an error notifier and something that tells me when it stopped being true.
Next.js TypeScript Supabase / Postgres + RLS n8n Anthropic API MCP Python Flask WeasyPrint Railway Netlify YOLOv8
| Repo | What it is |
|---|---|
jarvis |
Personal ops dashboard — WHOOP, Garmin, training, nutrition, project status, plus an agent with tool access to all of it. Next.js PWA. |
seamstudio |
seam® Studio — the studio site. |
misafir |
Misafir — product site for the hospitality concierge. |
thenationaltrust |
Digital transformation strategy project — research, customer journey mapping, and an ideas evaluation tool. |
Koruser |
Koruser — premium surface protection. Product site. |
Most of the interesting work is in private repos. Happy to walk through any of it.

