Trips, reconciled

WorkRippling · Spend & Travel

Trips, reconciled

Link bookings and every cost in a Trip-Linked Expense Report

Spend and Travel trip-linked report overview
Pulling bookings, card transactions, and reimbursements into one place
Pulling bookings, card transactions, and reimbursements into one place

Project snapshot

My contribution

Role

Lead Product Designer (Spend)

Focus

Strategy, IA, object model, flows, visuals, component specs

With

Travel Product Designer • UX Research • Design Systems

Constraint

Spend mobile ran on aging components while Travel mobile was greenfield, so the two risked drifting apart

Project details

Company
Rippling
Product area
Spend & Travel
Discipline
Product design · Mobile
Timeline
Apr 2023 → 2025
Status
Travel GA summer ’25; shared report targeted Q4 ’25
Object model
Trip-linked report bookings, cards and reimbursements in one place
Validation
Tested with Navan users current and former
Systems
Seeded the component library patterns reused for Time Off mobile

00 Overview

Travel bookings and Spend lived in separate apps, forcing employees to reconstruct a trip across screens. I led the Spend side with Travel to introduce a Trip-Linked Expense Report—one object that binds itinerary items (flights/hotels/cars) with every related cost (corporate card transactions, reimbursements, per diem). We prototyped variants, tested with Navan users, and used the work to seed Rippling’s new mobile component library, which later accelerated the Time Off mobile redesign.

01 The problem

One trip, split across two apps

Travelers think of a trip as one bucket of costs, but bookings lived in Travel and expenses in Spend, so they reconciled it themselves. Competitors like Navan show trip spend in one place.

  • App silos

    Travel vs Spend created context switching and “DIY reconciliation”

  • Mental model mismatch

    Travelers think “one trip = one bucket of costs”

  • Legacy patterns

    Spend mobile used aging components; Travel mobile was greenfield → risk of drift

  • Market bar

    Competitors (e.g., Navan) show consolidated trip spend

Trip details

Rippling
Spend appLegacy app
Travel app0→1 app
Card Tranx
Expenses
Flights
Hotels
Rental cars
Meals
Client meetin...
Enterntainment

Spend versus Travel problem context

FIG. 01Spend versus Travel problem contextA trip's costs, split across two apps

02 Solution highlights

One object for the whole trip

A Trip-Linked Expense Report you can create or attach from either Travel or Spend. It suggests transactions and receipts from the trip window and flags receipt or memo requirements to fix in-flow.

  • Trip-Linked Expense Report

    bi-directional: create/attach from Travel or Spend

  • Auto-suggested linking

    Detect transactions/receipts within trip window

  • Policy clarity

    Inline indicators for receipt/memo requirements; fix in-flow

  • Cross-suite precedent

    Model used to guide Time suite (Timesheets/Time Off/Holidays)

Trip expense report flow in Spend
Trip expense report in Spend
Trip expense report in Travel
FIG. 02Trip expense report flow in Spend

03 Process

From audit to a shared pattern

  1. Step 03.A Audit

    Audit

    Spend mobile (legacy) + Travel mobile (greenfield) → gaps & drift risks

    BeforeLegacy Rippling & Spend app components

    Audit legacy Rippling and Spend components
    Legacy Rippling & Spend app components

    AfterNew Travel app with updated components

    Audit new Travel app screen one
    Audit new Travel app screen two
    FIG. 03Legacy Rippling & Spend app components · New Travel app with updated components
  2. Step 03.B Strategy/IA

    Strategy/IA

    Define what a Trip-Linked Expense Report is

    Trip expense report1 trip - 1 bucket of costs

    Rippling
    Spend appLegacy app
    Travel app0→1 app
    Card Tranx
    Expenses
    Flights
    Hotels
    Rental cars
    Meals
    Client meetin...
    Enterntainment

    Trip-Linked Expense Report strategy and information architecture

    FIG. 04Trip-Linked Expense Report strategy and information architectureThe same nodes, inside one object
  3. Step 03.C Flows

    Flows

    Mapping admin user journeys; entry points from both apps

    From Travel App
    Select a flight
    Check out
    Select or create...
    How do you pay?
    My own money
    Rippling Travel Account (?)
    Rippling Corporate card
    System automatically creates a new expense request object
    TRIP OBJECT CREATED
    Trip dates confirmed
    Flight attached
    View trip spend
    Add expenses?
    Create a new expense, or select an existing one
    From Spend app
    Create new expense request
    Does this belong to a Trip object
    Submit your request
    Use my Corporate Card to make purchases during trip
    System detects Dates & Category of purchase
    Automatically attach to Trip Object
    Ask user to Confirm if that is correct. (Must go back into their Spend App)
    Expense added to trip
    • From Travel App leads to Select a flight
    • Select a flight leads to Check out
    • Check out leads to Select or create...
    • Select or create... leads to How do you pay?
    • How do you pay? leads to My own money
    • How do you pay? leads to Rippling Travel Account (?)
    • How do you pay? leads to Rippling Corporate card
    • My own money leads to System automatically creates a new expense request object
    • Rippling Travel Account (?) leads to TRIP OBJECT CREATED
    • Rippling Corporate card — Book — TRIP OBJECT CREATED
    • TRIP OBJECT CREATED leads to Trip dates confirmed
    • TRIP OBJECT CREATED leads to Flight attached
    • TRIP OBJECT CREATED leads to View trip spend
    • View trip spend leads to Add expenses?
    • Add expenses? leads to Create a new expense, or select an existing one
    • Create a new expense, or select an existing one leads to Expense added to trip
    • System automatically creates a new expense request object leads to Expense added to trip
    • From Spend app leads to Create new expense request
    • Create new expense request leads to Does this belong to a Trip object
    • Does this belong to a Trip object — Yes, attach to Trip Object — TRIP OBJECT CREATED
    • Does this belong to a Trip object leads to Submit your request
    • Submit your request leads to Expense added to trip
    • Use my Corporate Card to make purchases during trip leads to System detects Dates & Category of purchase
    • System detects Dates & Category of purchase leads to Automatically attach to Trip Object
    • Automatically attach to Trip Object leads to Ask user to Confirm if that is correct. (Must go back into their Spend App)
    • Ask user to Confirm if that is correct. (Must go back into their Spend App) leads to Expense added to trip
    FIG. 05Spend and Travel admin journey flowsEntry points from both apps, converging on one trip
  4. Step 03.D Prototype/Test

    Prototype/Test

    Multiple concepts; tests with current/former Navan users

  5. Step 03.E Systemize

    Systemize

    Component specs → Design Systems; patterns reused for Time Off mobile

    BeforeLegacy Time Off Mobile UX

    Legacy Time Off mobile UX screen 1
    Legacy Time Off mobile UX screen 2
    Legacy Time Off mobile UX screen 3

    AfterUpdated Time Off Mobile UX

    Updated Time Off mobile UX screen 1
    Updated Time Off mobile UX screen 2
    Updated Time Off mobile UX screen 3
    Updated Time Off mobile UX screen 4
    Updated Time Off mobile UX screen 5
    Updated Time Off mobile UX screen 6
    FIG. 07Legacy Time Off Mobile UX · Updated Time Off Mobile UX

What I learned

  1. The object model (not navigation) is the lever that collapses silos
  2. Investing in shared mobile components early prevents drift and compounds speed
The single trip model finally matches how travelers think: one itinerary, one total. The additional UI refresh makes this feel like a real app
— From a current Rippling / Ex-Navan user