Design Corporate Travel Program

Medium40 min
1 / 30
understanding9 min read

Problem Statement: Corporate Travel & Business Profiles

Problem Statement: Corporate Travel & Business Profiles — corporate travel interview depth

Problem Statement: Corporate Travel & Business Profiles

Corporate travel programs (Uber for Business, Lyft Business, Concur integrations) wrap consumer ride-hail with policy governance, central billing, and finance-grade audit. Employees book under a business profile; the platform must prove which rules applied, bill the organization, and export receiptless expense lines without duplicate submissions.

ConcernDesign stance
Policy truthVersioned travel_policy pinned on each business_trip
Money pathCentral org billing account; platform never commingles personal PAN
Export pathIdempotent Concur batches keyed org_id:export_date
AbuseRules + graph signals on personal-use leakage

Section focus (sec-001): Uber for Business and Lyft Business sell governed mobility: employees book rides under company-paid profiles while finance receives audit-grade expense lines without manual receipt chasing.

Capacity signal: 2.4M enrolled employees; 180k concurrent policy evaluations/s at Monday 9am peaks

javaOne Dark Pro
1public record PolicyEvalResult(boolean allowed, int policyVersion, List<String> violationCodes) {}
2public final class ExpenseLine {
3 private final String tripId;
4 private final String orgId;
5 private final int amountCents;
6 private final String costCenterId;
7}
pythonOne Dark Pro
1def export_idempotency_key(org_id: str, export_date: str) -> str:
2 return f"{org_id}:{export_date}"
3
4def rolling_budget_spend_cents(lines: list[int], cap: int) -> bool:
5 return sum(lines) <= cap
typescriptOne Dark Pro
1export interface BusinessTripRequest {
2 employeeId: string;
3 businessProfileId: string;
4 costCenterId: string;
5 draftEstimateCents: number;
6}

Operational trace (sec-001)

Employee selects Business profile, Policy Engine evaluates max fare and vehicle class before match, trip bills org_id central invoice, nightly Concur export attaches GL code.

On-call metrics: policy_block_rate, expense_export_lag_hours, personal_trip_leakage_pct — treat sustained export lag above SLA or personal-trip leakage above 0.1% as P1 finance incidents.

Interview pivot: If interviewer asks flights/hotels, scope phase-2 TMC connector; MVP is on-demand ground transport with expense export.

Why interviewers care

Corporate Travel Program interviews reward crisp scope, explicit trade-offs, and failure stories—not generic microservice diagrams.

Interview checkpoint

Name one failure story for Problem Statement: Corporate Travel & Business Profiles that proves you understand real outages, not happy-path diagrams.

Key Highlights

  • policy_version pin (sec-001)
  • Central bill path (1)
  • Concur idempotent export (understanding)
  • Trip adapter isolation (0)
pro tip
sec-001: Pin policy_version on trip request before calling matching—auditors ask which rules applied.
interviewer loves
sec-001: State central bill vs reimbursement trade-off before drawing databases.
common mistake
sec-001: Mutating expense lines in place—Concur disputes need append-only export history.
trade off
sec-001: Hard policy blocks reduce leakage but increase employee support tickets—offer hybrid modes.

Section Rescue Kit

Buzzwords to use:

policy_versionreceiptless export

Safe statements:

  • "Before databases on Problem Statement: Corporate Travel & Business Profiles, I'll separate trip core adapter from policy engine."
  • "MVP is ground transport central bill with idempotent export—not flights."
Design Corporate Travel Program - System Design | WinJob | WinJob