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 |
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.
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 │
└─────────────────────────────────────┘
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.