Inspiration

Immigration is not a single question - it is a long-running journey made up of documents, dates, family dependencies, employer changes, government policies, and decisions that affect one another.

Most AI tools are good at answering a question in the moment, but they usually do not maintain a reliable model of the person’s journey over time. We wanted to explore a different idea: what if AI could build a living digital twin of an immigration journey, remember what is known, preserve what is unknown, and clearly show the consequences when one fact changes?

That became Cristóvão the Caregiver.

The name is a positive reimagining of the explorer archetype. Instead of conquest, Cristóvão helps people navigate unfamiliar systems with evidence, transparency, and care.

Our core principle became:

Change one fact or source → recompute the journey → show what is affected → explain why → prove consequential claims with evidence.

What it does

Cristóvão creates a structured Digital Twin + JourneyGraph from a user’s immigration situation.

It can take natural-language input such as immigration status, dependents, employer-sponsored permanent-residence activity, important dates, and upcoming life milestones, then convert that information into structured facts, explicit unknowns, graph nodes, and evidence dependencies.

The prototype demonstrates several important behaviors:

Structured intake: turns natural-language context into a normalized journey state. Explicit uncertainty: missing dates and facts remain UNKNOWN or UNSCHEDULED instead of being guessed. Document intelligence: extracts fields from a synthetic I-797 and reconciles them with the existing profile. Discrepancy detection: if the profile says a validity date is 2026-09-30 but the document says 2027-09-30, Cristóvão keeps both values visible instead of silently choosing one. Journey Timeline: propagates known dates, discrepancies, and unresolved date anchors into a chronological view. JourneyGraph: models dependencies between facts, milestones, policy evidence, and unresolved decisions. Explain Graph: shows why a node is in its current state by exposing dependency paths and evidence lineage. Evidence Ledger: tracks authoritative sources, matched passages, source versions, hashes, and verification state. Official-source monitoring: snapshots USCIS and Department of State sources and detects source changes. Source-change impact: invalidates only graph nodes that explicitly depend on the changed source. Independent verification: separates evidence matching from semantic interpretation and final deterministic verification. Journey Memory: saves a checkpoint and later shows exactly what changed across facts, unknowns, nodes, and evidence. Guided Judge Mode: provides a focused walkthrough of the strongest parts of the product.

A key design principle is that a source update does not automatically mean the underlying legal meaning changed. Cristóvão detects the source change first, resets affected interpretation to review, and requires verification before treating the new information as supported.

How we built it

Cristóvão is built as a deterministic-first application with AI used only where semantic interpretation adds value.

The frontend uses React, TypeScript, and Vite. A lightweight Node.js/TypeScript API powers structured intake, synthetic document analysis, checkpoint persistence, and the live evidence feed.

We use Gemini for structured natural-language intake, multimodal document understanding, and independent claim-to-passage semantic verification. The model does not directly decide whether a JourneyGraph node is verified. Instead, deterministic code applies the final verification gate.

The evidence pipeline uses:

authoritative source registration, HTML/PDF extraction, deterministic passage matching, SHA-256 content fingerprints, explicit source versions and retrieval timestamps, semantic verification, dependency-aware JourneyGraph invalidation.

The deployed architecture uses Render Web Service, Render Workflows, and Render Key Value. Render Workflows refresh and verify official sources, while Render Key Value stores source state, the latest evidence feed, and deterministic journey checkpoints.

We also integrated Supermemory as a separate semantic-history layer. It can store journey checkpoints for durable semantic context, but it is intentionally not used as the source of truth for deterministic “What changed?” comparisons.

The project includes automated tests, TypeScript checks for both the server and Workflow code, production builds, API smoke tests, and GitHub Actions validation.

Challenges we ran into

One of the hardest problems was deciding where AI should not be trusted.

It would have been easy to ask a language model to produce an immigration recommendation and display the response. Instead, we spent significant effort separating facts, document observations, evidence, AI interpretations, deterministic calculations, and unknowns.

