v0.2.0
Turn rental receipts into Schedule E line items using Claude AI.
Drop receipts. Confirm. Done.
$ r2s process
Processing 4 receipt(s)...
Parsing amazon-05-12.pdf... done
Parsing plumber.pdf... done
Parsing electric-bill.pdf... done
Parsing hot-tub-invoice.pdf... done [CAPITAL]
┌───┬──────────────────────┬──────────────────┬────────────┬──────────┬──────────────────────┬──────────┐
│ # │ File │ Vendor │ Date │ Amount │ Category │ Type │
├───┼──────────────────────┼──────────────────┼────────────┼──────────┼──────────────────────┼──────────┤
│ 1 │ amazon-05-12.pdf │ Amazon │ 2026-05-12 │ $45.99 │ Supplies │ operating│
│ 2 │ plumber.pdf │ Anewhere Plumb.. │ 2026-05-10 │ $180.00 │ Repairs │ operating│
│ 3 │ electric-bill.pdf │ Peninsula Light │ 2026-05-01 │ $67.23 │ Utilities │ operating│
│ 4 │ hot-tub-invoice.pdf │ Aqua Quip │ 2025-05-26 │ $8350.73 │ Other │ CAPITAL │
└───┴──────────────────────┴──────────────────┴────────────┴──────────┴──────────────────────┴──────────┘
? What would you like to do?
❯ Confirm all
Confirm invoices only (skip $0 entries)
Edit entries
Skip all
- Schedule E ready — Categories match IRS rental property deductions
- Capital vs Operating — Automatically routes major purchases to Capital Improvements
- No SaaS — Your data stays local; just pay Claude API costs (~$2/month)
- Works with your spreadsheets — Updates xlsx files you can open in Excel, Numbers, or Google Sheets
- Vendor hints — Configure known vendors in
r2s.yamlto guide Claude's categorization
Your financial data is sensitive. We treat it that way.
- All spreadsheets stay local — Nothing synced to the cloud
- Automatic PII redaction — Credit cards, SSNs, and bank details are scrubbed from text before API calls
- No telemetry — Zero analytics, tracking, or phone-home
- Open source — Audit the code yourself
See PRIVACY.md for full details on what data goes where.
# Clone and install
git clone https://github.com/TeamNickHart/receipt2sheet.git
cd receipt2sheet
pnpm install
pnpm build
# Set up your API key
cp .env.example .env.local
# Edit .env.local with your Anthropic API key# Initialize in your rental folder
cd ~/Documents/MyRental
r2s init
# Check your setup
r2s doctor
# Drop receipts in inbox/
cp ~/Downloads/*.pdf inbox/
# Process them
r2s processMyRental/
├── r2s.yaml # Your config
├── inbox/ # Drop receipts here
├── processed/ # Receipts move here after processing
├── .r2s/
│ └── processed.json # Processing ledger
└── spreadsheets/
├── Operating_Expenses_2026.xlsx
├── Capital_Improvements.xlsx
└── Year_End_Summary.xlsx
| Command | Description |
|---|---|
r2s init |
Set up a new rental folder |
r2s process [files...] |
Parse receipts from inbox |
r2s doctor |
Check setup, API connection, project health |
r2s doctor --fix |
Auto-fix missing directories and files |
r2s process # Process all files in inbox/
r2s process receipt.pdf # Process specific file(s)
r2s process --dry-run # Preview without updating spreadsheets
r2s process --yes # Skip confirmation prompt
r2s process --property cabin # Assign to a specific property
r2s process --category Repairs # Override category for all receipts
r2s process --force # Reprocess already-processed filesEdit to add your properties and vendors:
properties:
- id: cabin
name: "Lake Cabin"
location: "Lake Tahoe, CA"
type: short-term-rental
placed_in_service: 2026-01
vendors:
"Local Plumber":
category: Repairs
"Electric Co":
category: UtilitiesANTHROPIC_API_KEY=sk-ant-your-key-here
# Model: small (Haiku), medium (Sonnet), large (Opus), or exact model ID
# R2S_MODEL=medium
# Max upload size in MB
# R2S_MAX_FILE_SIZE_MB=10Track multiple rentals with one tool:
r2s process --property cabin
r2s process --property condo
r2s status --property all- Text extraction — Pulls text from PDFs; sends scanned PDFs directly to Claude as documents
- Claude parsing — Identifies vendor, date, amount, category, and expense type (operating vs capital)
- You confirm — Review, edit, or skip before anything changes
- Spreadsheet update — Routes operating expenses and capital improvements to the correct files
- Receipt archived — Moves to
processed/folder, records in processing ledger
- PDF (text extraction + native document upload for scanned files)
- PNG, JPG, JPEG, WebP (vision API)
Claude API usage is minimal:
- ~$0.01–0.05 per receipt (text extraction)
- ~$0.05–0.15 per receipt (PDF document or image vision)
- Typical month: $1–3 for 50 receipts
pnpm install # install dependencies
pnpm validate # typecheck + format + lint + build + test
pnpm test # run tests
pnpm test:watch # run tests in watch mode
pnpm test:coverage # run tests with coverage report
pnpm fixtures:generate # regenerate test fixture PDFsContributions are welcome! Please read the PLAN.md for architecture details and implementation status.
- PRIVACY.md — Privacy policy and security details
- PLAN.md — Detailed implementation spec
- ROADMAP.md — What's next
- SKILL.md — For Claude Code/Desktop users