# Refund Radar

> refund-radar

- Skill: `andreolf/refund-radar` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add andreolf/refund-radar`
- Raw SKILL.md: https://api.skillmd.com/api/skills/andreolf/refund-radar/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: andreolf (https://skillmd.com/u/andreolf)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/andreolf/refund-radar

---

# refund-radar

A local-first, privacy-first bank statement auditor that detects recurring charges, flags suspicious transactions, and drafts ready-to-send refund requests.

## What This Skill Does

1. Parses bank/card statement exports (CSV or pasted text)
2. Detects recurring subscription charges
3. Flags unexpected, duplicate, and fee-like transactions
4. Generates an interactive HTML audit report
5. Creates ready-to-send refund request templates
6. Learns from your decisions to improve future scans

## Trigger Phrases

- "Scan my bank statement for refunds"
- "Analyze my credit card transactions"
- "Find recurring charges in my statement"
- "Check for duplicate or suspicious charges"
- "Help me dispute a charge"
- "Generate a refund request"

## How To Use

### Step 1: Get Your Statement

Export transactions from your bank as CSV, or copy-paste them as text.

### Step 2: Analyze

```bash
# From CSV file
python -m refund_radar analyze --csv ~/Downloads/statement.csv --month 2026-01

# From pasted text (stdin)
python -m refund_radar analyze --stdin --month 2026-01 --default-currency CHF
```

### Step 3: Review Flags

The tool will:
- Show recurring subscriptions with estimated next charge
- Flag unexpected charges (new merchants, spikes, duplicates)
- Ask clarifying questions in batches of 5-10

### Step 4: Get Your Report

Output files are saved to:
- `~/.refund_radar/reports/YYYY-MM.html` (interactive report)
- `~/.refund_radar/reports/YYYY-MM.json` (raw data)

### Step 5: Send Refund Requests

Copy refund templates directly from the HTML report. Templates are pre-filled with:
- Merchant name and date
- Charge amount
- Dispute reason
- Your preferred tone (concise, firm, friendly)

## CLI Reference

```bash
# Analyze a statement
python -m refund_radar analyze --csv path/to/file.csv --month 2026-01

# Analyze from stdin
python -m refund_radar analyze --stdin --month 2026-01 --default-currency CHF

# Mark a merchant as expected (wont flag in future)
python -m refund_radar mark-expected --merchant "AMZN Mktp"

# Mark a merchant as known recurring
python -m refund_radar mark-recurring --merchant "Spotify"

# List expected merchants
python -m refund_radar expected

# Reset all learned state
python -m refund_radar reset-state

# Export month data as JSON
python -m refund_radar export --month 2026-01 --out out.json
```

## Files Written

| Path | Purpose |
|------|---------|
| `~/.refund_radar/state.json` | Learned preferences and merchant history |
| `~/.refund_radar/reports/YYYY-MM.html` | Interactive audit report |
| `~/.refund_radar/reports/YYYY-MM.json` | Raw analysis data |

## Privacy Note

- **No network calls.** Everything runs locally.
- **No external APIs.** No Plaid, no cloud services.
- **Your data stays on your machine.** Reports are local HTML files.
- **Privacy toggle in reports.** Blur merchant names with one click.

## Detection Logic

### Recurring Charges
- Same merchant >= 2 times in 90 days
- Similar amounts (within 5% or 2.00)
- Consistent cadence (weekly, monthly, yearly)
- Known subscription keywords (Netflix, Spotify, etc.)

### Unexpected Charges
- **New merchant**: First time seeing this merchant AND amount > 30
- **Amount spike**: > 1.8x your baseline for this merchant
- **Duplicate**: Same merchant + amount within 2 days
- **Fee-like**: Contains FEE, COMMISSION, ATM, OVERDRAFT keywords
- **Currency anomaly**: Unusual currency or DCC indicator

## Example Flow

```
$ python -m refund_radar analyze --csv bank.csv --month 2026-01

Parsed 47 transactions for 2026-01

RECURRING CHARGES (5)
  Netflix          $15.99/mo   next: ~Feb 15
  Spotify          $11.99/mo   next: ~Feb 03
  iCloud           $2.99/mo    next: ~Feb 01
  ChatGPT Plus     $20.00/mo   next: ~Feb 20
  Gym Membership   $49.00/mo   next: ~Feb 10

FLAGGED (3)
  [HIGH] DUPLICATE: Amazon $29.99 on Jan 12 and Jan 12
  [MED]  AMOUNT SPIKE: Uber $87.50 (baseline: $25)
  [LOW]  FEE: ATM Withdrawal Fee $3.50

Report saved: ~/.refund_radar/reports/2026-01.html
```

## Improving Over Time

The tool remembers:
- Merchants you mark as expected
- Recurring subscriptions you confirm
- Your merchant aliases (e.g., "AMZN" = "Amazon")

This means fewer false positives on future runs.

