Inspiration
We are all children of immigrants. We watched our parents struggle through unfamiliar systems, unable to read the forms or ask for help in a language anyone understood. That memory stuck with us.
Canada admitted over 4.2 million newcomers in the last decade. Roughly half a million of them couldn't fill out the government forms needed to access services they were entitled to. Government-assisted refugees are hit hardest: up to 60% arrive with no English or French, yet every form, every phone line, and every office defaults to those two languages. The infrastructure exists. The funding exists. What's missing is the bridge. Arrive is that bridge.
What it does
Arrive is a mobile-first web app that guides government-assisted refugees through their first six months in Canada, in their own language, by voice.
A newcomer opens the app, picks their language (English, French, Arabic, Hindi, Mandarin, or Spanish), and talks to Aba, a voice-powered helper who asks their name, country, family size, and whether anyone has a disability. From those inputs Arrive builds a personalized checklist of every task they need to complete, ordered by urgency, from getting a SIN on day one to filing taxes at month six. Each item includes the exact Ottawa address, phone number, hours, required documents, and a Google Maps link.
When a refugee walks into a government office and can't explain why they're there, they tap one button. A QR code fills the screen. The clerk scans it and sees, in plain English: "Hello, my name is Amira. I am a government-assisted refugee. I speak Arabic. I am here to apply for my health card. Please guide me to someone who can help." Nothing is sent to any server. The entire message lives in the URL fragment.
Between visits, refugees ask Aba anything by voice or text and get a grounded answer with the specific location, phone number, and what to bring. Government programs (recreation subsidies, seniors' centres, childcare, disability support) are filtered by profile so users only see what applies to them. A one-tap "I'm interested" button feeds anonymized demand data back to government analysts, closing the loop: people closer to government, government closer to people.
How we built it
Frontend: Next.js with Tailwind 4, mobile-optimized, with right-to-left support for Arabic. Backend: FastAPI (Python) with Gemini for classification, grounded answers, citation validation, translation, letter photo reading (vision), and embeddings. Voice: ElevenLabs Scribe for speech-to-text during onboarding, plus the ElevenLabs conversational agent for Ask Aba. Data: Tiger Cloud (PostgreSQL with pgvector for semantic search, hypertables for event logging, continuous aggregates for real-time analytics on the insights dashboard). Auth: Auth0 with role-based access (settlement worker, government analyst, admin) and MFA for staff. Hosting: Docker Compose behind Caddy (automatic HTTPS) on Vultr, domain through GoDaddy Registry. A daily APScheduler job re-ingests official government pages with change detection so the answer base stays current.
Privacy was built in from the start. No question text or names hit the database. Letter photos are read into memory and discarded. Analytics use salted hashes and suppress groups under five. Handoff contacts are Fernet-encrypted at rest. The QR staff card puts all data in the URL fragment so scanning logs nothing.
Challenges we ran into
Making voice onboarding work across six languages was the hardest technical problem. Speech-to-text had to parse answers like "I have two adults and one child with me" into structured data, and that same sentence sounds completely different in Arabic, Hindi, and Mandarin. Getting the ElevenLabs agent and onboarding to share one pipeline instead of running two separate speech systems took several iterations.
Grounding Gemini in verified Ottawa data (real addresses, real phone numbers, real hours) instead of letting it hallucinate meant building an ingestion pipeline that fetches and embeds official government pages, plus a citation layer that checks every claim against the source.
Designing for users with no tech experience and no English forced us to strip the UI down over and over. Every interactive map, every dropdown, every helpful-looking section turned out to be overwhelming. The final product is simpler than any version we designed, and that simplicity was the hardest thing to get right.
Accomplishments that we're proud of
The QR staff card. A refugee who can't speak English walks into ServiceOntario, taps one button, and the clerk instantly knows their name, language, why they're there, and what documents they have. No words exchanged. No server involved. No data stored. That single interaction is the entire product in one moment.
The feedback loop. When a newcomer taps "I'm interested" on a government program, that signal, stripped of anything identifying, flows to the insights dashboard. Analysts can see which programs are in demand by language and household type, where checklist items are bottlenecks, and where satisfaction drops. It turns a one-way service into a conversation.
What we learned
The gap between government and newcomers is not a technology problem. It is a language and navigation problem. The services exist. The funding exists. Settlement agencies exist. But a refugee who speaks Arabic and has never seen a Canadian government website cannot access any of it. We did not replace anything. We made what already exists reachable.
Building for the most vulnerable users also forced better design for everyone. RTL support, voice-first interaction, bilingual labels, minimal UI: every constraint the refugee use case imposed made the app better for all users.
What's next for Arrive
Expanding beyond Ottawa. The architecture is city-agnostic, so adding Toronto or Vancouver means adding their locations and programs to the data layer. Supporting more languages (Dari, Pashto, Tigrinya, with draft translations already in place). Building the phone line we scoped out (Twilio, for refugees without smartphones). And piloting the insights dashboard with IRCC and settlement agencies using real anonymized data, so government can see in real time what newcomers need and where they are getting stuck.

Log in or sign up for Devpost to join the conversation.