The Technique — Claude Code as a Personal Finance Agent
A developer documented a workflow using Claude Code CLI and Obsidian to handle personal tax filing in Canada. Instead of just asking Claude questions, they created a structured environment where Claude could act as an agent with access to documents, code, and context.
The core setup: an Obsidian vault serving as the central workspace, with folders for each tax year and person. Within each folder, they placed key files:
CLAUDE.md— Instructions and context for ClaudePLAN.md— Tax strategy and calculationsFILED.md— Final submission details- Actual tax documents (PDFs, receipts, forms)
Why It Works — Context + Deterministic Calculation
This workflow succeeds because it separates Claude's strengths:
- Context understanding — Claude reads PDFs, extracts relevant numbers, and understands tax concepts
- Deterministic calculation — Python scripts handle the actual math, ensuring accuracy
- Persistent workspace — Obsidian keeps everything organized and accessible
The developer used Python libraries like markitdown[all] (Microsoft's open-source library for information extraction) to help Claude process PDFs. They also created custom bash functions for quick Claude invocations.
How To Apply It — Build Your Own Financial Agent
Here's how to adapt this workflow for your own use:
1. Set up your Obsidian vault structure:
financial_vault/
├── CLAUDE.md
├── main.py
├── pyproject.toml
├── 2024/
│ ├── taxes/
│ │ ├── CLAUDE.md
│ │ ├── PLAN.md
│ │ ├── documents/
│ │ └── calculations.py
│ └── investments/
└── scripts/
└── pdf_extract.py
2. Create your root CLAUDE.md:
# Financial Analysis Workspace
## Available Tools
- Python 3.11+ with uv for dependency management
- markitdown library for PDF extraction
- Custom scripts in ./scripts/
## Workflow
1. First examine the folder structure
2. Use Python to extract data from PDFs when needed
3. Create calculations in separate .py files
4. Update PLAN.md with findings
## Rules
- Always verify extracted numbers
- Keep calculations deterministic
- Document assumptions
3. Install the essential Python tools:
# Using uv for fast dependency management
uv init
uv add markitdown[all] pandas numpy
# Create a helper script for Claude to use
cat > scripts/pdf_extract.py << 'EOF'
import markitdown
from pathlib import Path
def extract_financial_data(pdf_path):
"""Extract text and tables from financial PDFs"""
result = markitdown.convert(pdf_path)
return result.text, result.tables
EOF
4. Work with Claude Code in the vault:
# Navigate to your vault
cd ~/obsidian_vault
# Start Claude Code with context
claude code --context .
# Then give instructions like:
"Analyze the T4 forms in taxes/2024/documents/ and calculate total income"
Beyond Taxes — Generalizing the Pattern
This pattern works for any document-heavy analysis:
- Investment portfolio review — Process brokerage statements
- Expense tracking — Analyze bank/credit card statements
- Contract review — Extract terms and dates from agreements
- Research compilation — Organize and summarize multiple sources
The key insight: Claude Code isn't just for software projects. When you give it a structured workspace with the right tools (Python for calculation, Obsidian for organization), it becomes a powerful agent for personal data analysis.
What Changed — A New Use Case Emerges
This developer's experience shows Claude Code moving beyond traditional coding tasks into personal productivity and data analysis. The March 28th update to Claude Code (v2.1.85) with performance fixes and conditional hooks makes these longer, document-heavy workflows more reliable.
What It Means For You — Claude Code as a Data Assistant
You can now use Claude Code for tasks that previously required manual data entry or specialized software. The combination of:
- Claude's ability to understand documents
- Python's calculation reliability
- Obsidian's organizational flexibility
Creates a system where you're not just asking questions—you're building a repeatable analysis pipeline.
Try It Now — Start Small
Begin with a single document type:
# Create a test workspace
mkdir ~/finance_test && cd ~/finance_test
# Add one PDF and a simple CLAUDE.md
echo "Extract the total amount from this receipt" > CLAUDE.md
# Let Claude analyze it
claude code --context . "What's the total on this receipt?"
Once this works, expand to your actual financial documents using the Obsidian vault structure described above.



