When Engineering Is Nearly Free: Building Clann

The project: Clann (Irish for family), a self-hosted family tree app. One Docker container, one SQLite file, your data on your own hardware.
The experiment: if AI does nearly all the engineering, what’s left of the product job?


The itch

I wanted a family tree that belonged to my family: private, self-owned, off the subscription treadmill, with my grandmother’s photos on my own hardware rather than someone else’s servers.

But honestly, the goal was never to build a rival to Gramps or MyHeritage. The real experiment was the blank canvas itself: could I take an idea from nothing to a usable, versioned, shippable product using Claude Code, with AI doing nearly all of the engineering? Clann was the perfect test subject, a real problem I personally cared about, small enough to finish, and rich enough (data modelling, file formats, self-hosting) to be a genuine trial rather than a toy.

Six releases later, v0.1 to v0.6, it’s a real product: an interactive tree you build in place, rich profiles with photos and life events, accounts and roles, and full GEDCOM import and export. And the experiment produced a clear answer about what the product job becomes.

Vibe coding: judgement is the whole job

The build itself was what’s affectionately called vibe coding: conversational, agentic development where Claude Code wrote the code, ran the app, screenshotted the UI to verify its own work, and handled the git commits and Docker releases.

What that experience teaches a product person is simple: when building is this cheap, the constraint moves entirely to judgement. You can have almost any feature you can describe, so the job becomes deciding which features matter and in what order, exactly the discipline we apply at work, now with nothing else to hide behind.

The clearest example was prioritising GEDCOM import early. Nobody starts a family tree from scratch; the people who care about this already have years of research locked in another tool. Import is what lets someone try Clann with their real tree in the first five minutes, so it’s the feature that drives adoption. A solo hobby project has no acquisition budget; the roadmap has to do the marketing.

War stories: what the AI didn’t catch

The login that only worked on my machine. Deployed anywhere other than localhost, logging in silently did nothing. A hardcoded ORIGIN made the framework’s cross-origin check reject the form POST, and the form enhancement swallowed the error, no message, no clue. The fix mattered beyond the bug: trust all origins (leaning on SameSite cookies for CSRF) and set the cookie’s Secure flag per request, so Clann just works over HTTP on a home LAN or HTTPS behind a proxy, with zero configuration. For a self-hosted product, “works on any host, no config” is not plumbing; it is the adoption experience.

The round trip that quietly destroyed everything. Export a tree, re-import it: every unit test passed, and every family relationship silently vanished. The escaping logic was corrupting GEDCOM’s internal pointers, and a default request-size limit was separately blocking photo-heavy imports. Only driving the real journey, exporting and re-importing like an actual user, exposed either one. Unit tests are the requirement’s opinion of itself; the round trip is the user’s.

Real-world data is nothing like the spec. GEDCOM files from the big platforms arrive with occupations crammed into name fields (“(Farmer) Oliver West”), “(Twin)” annotations, raw HTML in notes, dates like “BET 1887 AND 1888”, and photos referenced by expiring signed URLs that must be fetched at import time. The spec is clean; the ecosystem is not. The parser now separates roles into occupations, routes descriptors to notes, strips the HTML, and normalises the dates, and handling that mess gracefully is where most of the product’s real quality lives.

The common thread: AI is phenomenal at building code that satisfies the stated requirement. Deciding what to verify, and insisting on testing the journey rather than the function, remained stubbornly human work.

Honest reflections: what this means for us product people

Vibe coding is not a threat to product management; it is product management with the excuses removed. Building Clann, nobody was waiting on engineering capacity, so every gap in the product was a gap in my judgement: what I chose to build, what I chose to verify, what I chose to say no to.

Most companies will not have PMs shipping production code, and they do not need to. The transferable shift is validation speed. A PM with agentic tools can go from idea to working prototype in an evening, put it in front of real users, test the riskiest assumption, and kill the weak ideas before they ever consume an engineering sprint. Failing has never been this cheap.

And cheap failure changes what success looks like: less “did we ship the roadmap” and more “how fast did we learn whether the roadmap was right”. The import flow proven with a real GEDCOM file rather than a requirements doc. The deployment experience tested on an actual home server. The ideas that died as a weekend prototype instead of a quarter of engineering time.

The PMs who thrive in this era will not be the ones who write the best tickets. They will be the ones who test, validate, and fail quickly with nearly free engineering, and whose judgement about what to build is sharpened by having actually built it.

Clann is open source at github.com/thatguy-za/Clann, and my family’s tree now lives where it should: with my family.