Inspiration

Somewhere right now, a family is sitting in a leasing office being told no — not because they have ever missed a payment, but because the years they spent proving themselves financially happened on the wrong side of a border.

My mother came to the United States from Taiwan with a carefully built financial history. She had paid every bill, saved every dollar she could, and done everything right. But when she walked into her first leasing office in America, none of that existed. The system saw only a blank file and turned her away.

She is not alone. Millions of immigrants, students, refugees, and newcomers arrive carrying years of responsible financial history, only to watch it vanish the moment they enter the American financial system. A doctor who managed her finances impeccably for fifteen years in Manila cannot get approved for a basic credit card in Chicago. A software engineer from Berlin who has never missed a bill is turned away from an apartment because his U.S. credit file is empty. The system does not measure trustworthiness — it measures whether someone has already existed inside the American financial system long enough to be recognized. For millions of people, that distinction changes everything.

We built Arrival because financial identity should be portable. No one should have to start over from zero just because they started somewhere else.

What it does

Arrival is a universal financial passport for credit-invisible newcomers.

Users go through a guided onboarding flow where they share basic context, complete a short voice interview, and upload documents such as a passport, bank statement, proof of income, rent records, utility bills, or foreign credit card statements. Arrival analyzes those documents, extracts structured signals, checks them for consistency, and turns them into a verified Trust Profile.

The platform generates an Arrival score, explains the evidence behind it, and creates a shareable profile that lenders, landlords, and partners can review. Users can also add their Arrival Trust Pass to Apple Wallet or Google Wallet, turning their verified profile into something portable and easy to present when signing paperwork.

Key features include:

  • Voice-based intake for learning the user’s story before document upload
  • Document upload flow for identity, banking, income, rent, utilities, and credit history
  • AI vision extraction for structured document understanding
  • Forensic checks for MRZ validation, bank-statement arithmetic, PDF metadata, name matching, recency, income coherence, credit utilization, and sanctions screening
  • A trust scoring engine with transparent score breakdowns
  • A visual Trust Web showing how identity, documents, and financial signals connect
  • Shareable public trust profiles
  • Apple Wallet and Google Wallet passes for portable proof of trust

How we built it

  • Frontend: Next.js 15 App Router + React 19 for the landing page, onboarding flow, intro interview, dashboard, documents, connections, and wallet pages
    • Styles: Tailwind CSS v4 + PostCSS with custom Arrival brand assets, paper texture, responsive hero composition, and dashboard UI
    • Motion/UI: Framer Motion for animated landing sections and score assembly; Font Awesome for interface icons; React Flow for the Trust Web prototype
  • Backend: Node.js + Hono on @hono/node-server with CORS, request logging, and Zod validation through @hono/zod-validator
  • Storage: Supabase Storage for uploaded documents in the documents bucket
    • Database: Supabase Postgres through Prisma, with StoredUpload for file metadata and AuditProfile for saved trust profiles
    • Uploads: Multipart upload pipeline with magic-byte file detection, 25 MB limits, support for PDF/PNG/JPEG/GIF/WebP/SVG, and sample demo documents
  • Document Parsing: pdf-parse for PDF text extraction and metadata, pdf2json for layout-preserved bank-statement table extraction
    • Forensics: Custom Type-Agent, Reader-Agent, Forensic-Agent, Identity-Agent, Income-Agent, Booster-Agent, Compliance-Agent, and Agent Alpha checks
    • Verification Logic: MRZ checksum validation with mrz, PDF metadata inspection, bank arithmetic balance-walk checks, name matching, income coherence, rent/utility/credit recency, utility payment status, and credit-utilization checks
    • Scoring: Custom Arrival Integrity Formula that drops flagged/low-confidence documents, requires verified ID + bank + income, converts foreign financials through PPP factors, weights income/cash buffer/rent burden/utilities/credit utilization/file depth, then maps to a 300-850 credit-score range
    • Country Normalization: Built-in PPP/currency profiles for Mexico, India, China, Philippines, El Salvador, Vietnam, Cuba, Dominican Republic, South Korea, Guatemala, and fallback USD
  • Profile Sharing: Saved profile slugs power public /u/[slug] dashboards with score, document quality, flags, wallet actions, documents, and connections views
  • Wallet: Apple Wallet .pkpass generation through passkit-generator, including Arrival branding, trust score, tier, QR verification URL, and PassKit certificate configuration
    • Google Wallet Prototype: Backend route builds a Google Wallet generic-object payload and save URL
  • Connections: Searchable catalog of 202 banks, wallets, brokers, fintechs, neobanks, and credit unions across global regions

AI Implementation

Arrival's AI layer solves a hard structured-extraction problem: converting heterogeneous, often low-quality real-world financial documents — scanned passports, handwritten rent receipts, foreign bank statements, pay stubs in a dozen currencies — into the clean, typed JSON fields that the scoring formula can operate on.

Voice intake with OpenAI Realtime. Before any document is uploaded, users complete a short voice interview powered by the OpenAI Realtime API. The interviewer asks open-ended questions about the user's background, employment, and financial situation. The session is transcribed and summarized into structured profile context that seeds the document-review prompts, which sharpens extraction accuracy and flags implausible values.

Multimodal document intelligence. GPT-4o Vision serves as a universal document parser. Rather than relying on fixed OCR templates (which break the moment a bank changes its statement layout), the model receives each uploaded page as an image and is prompted with a document-type-specific schema. The output is a structured JSON object: for a bank statement, that means account holder name, IBAN/account number, currency, individual transaction rows with dates and amounts, and a running balance; for a passport, it means MRZ line 1 and 2, nationality, expiry date, and name fields. The model handles poor scan quality, mixed-language documents, and non-US date formats that would defeat any regex-based approach.

