The agentic Christmas gift: a family tree

In two weeks my family tree grew from a typed family book and a handwritten war diary to more than 2,500 people, the oldest born around 1515. Based on real evidence: church books, civil records, newspapers & estate inventories.

Treat your family tree like a product and anyone can build one. Collect what the family has, turn every open question into a ticket, research one person at a time, and let tests and a second model catch the mistakes. The agents do the reading. You make the calls.

Old photo of a very tall man in a hat and waistcoat holding the hand of a tiny child in braces.
c. 1515Oldest ancestor
98 yearsThe longest life
69 yearsThe longest marriage
21 childrenThe most for one parent
14 years oldThe youngest parent at a birth
491 placesOn the family map
Old photo of an elderly woman scowling at the camera, between a younger woman in a headscarf and an old man with a moustache.

Skip the explainers and get started?Turn to the prompt

Good data gets you further back in history

Start with what only the family has. For me that was the Bakker family book, my grandfather Julien’s diary from his forced labour in 1944, a hand-drawn tree and a stack of prayer cards. The best source was audio: years ago my sister interviewed our grandmother and recorded it. Those recordings hold names, places and stories no archive has.

Put all sorts of clippings, screenshots, video, audio, whatever you have, in one folder.

One Question at a Time

I instruct my agents to go one research question at a time, each with their own ticket: who were Adrianus’s parents, what happened to Julien in 1944, who owned which farm in Wachtebeke. The agent searches, downloads what it finds, reads it and writes a research note with a link for every fact. Fifty-seven tickets and 94 research notes later, the tree is mostly the sum of those notes.

The notes follow four rules:

  1. Only a fact with a source goes into the tree.
  2. Every fact gets a label: proven, probable, uncertain or family story.
  3. When sources disagree, both versions stay. One death act calls a man Guilielmus, his son’s baptism says Philippus. We show both.
  4. A match on name and birth year is not enough. At least two more facts must agree, such as a parent, a partner or a place. I hope this avoids the archives handing me nine false ancestors again.

The Pipelines

A handwritten register page from the Bruges archives, with columns of dates and names from the 1570s.

I am happy people wrote things down by hand back in the day, but for this ancestry project, I automated things. This is how the family tree grew:

  1. Search. For every person in the tree, agents look for records in online archives (e.g. Open Archives, FamilySearch, the state archives) and for newspaper mentions, only within that person’s lifetime.
  2. Sort. Cheap, fast models go through the hundreds of hits first and throw out the namesakes, so the expensive model only reads what is left.
  3. Read. Scans of old church books are downloaded page by page and read by several sub-agents at once, each with its own pages.
  4. Match. A record only counts as theirs when name plus exact date, or name plus both parents, agree. Leads from other people’s trees come in marked uncertain, never as fact.
  5. Decide. The agent labels every find by how strong the evidence is. Strong matches go into the tree on their own, each with its source and label.
  6. Escalate. Only the doubtful ones come to me: two records that disagree, a match that rests on one fact, a change to what the family book says. I answer those in one go, and the rest stays on a maybe list.
  7. Publish. The tests run, the site rebuilds, and the new ancestor, date or newspaper story appears on the person’s page with its source underneath.

The Tests

A family tree breaks like software: one wrong link and a woman becomes her own grandmother. Agents make that kind of mistake fast and with confidence, so the project has about a hundred small tests that run before every update. One of them found a marriage dated two years before the groom was born: a typo in the family book, invisible to anyone reading it, obvious to a test.

What They Check

  1. The tree holds together. Parent and child links agree both ways, nobody is linked to themselves, no parent is impossibly young or old, and no notes or question marks crept into names.
  2. Every fact has proof. A marriage record only counts when the couple are the groom and the bride. A record with a different mother is not a match, however well the rest fits. Spelling variants are not contradictions. A date range from someone else’s tree never turns into an exact date.
  3. Leads stay leads. Everything taken from other people’s trees is marked uncertain and links back to where it came from, and imports stop a fixed number of generations up.
  4. The map is right. Every place has plausible coordinates, and every pin on the map belongs to the person it is shown for.
  5. Private stays private. Without the family password nothing loads, a wrong password gets nothing, and an old password stops working.
  6. The site works. Playwright browser tests click through the tree, the map, the person pages, the fun facts and the family contributions. After every deploy, a live check logs in on the real address.
  7. The extras stay right. Family words like “second cousin once removed” come out right in both languages, the diary timeline covers every day of the war year, and the export to other genealogy sites keeps every person, link and source.

