Long read
What the kinship engine really does.
How we compute relationship terms so that uncle-niece marriages, half-siblings, and illegitimate children all come out named correctly — and why this isn't a detail but the core.
„What do you actually call your father's cousin?" — that question is the smallest version of a problem as old as family itself. Relationship terms aren't a database column; they are the vocabulary of a connection. Named wrongly, a „great-uncle" becomes a stranger.
The kinship engine running behind Kinverse has one job: to correctly name every person in a family tree relative to every other person — across every generation, through half- and step-branches, with maternal and paternal lines kept apart, in-law or blood, once or multiple times removed.
Sounds banal. It isn't. What we describe here exists in no other family-tree tool at this depth.
What the engine solves
Most tools can manage „father", „mother", „brother", „sister" — the inner circle. As soon as distance grows, they give up or show „related".
Kinverse instead computes the exact path between two people — how many generations up to the common ancestor, how many down again to the target person, and whether the lines connect biologically or only through marriage. From this path the correct term falls out: „great-aunt twice removed, paternal side", „step-cousin", „great-niece by marriage".
Under the hood: the engine works on a directed graph with two edge types — PARENT_OF (blood) and MARRIED_TO (in-law). It finds the shortest mixed path between two nodes, classifies the edge types, counts generation steps, and maps the result into the relationship vocabulary of the language.
What happens when it gets complicated
The Habsburg demo is the best stress test we know. Four examples that show why a real engine isn't a luxury:
Uncle-niece marriage: Philip II of Habsburg married his niece Anna in 1570 — daughter of his brother Maximilian II. They had children together. In any classic family tree, a single node ends up being „father", „uncle" and „father-in-law" to the same person at the same time. The engine separates those three roles cleanly and names each correctly.
Cousin-cousin marriage: Maximilian II married his cousin Maria of Spain. These marriages happened routinely in European royal houses. Anyone landing further down in the graph is related to others through multiple paths simultaneously — sometimes more than once. The engine shows all paths and labels them, e.g. „cousin via both Maria and Anna".
Illegitimate children: Don Juan of Austria was the illegitimate son of Charles V — acknowledged, but without dynastic rights. In the graph he is fully related to Charles, but not to Charles' legitimate heirs. The engine knows this distinction (the edge property „legitimate") and can display it accordingly.
Multiple widowhoods: Henry VIII Tudor had six wives and three surviving children by three different mothers. Mary, Elizabeth and Edward are half-siblings. The engine computes this correctly: „half-sister on the father's side", not just „sister".
Why we count maternal and paternal separately
Many European languages distinguish „cousin on the mother's side" from „cousin on the father's side". Many tools merge them. Kinverse keeps them apart, because otherwise the tree cannot answer questions that really matter: „Which family comes from which side?" — the answer lives on the line, not on the node.
For genealogical research this is decisive. Lines split, sources split, the region often splits too. Looking for your maternal grandmother, you don't want to dig through the church records of the paternal region.
What it doesn't do — and what's coming
The engine doesn't judge bonds. It doesn't say who is emotionally close or who actually knows each other. It counts paths in the graph.
What's missing today: DNA kinship. With the 23andMe migration importer in Phase 2, a second engine layer arrives that evaluates genetic relationships independently of the documented tree. If you discover an unknown half-sibling, you see both side by side: what the documents say, what the DNA says.
Adoption, step- and godparent relationships get finer in Phase 2 as well. The data model is in place; the UI needs to catch up.
Try it yourself
On the homepage, under „Try the kinship engine", there's a small playground: seven people, you pick two, the engine tells you the relationship. A taste.
If you want to see it for real: click two people in the Habsburg demo, follow the line, let yourself be surprised. Charles V and Maria Theresa — across how many generations are those two related? Try it.