How to make a card
Loopcard reads a file you already have. We never log into Anthropic or Cursor (that would be a CFAA problem). We never ask for API keys.
1. Demo (no file)
On the home page, tap $6,000 night, $1,263 month, or $480 median. Those are labeled re-creations of published 2026 reporting, not anyone’s private invoice.
2. Anthropic / Claude spend CSV
Claude Team/Enterprise: Settings → Analytics → Export spend report. Drop the CSV on the studio. We look for a column named cost, spend, amount, or chargedCents.
3. Cursor usage CSV
Cursor dashboard → export usage events. If the column is chargedCents, we divide by 100.
4. Claude Code JSONL
Local transcripts under ~/.claude/projects/**/*.jsonl contain usage objects. Drop a jsonl, or run the CLI:
node cli/loopcard.js ~/.claude/projects/…/file.jsonl
JSONL totals are estimates from published list rates (Sonnet $2/$10, Opus $5/$25, Haiku $1/$5 per MTok as of Sep 2026). They will not match a discounted seat exactly.
5. ccusage JSON
If you already run npx ccusage, export JSON with daily costs and drop it. Loopcard is the PNG; ccusage remains the terminal.
6. Publish
Download PNG never leaves your device. Publish share URL sends only amount, source, caption, kind — not the file, not prompts, not keys. Anyone with the link can see those numbers.
CLI
node cli/loopcard.js [file] [--publish] reads local files. --publish posts aggregates to this server. Nothing is uploaded without that flag.