Expense Policy Engine
Receipts in, clean entries out
Styleguide v1
Color tokens
Neutral canvas, one trustworthy accent, semantic colors that never carry meaning alone.
Type ramp
Humanist sans for prose, tabular numerals for amounts, monospace for codes and IDs.
Display$1,284.16
H1This week's expense activity
H2Policy: Standard FY25
H3Review queue (12)
H4Lunch — Joe & The Juice
BodyAuto-approved against rule "Meals under $75 with itemized receipt."
SmallDecided 4 minutes ago by Policy v18 · GL 6420 · Cost center NYC-ENG
MonoEXP-2026-04-1928 · vendor_confidence=0.94
Spacing scale
Multiples of 4px — 4, 8, 12, 16, 24, 32, 48.
Buttons
Primary, secondary, ghost, destructive. One primary per surface.
Badges
Draft
Submitted
Auto-approved
Flagged · meals over $75
Rejected
Policy v18
Alerts and toasts
Batch pushed to QuickBooks27 expenses · $4,812.06 · reconciled to 100%.
3 receipts had low OCR confidenceThe submitter has been asked to confirm amounts.
Push failed — GL code 7799 not foundEdit category mapping and try again. No entries were created.
Card
Dinner — Carbone
EXP-2026-04-1817 · $214.00 · 4 attendees · submitted by Aisha Khan
Flagged by rule Meals over $150 require an attendee list — attendee list present but missing two names.
Table
Clear outer border, tinted header row, mono numerals. Collapses to a card list on narrow viewports.
| Reason | Vendor | Submitter | Amount | Action |
| No receipt over $25 | Lyft | D. Park | $48.20 | |
| Attendees missing | Carbone | A. Khan | $214.00 | |
| Disallowed merchant | Liquor Barn | R. Singh | $78.55 | |
Lyft$48.20
D. Park · No receipt over $25
Carbone$214.00
A. Khan · Attendees missing
Liquor Barn$78.55
R. Singh · Disallowed merchant
Empty state
Nothing waiting on you.
The policy handled 47 expenses today on its own. Anything that needs a reviewer lands here.