Date handling was especially important. Immigration journeys contain many dates, but guessing a missing date can create a dangerously convincing result. We therefore built the timeline so exact dates remain exact and unavailable dates remain explicitly unscheduled.

We also had to solve reconciliation between different observations. When the synthetic I-797 contained a validity date that disagreed with the structured profile, the first instinct could have been to pick one. Instead, we designed a discrepancy state that preserves both.

Official-source retrieval produced another real-world challenge. The U.S. Department of State Visa Bulletin was available in a browser but automated requests from Render could be blocked. Rather than hide this as a generic error or pretend the source was current, we introduced a REFRESH-BLOCKED state that preserves a retained reference, source hash, provenance, and unresolved verification state.

We also encountered deployment challenges with Render Workflows, including a Workflow still pointing at an old deleted Git branch. Resolving these issues helped us make the deployment architecture more robust and explicit.

On the UX side, we iterated on the Judge Mode, floating controls, timeline, graph inspector, and memory panels so multiple drawers would not obscure the underlying application during the demo.

Accomplishments that we're proud of

The accomplishment we are most proud of is that Cristóvão does not need to pretend to know everything in order to be useful.

When information is missing, it says so.

When two documents disagree, it preserves both values.

When a government source cannot be refreshed, it says REFRESH-BLOCKED and retains the prior hashed evidence rather than silently failing or claiming freshness.

When a source changes, Cristóvão does not immediately reinterpret the law. It identifies the affected graph nodes and requires re-verification.

We are also proud of building a working end-to-end loop:

build the Digital Twin -> save a checkpoint -> extract a document -> detect a discrepancy -> recompute the timeline -> inspect the graph -> simulate a source change -> compare what changed

The JourneyGraph, Evidence Ledger, deterministic timeline, checkpoint comparison, Render Workflow integration, source fingerprinting, independent verifier, and Supermemory integration all work together rather than existing as disconnected demo features.

Most importantly, the project demonstrates a different model for high-stakes AI: AI assists with interpretation, while deterministic systems control provenance, state transitions, and verification.

What we learned

We learned that uncertainty is a product feature, not a failure state.

In high-stakes domains, an explicit “unknown” is often more valuable than a polished but unsupported answer.

We also learned that provenance needs to be designed into the architecture from the beginning. A government URL alone is not enough. Useful evidence requires a source version, retrieval time, hash, matched passage, and verification status.

Another major lesson was that AI systems are more trustworthy when their responsibilities are narrow. Gemini works well for tasks such as structuring natural language and interpreting a passage, while deterministic code is much better for graph traversal, date ordering, source fingerprints, state transitions, and checkpoint comparison.

We also learned that external systems fail in unexpected ways. An official website can work perfectly in a browser and still reject requests from a cloud environment. Building a safe failure state became as important as building the successful path.

Finally, the Digital Twin concept proved broader than immigration. The same architecture could apply to other complicated life journeys where facts, documents, policies, dependencies, and changing circumstances interact over time.

What's next for Cristóvão the Caregiver

The next step is to evolve Cristóvão from a hackathon prototype into a broader Verified Journey Engine.

We want to expand official-source coverage beyond the current USCIS and Visa Bulletin examples, add more immigration document types, and make policy dependencies increasingly granular so a source change only invalidates exactly the conclusions that depend on it.

We also plan to add secure user accounts, encrypted journey storage, stronger privacy controls, richer document upload workflows, human-review checkpoints, multilingual support, and accessibility improvements.

The Journey Memory layer can evolve into a longitudinal history that answers questions such as:

What changed since my last approval? Which assumptions are no longer valid? Which documents conflict with my current profile? Which nodes need new evidence? What became newly relevant after a life or policy change?

We also want to extend the Digital Twin model to other difficult systems such as healthcare navigation, education planning, benefits eligibility, relocation, and other administrative journeys.

The long-term vision is not another chatbot.

It is a system that remembers the journey, models consequences, exposes evidence, and knows when it does not know.

Built With

Share this project:

Updates

Submission history