Profound
Software Engineer · Independent Contractor · Jan 2026 — Aug 2026
Profound is a multi-tenant headless CMS — schema builder, document and variant management, media library, routing engine, live preview. It is not my project. Six engineers build it, two of them own more of it than I do, and it existed before I arrived.
What follows is a log of the pieces I worked on, oldest first — it reads better as an arc than as a feed. I have tried to be precise about which parts were mine alone, which were shared, and which I only touched. Where I don't have a number to back a claim, I say so instead of rounding it up.
Feb 2026
Scoping the database by tenant
A 560-line migration adding website scoping to the RPC layer, in my second month.
PostgreSQL · PL/pgSQL · Multi-tenancy
Feb — Mar 2026
Becoming the person who writes the tests
Roughly 35 pull requests over five weeks, and the largest share of the test suite.
Vitest · TypeScript · Testing
Apr 2026
Three slow endpoints and a query that scanned every tenant
Sentry said 1.8s, 5.3s and 6.5s at p99. The worst one was also a tenancy bug.
PostgreSQL · PL/pgSQL · Sentry
Apr — May 2026
Two SSRF holes, an open postMessage and a CVE
Security work in a multi-tenant product, mostly found by reading code nobody was looking at.
Security · Next.js · TypeScript
May 2026
A scaffolding CLI that only scaffolded one framework
Making 'framework-agnostic' true at the point a developer first types a command.
TypeScript · Bun · TanStack Start · npm
May 2026
The Pages surface
The screen editors use to reason about site structure, and what it has to admit it doesn't know.
React · Next.js · RSC
May — Jun 2026
Editing overlays that don't know what framework they're on
In-context editing inside a cross-origin preview iframe, for any host frontend.
TypeScript · React · TanStack Start
Jun — Jul 2026
Moving a production education platform off Sanity
Dogfooding: migrating Profound University onto Profound's own CMS. Co-led.
Next.js · TypeScript · Turborepo
Jun — Aug 2026
Rebuilding a live media library without taking it down
A blue-green rewrite: new route, parallel component tree, incremental cutover.
React · Next.js · PostgreSQL
Jul 2026
Renaming a URL without breaking every page behind it
A confidence-scored resolver that reconnects orphaned content bindings when an editor restructures a route.
TypeScript · PostgreSQL · tRPC · Vitest
Aug 2026
Build integrity in a language I don't write
Tracking Cargo.lock and enforcing --locked in CI. Small, boring, worth it.
Rust · CI