Case study · martocci.dev
Martocci Family Heritage
A family history site with a members-only tree that updates itself from Ancestry exports, and an AI family historian that answers from the tree.
- Role
- Founder / Full-Stack Developer
- Years
- 2026 — now
- Status
- Live

The problem
Keeping a shared family tree accurate as new exports arrive, without duplicate people or silently overwritten facts, while keeping living relatives private.
What it does
- Public pages on the name, the Basilicata homeland and Italian emigration; every claim links to its source and carries a confidence label.
- Ancestor, descendant, fan and family charts, profiles with timelines, places and insights.
- A Claude-powered family historian with tools over the live tree, plus daily caps and cost tracking.
- Viewer, editor and owner roles, with suggestions from members.
How it's built
- One Cloudflare Worker serving static pages and the API, with D1 and a private R2 bucket for photos.
- Sign-in through Cloudflare Access with an emailed one-time code; the Worker re-verifies every token itself.
- Claude streamed with adaptive thinking and prompt caching; a nightly cron re-checks the whole tree.
Engineering decisions
- Weighted record matching on names (across Italian and English spellings), dates, places and relatives: merges happen automatically only above 88% with no conflicts, and a name match alone can never merge.
- Conflicting facts are kept side by side and flagged for review, never overwritten.
- Each import is one database transaction and can be undone; every edit is in a change log with undo.
- Tested against a real Ancestry export before launch, which cut false duplicate flags from 480 to 24.
- A strict content security policy and tests that guarantee the public API never exposes an individual.