doordash-report — Claude Code command: DoorDash spending report
Matches the agent's activity log against actual DoorDash order history and prints totals, a per-restaurant breakdown, reorder share and abandoned-cart rate.
npx claude-code-templates@latest --command doordash/doordash-reportWhat doordash-report does
The command pulls from three places: ~/.claude/dd-guard/audit.jsonl written by the doordash-audit-log hook, the spend-guard ledger at ~/.claude/dd-guard/ledger.jsonl when that plugin is present, and live dd-cli order history output. Each checkout_url event gets paired with a history entry by date and cart uuid. A match means a confirmed order. An unmatched event older than 24 hours counts as an abandoned cart.
Output parsing is the weak spot, because the dd-cli history format shifts between versions. When parsing fails, the report drops to intent-only mode and is labelled as unreconciled. Compare the numbers against your statement on the first run. Passing month widens the window to 30 days and adds a week-by-week spend line.
The audit log is append-only and only the hook writes to it. These files are a plaintext record of what you eat, so keep ~/.claude/dd-guard/ out of any repo you push.
What it helps with
- compare agent spending on delivery with real orders
- see how often the same restaurant gets ordered from
- count abandoned carts and their share of checkouts
- break monthly spend down week by week
- total up what a single cuisine cost over a period
Example prompts for the agent
- Run a DoorDash spending report for this week
- Call
/doordash-report monthand tell me how much went to ramen - Reconcile the audit log with order history and show what I ordered most
How to install doordash-report
1claude-code-templates
npx claude-code-templates@latest --command doordash/doordash-report2Manually: put the files in place
.claude/commands/doordash-report.mdCall it with /doordash-report. For all projects use ~/.claude/commands/
Manually: put the files in place
~/.codex/prompts/doordash-report.mdCall it with /prompts:doordash-report. Codex marks this format deprecated in favour of skills
Manually: put the files in place
.github/prompts/doordash-report.prompt.mdManually: put the files in place
.gemini/commands/doordash-report.tomlGemini stores commands as TOML: the prompt text goes into the prompt field
Questions about doordash-report
How do I install doordash-report in Claude Code?
Run npx claude-code-templates@latest --command doordash/doordash-report; the command file lands at .claude/commands/doordash-report.md.
What does doordash-report do?
It lines up agent events with dd-cli order history and renders a short report: spend, order count, restaurants, reorders and abandoned carts.
What does it need to produce a reconciled report?
A working dd-cli with order history and the ~/.claude/dd-guard/audit.jsonl log from the doordash-audit-log hook. If the dd-cli output cannot be parsed, the report falls back to log-only figures.
Source text
doordash-report.md · MIT
---
allowed-tools: Bash(dd-cli:*), Bash(cat:*), Bash(jq:*), Bash(wc:*), Read, Write, Edit
argument-hint: [week | month]
description: Spend and activity report for agent-driven DoorDash ordering - reconciles the audit log against real order history and renders totals, per-restaurant breakdown, repeat rate, and abandoned-cart rate
---
# DoorDash Activity Report
Report period: **$ARGUMENTS** (default: `week`)
Data sources: `~/.claude/dd-guard/audit.jsonl` (written by the doordash-audit-log
hook), `~/.claude/dd-guard/ledger.jsonl` (if doordash-spend-guard is installed),
and live `dd-cli order history`.
## Current State
- Audit events: !`wc -l < ~/.claude/dd-guard/audit.jsonl 2>/dev/null || echo "0"`
- Last reconciled: !`cat ~/.claude/dd-guard/last-reconciled 2>/dev/null || echo "(never)"`
## Task
### 1. Reconcile
1. Run `dd-cli order history` and parse the entries (date, restaurant,
total, order_uuid).
- **Parsing fallback**: the exact output format is version-dependent. If
you cannot parse it confidently, fall back to **intent-only mode**:
report from the audit log alone and label the report clearly as
"unreconciled — based on agent activity, not confirmed orders".
2. Match `checkout_url` audit events (and ledger intents) against history
entries by date proximity and cart/order uuid where visible:
- matched → confirmed order
- checkout_url event with no matching order after 24h → abandoned cart
3. Update `~/.claude/dd-guard/last-reconciled` with today's date. If
doordash-spend-guard's ledger exists, flip matched intents to `paid` /
`abandoned` exactly as `/doordash-budget reconcile` would.
### 2. Render the report (right-sized — no dashboard theater)
```
DoorDash activity — week of 2026-07-13
Confirmed spend: $87.40 (prev week $52.10, +68%)
Orders: 4 confirmed, 1 abandoned cart (20% abandon rate)
By restaurant: Sweetgreen $34.90 (2x) · Thai Palace $28.50 · ...
Repeat rate: 75% of orders were reorders/playbooks
Agent activity: 12 searches, 9 cart mutations, 5 checkout URLs
```
- Totals from history are real; totals from intents are pre-fee subtotals —
label which is which.
- `month` argument widens the window to 30 days and adds a week-by-week
spend line.
### 3. Answer follow-ups from data
For questions like "what did I order most?" or "how much on ramen this
month?", query the audit log with `jq` (the doordash-order-ledger skill documents
recipes) — never answer from memory.
## Rules
- Never edit audit.jsonl — it is append-only; only the hook writes it.
- Keep `cuisine-map.json` (restaurant → cuisine) next to the audit log if
the user wants cuisine grouping; persist their corrections there.
- Privacy: these files are a local plaintext record of eating habits.
Remind the user once to keep `~/.claude/dd-guard/` out of any repo.
© davila7 · MIT · davila7/claude-code-templates