Maple

Your personal immigration companion

Maple connects your circumstances with reviewed immigration evidence, understandable assessments and practical next steps.

Demo video: https://www.loom.com/share/402cbd06ef4c41e9b32e632c705745a6
Live application: https://app.maplenewsletter.com
Source code: https://github.com/Zetta-tech/maple-companion
Development history: https://github.com/Zetta-tech/maple-companion/commits/main/
Technical evaluation: https://github.com/Zetta-tech/maple-companion/blob/main/docs/EVALUATION.md

Built solo by Aakash Umamaheswaran.

Implemented: persistent context, reviewed/versioned policy evidence, real deterministic assessments, and request-time freshness checks that withhold stale results.
Demonstration: informed by my real immigration experience and supplied facts, using prepared scenario inputs processed by Maple's real engines; the recording replays those saved results.
Next: connect newsletter policy discovery and add live recalculation to the recording view.

Inspiration

Immigration continues long after someone submits an application. Employment changes, permits expire and government policies evolve while people are busy building their lives.

I experienced that research burden during my own journey in Canada. Information was available, but recognizing the right question or an unfamiliar pathway was harder. Maple began with that gap: what happens when the opportunity you need is something you do not know to search for?

Consider a temporary resident working in Canada on an employer-specific permit and planning permanent residence. A change in employment or policy can affect what they should investigate next. They need an explanation connected to their circumstances, with enough evidence to distinguish a useful possibility from an unsupported recommendation.

For scale, IRCC reported 315,650 in-Canada work-permit holders under the Temporary Foreign Worker Program as of September 30, 2025. That is one employer-specific-permit population, not a count of Maple customers or people eligible for C20.

Changing policies make one-off answers age quickly. Persistent context now makes it practical to build a workspace that can revisit an assessment when its inputs change. Maple brings these needs together.

What it does

Maple combines personal context with reviewed, versioned policy evidence. Deterministic rules evaluate approved inputs, and results retain that evidence. Backend checks compare reviewed input revisions and approved policy versions when results are read or assessments are requested; stale conclusions can be withheld. Recalculation requires an explicit assessment or replay request, not a background monitor.

This is the core innovation: context, evidence and assessment history stay connected across the immigration journey.

The dashboard brings circumstances, findings and next actions together. Users can review and edit their profile history, explore pathways, and use Maple Guide to ask questions or describe changes. Findings expose supporting sources, relevant requirements, missing information and a useful next action.

The demonstration follows C20, a work-permit category for reciprocal employment, and a conditional Express Entry Comprehensive Ranking System (CRS) comparison from 528 to 568 points. It shows how a finding can become understandable: why it may matter, which source supports it, when a change would apply and what still needs checking.

How I built it

Clerk establishes identity

The React and TypeScript interface uses Clerk email-based sign-in. An Express backend verifies session tokens and authorized origins, then derives data ownership from the authenticated identity. Server-side bindings associate approved users with the appropriate Agent Memory context; a browser-submitted identifier cannot choose somebody else's records.

SurrealDB connects workflow state with personal context

SurrealDB stores requests, revisions, receipts, discoveries, assessments, notifications and reviewed policy records. Those records retain the state of an operation and the basis of its result.

SurrealDB Agent Memory maintains personal context through native remember operations and profile/state readback. Conversational ingestion uses full inference; confirmed structured forms use triple extraction. Structured employment edits have an explicit review-and-confirm path. Remembered statements do not automatically become approved scoring evidence.

These roles are complementary. Agent Memory helps maintain whose journey Maple is assisting. The application database preserves what was requested, which inputs were reviewed and how a result was reached.

Reviewed evidence controls assessments

Current assessments use captured and reviewed official-source versions. The registry retains URLs, content hashes, effective dates and approval metadata. A future announcement can support a conditional projection without becoming a rule already in force.

TypeScript rules evaluate reviewed inputs. Criteria can be met, not met or need information. Contradictory evidence can withhold a conclusion.

The Canadian Experience Class (CEC) work check evaluates a bounded employment interval. Separate CRS calculation paths use reviewed scoring inputs. Correcting employment information can invalidate an earlier assessment until the revised evidence is reviewed and evaluated again.

Guide explanations use SurrealDB Agent Memory's hosted /chat endpoint through its memory SDK. Requests combine the question, reviewed profile, condition checks, official-source text and a response contract. The underlying language model is managed by Agent Memory; Maple does not select a named GPT or Claude model. Generated explanations interpret the evidence; the deterministic engine remains responsible for numerical assessment.

User experience and design

The interface makes three questions easy to follow: what is relevant, why does it matter, and what can I do next?

I refined hierarchy, contrast and navigation while reducing unnecessary text. Missing setup requirements appear beside the action they block, rather than at the bottom of a long page. Profile review and pathway exploration have dedicated views, while sources and detailed requirements remain accessible without overwhelming the dashboard.

Maple's restrained palette, light and dark themes, responsive navigation and companion avatar give the experience continuity. The goal is to help users find their next action without first deciphering the interface.

Challenges and accomplishments

The hardest integration problem was uncertainty across systems. A remote memory write and the application's operation record are not one atomic transaction. A lost response does not prove that a write failed.

That failure mode shaped the workflow: Maple records uncertain operations and reconciles them instead of blindly repeating a potentially completed write. Structured save/readback and supersession were tested.

Pinned repository tests cover withholding old conclusions after an input revision, requiring review after employment changes, and rejecting changed official-source content when requested. Reviewers can run npm test or npm run check for type checking, tests and the build. The current main commit passed CI; approved main-branch changes trigger Vercel production builds.

Security and responsible use

Three safeguards guide the design:

  • Ownership comes from the verified session, not a client-selected user ID.
  • Numerical results come from reviewed inputs and deterministic rules, not generated guesses.
  • Missing, contradictory or stale evidence remains visible instead of being converted into unwarranted certainty.

Clerk handles identity and sessions; the Vercel-hosted backend processes authenticated questions and profile inputs. Agent Memory receives personal messages, work/status details, reviewed education and language inputs, source evidence and generated conversations; SurrealDB separately stores owner-linked proposals, revisions, receipts, assessments and saved explanations. Demonstration data is separated from personal production records. Maple supports information, exploration and preparation, not licensed immigration representation or individual legal advice.

Evaluation and current boundaries

  • Access: an own-data-only, owner-gated trial. The video, repository and technical evaluation provide evaluation evidence; gating limits whose data enters the system, not provider processing.
  • Recording: saved engine results combine real experience and supplied facts with prepared scenario inputs. Profile edits do not recalculate those cards; +40 is a future projection, not points already awarded. Per-skill language values are a staged allocation, unverified against a test report and separate from the prepared CRS fixture.
  • Remaining work: connect newsletter discovery, resolve the native-memory correction/readback edge case, validate broader hosted isolation, and complete retention/export/deletion controls and provider-policy review. The recording does not demonstrate a live AI/provider call.

What I learned and what is next

I learned that persistent context needs a dependable relationship to current evidence. When that relationship cannot be verified, uncertainty must remain visible.

Next, I plan to connect Maple Newsletter's existing Tavily search and official-source monitoring to candidate policy updates, review and affected-profile reassessment.

A proposed small opt-in pilot through the newsletter would test repeat use, whether users understand their next action and assessment reliability. Paid continuous monitoring is one business-model hypothesis to test after that validation, not current pricing or a launched service.

Built With

Share this project:

Updates

Submission history