Multi-agent forensic pipeline. Raw extraction is never trusted directly. Each document passes through a chain of specialized agents:

  • Type-Agent classifies the document category (identity / bank / income / rent / utility / credit) from the raw image before any schema is applied.
  • Reader-Agent runs the schema-targeted extraction prompt and returns structured JSON with a per-field confidence score.
  • Forensic-Agent runs deterministic cross-checks against that JSON: MRZ checksum validation (TD3 check-digit algorithm), PDF metadata inspection for creation-date anomalies, bank-statement arithmetic (row-by-row balance walk to detect inserted or altered transactions), name consistency across all uploaded documents, and recency checks.
  • Identity-Agent, Income-Agent, Booster-Agent, and Compliance-Agent each apply domain-specific validation rules — income coherence (does the stated salary match deposit patterns?), sanctions screening, utility payment status, and credit utilization bounds.
  • Agent Alpha aggregates per-agent outputs into a document-level confidence score and flag set, which the scoring formula consumes.

This design is intentional: the neural model handles perceptual ambiguity (messy layouts, handwriting, foreign scripts), while downstream agents handle logical verification (arithmetic, checksums, cross-document consistency).

Additional information on scoring algorithm

The Arrival Integrity Formula operates in three stages.

Stage 1 — PPP Normalization Every financial value is PPP-normalized: $$amount_{USD} = amount_{local} \times country.pppFactor$$ using built-in purchasing-power-parity factors for eleven origin countries plus a USD fallback.

Stage 2 — Weighted Signal Sum Six signals are each converted into a [0, 1] ratio against a US benchmark and combined as a weighted sum: $$raw = \sum_i w_i \cdot \left(\frac{V_{actual,i}}{V_{benchmark,i}}\right) \in [0, 1]$$

i Signal Weight (wᵢ) Ratio (V_actual / V_benchmark)
1 Income 0.30 monthly_income_USD / 6,000
2 Cash buffer 0.20 balance_USD / (3 × monthly_income_USD)
3 Rent burden 0.15 (0.50 − rent_burden) / (0.50 − 0.30)
4 Utility on-time 0.15 paid_count / total_count
5 Credit utilization 0.10 1 − (cc_balance / cc_limit) / 0.60
6 File depth 0.10 (verified_categories − 3) / 3

Stage 3 — Sigmoid Scaling & FICO Mapping The raw score is passed through a sigmoid centered at 0.5 with slope 6 — chosen so a median applicant lands near 650 and tails compress naturally — then linearly mapped to FICO's 300–850 range: $$\varphi(raw) = \frac{1}{1 + e^{-6 \cdot (raw - 0.5)}}$$ $$S_{Arrived} = \text{round}\left(300 + \varphi(raw) \cdot 550\right)$$

Document Validation Rules Any document with doc.flagged = true or doc.confidence < 0.30 is excluded before the sum is computed. The formula requires at least one verified identity document, one bank document, and one income document; missing categories zero out their weights rather than being estimated. Every term in the final score is traceable to a specific line in a specific verified document.

Challenges we ran into

The hardest challenge was turning messy real-world documents into reliable signals. Financial documents are inconsistent across countries, formats, and institutions, so we built a multi-layer validation pipeline around the AI rather than trusting extraction blindly. Scoring also required careful design — we wanted every score to be explainable down to the specific line in a specific document, not a black box. The wallet pass required thinking beyond the app to make the trust profile feel genuinely portable. And throughout everything, the interface had to feel calm and respectful, because users are trusting Arrival with the most sensitive documents of their lives.

Accomplishments that we're proud of

We are proud that Arrival is a fully end-to-end product working with real data — onboarding, document upload, forensic checks, scoring, shareable profiles, and wallet passes all functioning together. We are especially proud of the forensic pipeline, which does not simply ask whether a document looks good but runs specific, traceable checks that make the trust profile defensible. And we are proud of the concept itself: Arrival reframes credit invisibility as an infrastructure problem, not a personal failure.

What we learned

We learned that financial trust is not a number — it is a story. It is a rent receipt written by hand, a bank statement showing small consistent deposits from someone working two jobs, an income document from a country whose currency most Americans have never heard of. Trust is a bundle of identity, context, evidence, and narrative, and no single document tells the whole picture.

We also learned that the distance between a technically working prototype and a product that feels safe and human-centered is enormous. When someone uploads their passport and bank statements, they are trusting you with the most sensitive pieces of their life. That pressure made us better builders.

What's next for Arrival

The version we built this weekend is a beginning. We want to make Arrival institution-ready with stronger verification, zero-knowledge proofs, sophisticated fraud detection, deeper country-specific document support, and reviewer dashboards for landlords and lenders. We also want to expand what the Trust Profile can see by partnering with banking APIs, payroll platforms, rent payment networks, and international credit bureaus.

But the vision we keep coming back to is simpler than any feature list. Imagine someone landing at an airport with a suitcase, a job offer, and a family counting on them — and when they walk out of that terminal, their financial past walks with them. Not lost at the border. Not locked in a foreign system. Portable, verified, and ready. That is what we are building toward.

Built With

  • agents
  • framer
  • google-wallet
  • gpt-vision
  • hono
  • nextjs
  • node.js
  • openai
  • pdf-parse
  • pdf2json
  • postcss
  • prisma
  • react
  • supabase
  • tailwind
  • typescript
  • zod
Share this project:

Updates