CASE STUDY · NOVEMBER 2026 · SOLO DESIGN & ENGINEERING

ForeLoom: following the record.

I designed and built this local-first desktop prototype to test a safer way to inspect uncertain family records. The outcome is a working review loop and a decision to pause monetization, not a product launch or evidence of customer demand.

← Back to the project
01 / CONSTRAINT

Keep the researcher in control.

Family records can include living people and disputed relationships. ForeLoom keeps each tree in a separate local SQLite database. Import, editing, review, and backup work without a cloud account. Outside research sends a query only when the user starts a search and chooses a source. Optional explanations use a locally running Ollama model; the model does not edit the tree.

02 / THE FICTIONAL DEMO

Import. Review. Undo.

I replayed the flow with a small fictional GEDCOM. Its one person, Mara Vale, has two birth entries: “ABT 1880” in Eastford and “1881” in Westford, each attributed to a fictional source label. These are demonstration records, not historical evidence.

Preview and import

The native preview reported one person, no relationships, and two sources. Import created a separate tree and retained the original GEDCOM. The UI showed completion while other trees remained available.

Inspect the conflict

A deterministic rule flagged the two birthplace entries and displayed both places and dates. It invited review because historical names or boundaries might explain the difference.

ForeLoom Review screen showing fictional Mara Vale’s two conflicting birthplace entries and the reason for the flag
Both source facts remain visible before a decision. Fictional demonstration data.

Make a bounded decision

I selected Eastford as the display place and classified Westford as an unresolved conflict. Neither source fact was deleted or declared true. The reviewer could also dismiss the issue without changing the records.

Birthplace review controls with Eastford selected for display and Westford classified as unresolved
The display choice does not declare either birthplace historically correct. Fictional demonstration data.

Review and reverse

Marking the variation reviewed cleared it from the open queue. Change history recorded the decision and offered Undo. I used Undo and confirmed the same issue returned to Review.

Local change history showing Mara Vale’s reviewed birthplace variation and an Undo control
The review decision appears in local change history. Fictional demonstration data.
Local change history showing that Mara Vale’s birthplace review was undone
After Undo, the conflict returned to the open review queue. Fictional demonstration data.

This is a before-and-after research decision, not a discovery of Mara Vale’s true birthplace.

03 / ENGINEERING DECISIONS

Local first, reversible by design.

The path is React UI → typed Tauri commands → Rust rules and transactions → per-tree SQLite. Import and backup use local files. Costly import and tree-loading commands run off the command runtime, with progress or loading states in the UI.

  • Rules before AI. The issue queue works offline and is reproducible. AI can optionally explain a flag but cannot silently rewrite the tree.
  • Preserve uncertainty. “ABT 1880” stays approximate, and classifying a birthplace conflict keeps both recorded facts.
  • Protect imported data. Preview warns about unsupported data; import creates a new tree and preserves the input instead of publishing a partial failed import.
  • Guard undo. Approval checks current tree state, and undo avoids overwriting later edits.

Responsiveness on very large trees remains an evaluation task.

04 / CLAIMS & EVIDENCE

What the evidence supports.

Observed in the desktop app

The fictional GEDCOM imported; the birthplace conflict was reviewed and undone in the demonstrated flow.

Implemented and tested

Selected automated fixtures cover import preservation, conservative date checks, and safe undo. They are not a real-world compatibility benchmark.

Vendor claims

RootsMagic, Gramps, FamilySearch, and MyHeritage document features overlapping the proposed paid position. This was a source-based review, not a hands-on quality comparison.

Untested hypothesis

A narrower record-location task might support a paid product. Buyer demand and paid conversion have not been validated.

On November 11, 2026, the desktop repository recorded 49 passing JavaScript tests, a passing build with a large-chunk warning, and 33 passing Rust tests with one ignored real-export audit. These checks do not establish Windows readiness, representative GEDCOM compatibility, cross-machine backup recovery, screen-reader quality, Ollama model quality, or customer impact.

05 / PRODUCT DECISION

Why I paused monetization.

RootsMagic documents problem searches, Gramps documents detailed source management, FamilySearch offers AI-assisted full-text search, and MyHeritage says GAIA weighs conflicting evidence. Their documented claims weakened the proposed paid cleanup and generic AI positions; they do not establish how well each product works for every researcher.

Ancestry’s GEDCOM guidance says media files are absent and uploading a corrected file creates another tree rather than updating the original. That made a seamless round trip a poor promise. I withdrew the proposed price, checkout, and launch work and kept ForeLoom noncommercial while investigating a narrower record-location problem. No candidate has yet passed a demand, workflow, data-access, and paid-intent validation gate.