Applied Research — Public Sector / Forensic

Two records, one person, forty-three years apart

An algorithmic hypothesis-generation system that cross-references missing-person and unidentified-remains records to surface candidate matches years before a human volunteer would stumble onto them — if ever.

Missing Person · MP24043
Douglas David Lakin
Missing since April 1981
Corona, Riverside Co., CA
Male · White · 52 · USMC veteran
Unidentified · UP4342
"Douglas Larkin"
Recovered April 25, 1981
Riverside/Imperial Co., CA
Male · White · est. 45–60
FBI-confirmed February 2026 — 44.8 years after recovery. The record-level match took one Websleuths volunteer roughly a day, once she looked. Nobody had run the query for 43 years.
Validation run · reproduces the Lakin/Larkin case from public data · not live production data
0.851
Match score, Lakin ↔ Larkin
1
Letter of edit-distance in the name
79mi
Distance between last-seen & recovery
44.8y
Time-to-identification, uncaught

Three specific gaps in how cold cases get handled today

01

Human error at entry

A record is only as good as whoever typed it in, sometimes decades ago. "Lakin" became "Larkin." An exact date became a first-of-month placeholder. The matching engine expects this — fuzzy names, month-precision dates — rather than trusting the record as typed.

02

Checked once, then static

Official systems compare missing-person and unidentified-remains records against each other at entry time — but an old case is rarely re-checked against everything added since. This system re-runs every old case against every new one, indefinitely, so nothing goes stale just because it's old.

03

The pattern-recognition manpower already exists

Experienced volunteer sleuths are genuinely good at spotting these connections — one found this case in an afternoon, once she happened to look. This system doesn't replace that skill; it aims to make the next match take an hour of triage instead of a lucky afternoon of browsing.

Routed through what already works

Every output is handed back to that same community, through the same channel — NamUs submission — that resolved this case in the first place.

The evidence usually already exists. It's just in two databases that don't talk.

NamUs auto-compares its own missing-person and unidentified-remains records on dates, geography, and demographics — and still missed this pair for over four decades. Names on Doe records are sometimes wrong by a letter. Dates like "April 1" are often placeholders for "sometime in April." Neither of those gets fixed by more forensic work. They get fixed by better matching.

The system below treats every candidate pair as a lead for human review, never a conclusion — every output is meant to be verified and submitted through NamUs by a person, the same way this case was.

01

Missing Persons

Name known, person not found. Matched against Doe records on fuzzy name similarity, date windows, geography, and demographics — weighted, never veto'd on a single field.

02

Unidentified Remains

Person found, name not known. Name hints, when present, are treated as possibly misspelled — exactly the detail that solved this case.

03

Unclaimed Persons

Identity confirmed, no next-of-kin located. A simpler, stricter problem: near-exact name matching against missing-person records — often resolvable with one phone call.

Ranked candidate pairs, explained field by field

Every score is decomposed into the evidence behind it — no black-box confidence number. This is the actual validation output from the current matching engine, run against four missing-person and five unidentified-remains records.

Missing PersonCandidateScoreNotes
MP-D02
Linda Castellanos
UP-D11 0.934 Age, geography, and demographics all align within tight tolerances.
MP24043
Douglas Lakin
UP4342
hint: "Douglas Larkin"
0.851 The real, FBI-confirmed match.
Military + prints → NGI resubmission
MP-D03
Harold Jensen
UP-D12
hint: "H. Jansen?"
0.710 Name and geography strong; temporal gap (5 years) pulls the score down.
MP-D01
Raymond Okafor
UP-D10 0.694 Recorded race differs — flagged, not excluded: anthropological estimates on remains are error-prone.

Built to reduce false hope, not manufacture it

Lead, never a verdict

Every output is scored evidence for a human to review and submit through official channels — never a public claim or a family notification.

Recall over precision

A missed true match can cost years. A false candidate costs a reviewer ten minutes. Thresholds are tuned to surface generously and filter with people.

Actionability, scored separately

Match confidence and "how cheaply can this be confirmed" (e.g. a fingerprint resubmission for a veteran) are deliberately independent scores.

Metric: time to identification

The core goal is measurable — the gap between recovery and confirmed ID — and every resolved case in the sweep feeds that number back in.

Finding patterns within the unidentified-remains population itself

A second, separate technique looks for structure among Doe cases directly — not against missing persons, but against each other. Two bounded methods, chosen deliberately over "AI reads the news," which mistakes media attention for signal:

A

Geographic & temporal clustering

Flags places where more Does turn up, closer together in time, than case density alone would predict — the same class of method behind the Murder Accountability Project's homicide-data clustering. Every output carries an explicit caveat: a density anomaly is not evidence of a common cause until checked against population, waterway proximity, and seasonal base rates.

B

Cross-jurisdiction narrative matching

Fuzzy-matches specific, stated details in case narratives — a distinctive restraint method, a disposal detail — across jurisdictions that have no reason to compare notes. Deliberately narrow: matches only fire on specific terms, not generic case language, to avoid mistaking shared report-writing templates for a real signal.

Illustrative example (synthetic data, fictional region labels — not real cases): four synthetic Doe records placed within 15 miles and 11 months of each other correctly triggered a cluster flag in validation testing; two synthetic records 900 miles apart both mentioning the same distinctive disposal detail correctly triggered a narrative match. Both outputs are analyst leads for a human researcher to pursue against real case files — never a claim that a pattern exists.

Catching cases that are solved everywhere except where families are still looking

Resolved cases don't update everywhere at once. Douglas Lakin's case was FBI-confirmed in February 2026 — but volunteer-run case-tracking sites can lag by months. A courtesy-notification step drafts a short, factual, sourced message for exactly this situation:

FieldValue
CaseDouglas David Lakin
Resolved viaFBI, confirmed February 16, 2026
Drafted message"I believe this case may have been resolved… could you confirm and update if accurate?"
StatusDrafted — awaiting human review

Every notification is drafted, never sent automatically. A person verifies the resolution against a primary source and sends it manually — the slowest, most deliberate step in the entire pipeline, by design.