FXpress · AI Co-Pilot for Cross-Border Remittance · Information Architecture & User Flows


Property Value
🏷️ Status Complete
🗂️ Form Single canvas · state-driven · modal layers
🔗 Live fxpress.netlify.app
➡️ Feeds Into Wireframes · Hi-Fi Wireframes

App Architecture

FXpress has an unusually flat information architecture, and that flatness is a design decision, not a limitation. It is not a multi-tab app with separate destinations for sending, converting, alerts, and help. It is a single canvas that holds everything the user needs to make one decision — should I send now, or wait? — with modal layers that open for the actions that branch off that decision.

This is the IA equivalent of the product's central thesis. A remittance sender does not want to navigate; they want to send money home at the right time. Collapsing the entire product onto one canvas means there is no navigation to learn, no tab to find, no mode to configure. Fexi reads the rate, the user reads the recipient amount, and the user acts.

The AI layer (Fexi) is not a separate destination — it lives on the canvas, reading the rate inline. The product adapts its depth to behavior: a first-time user sees a simple read; a user who sets a trigger reveals the power surface without ever being asked to declare themselves a power user.


The Canvas

Everything the user needs is on one screen. No bottom navigation, no tabs.

┌─────────────────────────────────────┐
│  FXpress · Fexi          [status]    │  ← header + AI status
├─────────────────────────────────────┤
│  Amount (USD) · rate · recipient ·   │  ← calculator
│  fee                                 │
├─────────────────────────────────────┤
│  Corridor selector                   │  ← 18 corridors
├─────────────────────────────────────┤
│  Fexi rate read (Claude-narrated)    │  ← the AI layer, inline
├─────────────────────────────────────┤
│  Send Now (primary)                  │  ← the two paths
│  Set Trigger for Best Rate (secondary)│
├─────────────────────────────────────┤
│  Saved triggers (when present)       │  ← persistence, inline
├─────────────────────────────────────┤
│  Honest footer                       │
└─────────────────────────────────────┘

The Modal Layers

Two actions branch off the canvas. Each opens a modal over the canvas rather than navigating to a new screen — so the user never loses their place.

CANVAS
  │
  ├── Send Now ──────────► Provider Hand-Off (modal)
  │                          ├── provider selector
  │                          ├── pre-fill detail
  │                          └── Open / Copy details
  │
  └── Set Trigger ───────► Trigger Sheet (modal)
                             ├── threshold + check-back
                             ├── Save Trigger
                             └── Trigger Saved
                                  └── Calendar Reminder (modal)
                                       └── Download .ics

The saved triggers themselves render back on the canvas as a section — persistence is a state of the canvas, not a separate destination.


Navigation Decisions

Decision 1 — A single canvas, not a multi-tab app