How to Set Them Up

Start with a rules file the agent reads at the start of every session. Mine says what a person record looks like, which labels exist, how to treat living people, how to cite a source and which archives allow agents. Every lesson learned becomes a rule, so things go more smoothly later.

Then let the tests grow out of mistakes, not out of a plan. Each time something wrong slips through, ask the agent: “Write a test that would have caught this, show me it fails, then fix it.” A test I have never seen fail proves nothing. When a review caught the fun facts page calling two siblings half-siblings just because one parent was unknown, the fix came with a test that keeps it from coming back. Most of my tests check the real family data itself. The tricky cases get small made-up families, and a few known answers from my own tree act as a reference: a record I know is right, and one that looks right but has the wrong mother. Before anything goes online, the agent runs them all, and the rules file says so.

Passing It On

None of this lives in my head. It lives in four places: the rules file, a research checklist with every open question, the research notes with a source for every fact, and the tests. A new agent session starts from those files and picks up where the last one stopped. A cousin could do the same, and anyone who doubts a date can follow it back to the record it came from.

Let the Agent Go Sideways

Newspaper notice from 1925 headed Waarschuwing, next to its English translation: Warning to René Zegers, Stationsstraat, at Café Cambrines, dealer or agent in the farmers' manure pits, war refugee from Dendermonde: that he must leave my daughter, Judith Bakker, in peace and no longer follow at her heels. If not, he will feel the consequences from me as her father. Hartog Bakker, living at the Wallpaper Shop, Steenkamplaan. Below: April 1925, three weeks later, they announced their marriage.

The best finds came from searching for something other than the name. Newspapers turned up a shop, a bankruptcy and a father warning his daughter’s suitor in print. Estate inventories from before 1796 list who owned which field when someone died. For people who were deported, searching by transport instead of by name finds papers no name search reaches. Ask the agent outright where else this person could show up. It has read more old text than any of us.

Sources

Show sources

What worked for my lines in Belgium, the Netherlands and Zeeland:

  • Open Archives: Belgian and Dutch civil records up to about 1900
  • Agatha (Belgian State Archives): parish baptisms, marriages and burials with scans, some back to the early 1600s
  • Archiefbank Brugge: Bruges civil records and population registers
  • Familiekunde Vlaanderen: indexes and estate inventories
  • Zeeuws Archief: Zeeland records and inheritance declarations
  • Delpher, BelgicaPress and ZB Krantenbank Zeeland: Dutch, Belgian and Zeeland newspapers
  • hetarchief.be: First World War papers
  • Joods Monument and Kazerne Dossin: Shoah victims from the Netherlands and Belgium
  • FamilySearch and Geneanet: other people’s trees, as leads only
  • Local city and state archives, by email

For Germany, Poland and Shoah research:

  • Arolsen Archives and the Yad Vashem names database (both searchable by an agent)
  • Bundesarchiv Gedenkbuch and the USHMM victims database
  • The Auschwitz-Birkenau Museum archive, on request, with far more than it has online
  • JRI-Poland and szukajwarchiwach.gov.pl for Polish civil records
  • Old address books and newspaper archives
  • Local city, district and state archives

For the United States:

  • FamilySearch: free US censuses, births, marriages and deaths, with a free account
  • Find a Grave: gravestones with dates, often with photos and family links
  • Chronicling America (Library of Congress): free historical newspapers
  • National Archives (NARA): censuses up to 1950, immigration, naturalisation and military records
  • Ellis Island passenger records: arrivals in New York, 1892 to 1924
  • State and county archives: vital records, often by request

For England and Wales:

  • FreeBMD: the index of births, marriages and deaths since 1837
  • FreeREG and FreeCEN: volunteer transcriptions of parish registers and censuses
  • The National Archives: wills, military and other government records
  • County record offices: the original parish registers

The Prompt

This sets up the whole way of working in one go. Open your agent of choice in the folder with everything the family has, fill in the three brackets and paste it. After that, every session starts with “Continue the family research” or a new question.

Research my family and turn it into a private family website. Family names: [FAMILY NAMES]. Places: [TOWNS AND COUNTRIES]. Everything the family has is in this folder.

I'm not a programmer. Explain each step in plain words, use free tools, and ask me before anything costs money, needs an account or goes online.

