Case study Family project

Genealogy

Applied AI · Graph model · Language processing

Rebuilding the family tree, from genealogy sites and handwritten archives spanning the 16th century to today. AI helps me trace ancestries and transcribe documents few people can still read with the naked eye.

Role
Design & dev
Stack
FastAPI · Jinja2 · NetworkX · YAML
Status
Active
The starting point

My grandfather had scribbled a rough start: about 80 people, his parents, his siblings, the line down to us.

The urge to digitize it, and go further. AI could help scan genealogy sites (Geneanet, FamilySearch) in my place. But I want to check what it finds, so I still need the archives themselves. Once the search legwork is done, the birth, marriage, and death records are easy to track down: I know where to look, what, who, and roughly when.

These records themselves get harder to read over time: paper degradation, cursive script, sometimes Latin. AI helps here too, transcribing and checking. Any fact found gets kept, even outside direct lineage: an occupation, a place, it can still come in handy.

The engineer's reflex stays the same: from data source to visualization, through deployment, with quality checks at every step. That's how 80 people became over 1,200 today.

Reading the handwriting

Past the tedious slog through genealogy sites, this is where AI has helped me the most. I feed it the archive images, and it gives me a line-by-line transcription of each handwritten record. It's on me to confirm or correct that transcription. The original spelling is always kept as written, as an image, and the proposed reading makes each individual card in the graph easier to check.

17th-century handwritten French marriage record, cursive script.

Le lundy treizième jour de janvier l'an mil six cens furent épousez François Gouaud et Gillette Gérard à Campbon

type: mariage
date: 13.01.1600
location: Campbon
persons:
  - francois-gouaud
  - gillette-gerard
A marriage record, early 17th century.

An uncertain reading is flagged as such, never shown with the same confidence as a sure one.

Hourglass view of the family tree, with a detailed person card: civil status, parents, union, children, and the historical period they lived through.
FIG. 01 1,224 people, 17 generations, from the 16th century to today. Every card places the person in their own era.
The graph, not the tree

A family "tree" always has one privileged root. Taken strictly, it leaves out uncles and aunts, cousins, nephews, and so on. That's not enough to represent what I want: the storage is a graph that can grow sideways.

The result: sibling groups and their children find their place, with no root forced on the graph. The "tree" you see on screen is just one walk through the graph from a chosen focus person, not the actual shape of the data.

Honestly, past a certain depth of ancestry, those sibling groups stop being interesting. Only the direct line stays in the graph.

Timeline overlaying each ancestor's lifespan with major events and political regimes of French history.
Every life set against its own century: reigns, revolutions, key dates, on the same timeline as the ancestors.
Map of the family's birthplaces, with a table ranking towns by number of births.
Birthplaces aggregated across centuries.
Chronological list of occupations held by ancestors: farmer, tanner, wool carder, tailor, farmhand...
Occupations, extracted record by record.
What never gets resolved silently
Two sources, two dates

A birth dated differently by two sources? Both dates stay on file, each with its own source and confidence level. A record read straight from the archives outweighs a crowdsourced profile on a genealogy site.

Original spelling kept

A barely legible date keeps its raw spelling. An inferred date is marked as medium confidence, with a note explaining the inference.

Not everyone gets a card

A remarriage with no descendants linked to the family doesn't get its own card, even with a genuine record in hand. The graph only carries what actually connects to someone.

By the numbers
80 → 1,200+
people in the graph
652
source records digitized
270
occupation mentions logged
1,187
places cited across the records
No public demo

The site stays private: the cards hold the civil status of living people who never consented to publication. No link to click here, just how it works and a few screenshots.

If the topic interests you, the architecture or the transcription approach, I'm happy to talk about it.

Get in touch →

References

  • [01]
    Geneanet

    Crowdsourced family trees and partner-digitized record collections. The starting point for spotting a lead before checking it against the primary record.

  • [02]
    FamilySearch

    Free, massive collection run by The Church of Jesus Christ of Latter-day Saints. Especially strong on older registers and branches outside France.

  • [03]
    France Archives

    The national portal aggregating digitized holdings from France's departmental archives: birth, marriage and death records, parish registers. The primary source for any French genealogist, town by town.