A fully static web application to track credit card benefits for Amex Platinum and Chase Sapphire Reserve. Import your CSV statements from Amex and Chase to automatically track benefit usage. All data is stored locally in your browser and never sent to any servers.
- π₯ Automatic CSV Import: Import transactions from both Amex and Chase
- π Track Benefits: Monitor all your credit card benefits in one place
- π³ Multi-Card Support: Mix Amex Platinum and Chase Sapphire Reserve benefits
- π Progress Visualization: Visual progress bars showing usage status
- π Multiple Reset Frequencies: Annual, twice-yearly, quarterly, and monthly tracking
- π Enrollment Tracking: Highlight benefits requiring enrollment
- π Historical View: Look back at prior years' benefit usage
- π Hide Benefits: Ignore benefits you don't use
- π Transaction Viewer: Debug which transactions match which benefits
- π Privacy-First: All user data stored locally in your browser
- π€ Vibe Coded: Built with Claude and MiniMax in OpenCode, so enjoy the bugs!
Import your credit card statements to automatically track benefit credits. All processing happens client-side β your data never leaves your browser.
- Go to americanexpress.com/activity and set your date range from 01-01-2024 to today
- Click Download β CSV (Include all additional transaction details) β Download
- In the app, open Transactions and drag/drop your CSV file
- Go to Chase Account Activity
- Select your Sapphire Reserve card and set your date range (note: exporting can be finicky, try different ranges if it fails)
- Click Download and select CSV
- In the app, open Transactions and drag/drop your CSV file
| Benefit | Annual Value | Reset Frequency | Enrollment Required |
|---|---|---|---|
| Hotel | $600 | Twice-yearly ($300 each) | No |
| Uber One | $120 | Annual | No |
| Airline Fee | $200 | Annual | Yes |
| CLEAR Plus | $209 | Annual | No |
| Resy | $400 | Quarterly ($100 each) | Yes |
| Digital Entertainment | $300 | Monthly ($25/mo) | Yes |
| lululemon | $300 | Quarterly ($75 each) | Yes |
| Walmart+ | $155 | Monthly (~$12.95/mo) | No |
| Saks Fifth Avenue | $100 | Twice-yearly ($50 each) | Yes |
| Oura Ring | $200 | Annual | Yes |
| Equinox | $300 | Annual | Yes |
| Benefit | Annual Value | Reset Frequency | Enrollment Required |
|---|---|---|---|
| Travel | $300 | Annual | No |
| The Edit Hotel | $500 | Annual | No |
| Exclusive Tables Dining | $300 | Twice-yearly ($150 each) | No |
| DoorDash | $300 | Monthly ($25/mo) | Yes |
| Lyft | $120 | Monthly ($10/mo) | Yes |
| Peloton | $120 | Annual | Yes |
| StubHub/viagogo | $300 | Twice-yearly ($150 each) | Yes |
- Uber Cash, DoorDash credits, and Lyft credits are not currently tracked (these credits are loaded directly into their respective apps rather than appearing as statement credits)
- Global Entry/TSA PreCheck is not fully functional yet due to its multi-year (4-year) reset cycle
- Benefits are considered "completed" if 50%+ of the credit is redeemed, or if 50%+ of segments are completed
- Runtime: Bun
- Language: TypeScript
- Frontend: React + Vite
- Styling: Tailwind CSS
- Data Storage:
- Benefit definitions: Static JSON (
/benefits.json) - User data: Browser localStorage
- Benefit definitions: Static JSON (
- Bun installed (version 1.0.0+)
bun installbun dev# Build static files to dist/
bun run build
# Preview production build locally
bun run preview# Run E2E tests
bun run test:e2e
# Install Playwright browsers (first time only)
bun run test:e2e:install# Run oxlint
bun run lint
# Run with all plugins
bun run checkThis is a fully static app - no server required. To deploy:
- Build:
bun run build - Upload contents of
dist/to any static host:- GitHub Pages
- Netlify
- Vercel
- AWS S3 + CloudFront
- Any web server
- Benefit definitions: Stored in
public/benefits.json(static, version-controlled) - User data: Stored in browser
localStorageunder keyuser-benefits- Usage amounts
- Enrollment status
- Ignored/hidden benefits
- Period-specific tracking
MIT
