Skip to content
brorn
No. 010 · Personal life

my.family

A site that tells a family's history (tree, people, map and sources) built from old records read by AI, plus the AI workflow that does the research in those records.

Live
Period
2026-10 → now
Platforms
Web
Role
Solo: design, build, ship
Tech
Fig. 1 · Tree (made-up family)
Fig. 2 · Person page
Fig. 3 · Map

§1The problem

Archive records (civil certificates, parish books) are thousands of handwritten pages, hard to read and to cross-reference. There was no way to turn them into checked, navigable facts, each linked to its source image.

§2What I built

  • Web appFamily tree, people pages, a map of places and a review area (switched on only when needed).
  • ConverterStaged command-line pipeline: extract with AI, synthesise, build a data package, generate the cited media and import into the database with an atomic swap and backup.
  • Research workflowStep-by-step instructions that guide an AI agent through research in old records (Brazil, Portugal and Spain): interview, a folder per family, finding and downloading sources, index, page selection, double blind reading and reconciliation, group analysis and reports ready for the app.
  • Quality rulesEvery fact has a source (folder and image), certainty seals (documented, probable, hypothesis), namesakes linked only with two agreeing points, and living people only with what the user provides.

§3The hard parts

5 entries
  1. 01

    Double blind reading

    Two independent AI readings of the same page, followed by a reconciliation, to reduce handwriting reading errors.

  2. 02

    Parallel extraction pipeline

    With a derived data package that is reproducible from partial material and accepted reviews.

  3. 03

    Reconciling repeated people

    And rules to check dates and kinship.

  4. 04

    Map and images at scale

    MapLibre, and optimised images of only the cited pages, out of a large image collection.

  5. 05

    Safe import

    Atomic database swap, never overwriting without authorisation.

§4Result

pages indexed
~2,300
pages read twice, blind
1,027
generations in the tree
10
oldest record
1651

In use since October 2026, one family per instance. In the first case: ~2,300 pages indexed, 1,027 pages with double blind reading, and a tree of up to 10 generations, with records going back to 1651 and the oldest ancestor born in 1663.

§5Stack

  • Next.js 16
  • React 19
  • TypeScript 7
  • Tailwind 4
  • SQLite (better-sqlite3)
  • MapLibre GL
  • LLM via command-line agent (OAuth)
  • Python and TypeScript pipeline scripts
  • Own design system
  • pm2
  • Tailscale