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
Open martocci.dev
Martocci Family Heritage screenshot

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.