FIRST SESSION
1. Read everything. Transcribe recordings on my computer (Whisper is free). Every name, date, place and event becomes a fact labelled "family story" until a record backs it.
2. Build a source map: run one test search in each archive below that fits our places, plus any others you find. Note what it covers, how to reach it (API, website, my login, reading room, email), whether robots.txt allows agents, and how to cite a record.
3. Build a first version of the site from https://github.com/waldo-van-der-code/ancestry-demo with our data, and show me how to open it.
4. Plan backwards from [DATE]: which questions first, and when research stops for a week of polish.
5. Give me ten questions for the oldest relative I can reach.

SOURCES (worked for someone else, check them)
Belgium and the Netherlands:
- Open Archives (openarch.nl): civil records up to about 1900, free API. Start here.
- Agatha (agatha.arch.be): parish registers, some from the early 1600s. Scans need a free login; download the IIIF page images. Check the 19th-century index volumes first. search.arch.be is closed.
- Delpher: Dutch newspapers, free API.
- BelgicaPress: Belgian newspapers, after 1919 reading room only.
- hetarchief.be: First World War papers. Blocks scripts, use my browser.
- Zeeuws Archief: inheritance declarations after 1818. Use Download for full resolution.
- Familiekunde Vlaanderen: estate inventories before 1796, free PDFs.
- Archiefbank Brugge: Bruges civil records and population registers, free login.
- Joods Monument (captcha, by hand only) and Kazerne Dossin: Shoah victims.
Germany, Poland, Shoah: Arolsen Archives, Yad Vashem names database, Bundesarchiv Gedenkbuch, USHMM, JRI-Poland, szukajwarchiwach.gov.pl, old address books.
United States: FamilySearch, Find a Grave, Chronicling America, National Archives (NARA), Ellis Island passenger records.
England and Wales: FreeBMD, FreeREG, FreeCEN, The National Archives, county record offices.
Everywhere: trees on FamilySearch and Geneanet, as leads only.

HOW TO SEARCH
- Civil records first, church books before about 1800, then newspapers, estate papers and address books. For people who were deported: the transport lists, not only the name.
- Search each person only within their lifetime and places. For common names, search by the parents.
- When a search works for one person, script it for everyone and cache every answer.
- Let a cheap, fast model sort big piles of hits and drop namesakes, then check every find against the full text. The cheap model gets places wrong.
- Read scans from downloaded files with helper agents in parallel, each with its own pages.
- Online trees hold false matches and duplicates. Read the record they cite first.
- If a site blocks agents (robots.txt, captcha, "checking your browser"), never work around it. Tell me, and I search there or contact them.
- When online sources run out, draft an email to the archive for me to send.
- Ask yourself where else a person could show up: shops, bankruptcies, public notices.

RULES (keep them in CLAUDE.md or AGENTS.md with the source map, read them every session, add each lesson the day we learn it)
- One data file for the tree. Every fact has a source and a label: proven, probable, uncertain or family story.
- A record is ours only if two facts besides name and birth year agree: a parent, a partner or a place.
- When sources disagree, keep both. Never guess or invent. Weak matches go on a maybe list.
- Old handwriting: write down what you read, mark every unsure word, never fill a gap. Hard pages get a second, independent reading.
- Add strong finds yourself. Ask me only about doubtful ones and changes to the family's own papers.
- Keep a list of open questions and one note per question. One question per session, ending with what we found and what's next.
- Before every rebuild, run checks: parent and child links agree both ways, nobody is their own ancestor, no parent under 14 or over 60 at a birth, every fact has a source. When I catch a mistake, first add a check that catches it, show me it fails, then fix it.

THE SITE
- The tree on the home page, a page per person with the source under each fact, a map of where people were born, lived and died, a story page per place or period, and a fun facts page.
- Online only when I say so: free hosting, one family password checked by the host before anything is sent, hidden from search engines. Show me a wrong and the right password on the real address. Upload as one archive and delete old versions, free plans limit both.
- At the end: a printable card with a QR code and the password, and a simple way for relatives to add what they remember.

Start with the first session.

The Site Grows Along

The family site went live the first day, behind a password. It is motivating to see it come to life, fun to see it grow and brings creativity in what questions to ask or visualizations to explore. Of course it is password-secured, as a family tree often holds every bank’s security question. Want to see one? Click through this demo site with a made-up family, and copy it as a starting point for your own.

A cream Christmas card lying on a dark green envelope. It reads: Merry Christmas. This year's present has 225 people in it. Scan to meet the ones you come from. Below is a QR code, the handwritten line password: lorem-ipsum, and the signature With love, Aliqua.

At Christmas my family gets a card with a QR code and that password.

Learn More

Others have been at this longer than I have. Good places to keep going: