Automate monthly reporting with Claude Code
The problem
Every month, someone spends hours pulling together reports - extracting data from your CRM, copying figures from spreadsheets, formatting everything into a Word document or slide deck for the board. It's tedious, error-prone, and the person who knows how to do it is a single point of failure.
The solution
Use Claude Code to build a reporting automation that pulls data from your sources, processes it, and generates a formatted report. Describe your current manual process; Claude builds a script that replicates it. Run it monthly with a single command. When requirements change, describe the change and Claude updates the script.
What you get
A monthly report generated automatically from your data sources. Consistent formatting, no copy-paste errors, runs in minutes instead of hours. The process is documented in code, so it survives staff turnover. You can also get intermediate data files for further analysis.
Before you start
- Claude Code set up and working (see setup recipes)
- Comfort running Claude Code commands (practice with simpler recipes first)
- Access to your data sources (even if just as exported files)
- A clear understanding of your current reporting process
- At least one month of historical data to test with
When to use this
- You create the same report every month with updated data
- The report involves pulling from multiple data sources
- Current process takes more than 2 hours monthly
- Errors have crept in from manual copy-paste
- You want the process documented so others can run it
- You're worried about what happens when the report-creator leaves
When not to use this
- The report changes significantly every month (it's more like analysis than reporting)
- Data sources change frequently and unpredictably
- You only create this report quarterly or annually (automation ROI is lower)
- The data is highly confidential and can't go through any external service
- A simple pivot table refresh would achieve the same result
Steps
- 1
Document your current process in detail
Write down every step you currently take to create the report. Be specific: 'Open Salesforce, run the Donations This Month report, export to CSV. Open the CSV, filter to only include completed donations, sum by fund code.' Include where files come from, what transformations you apply, and what the final output looks like.
- 2
Gather example data sources
Collect the data files from last month's report. Export from your CRM, download from Google Sheets, save copies of any spreadsheets you pull from. Put them all in one folder that Claude Code can access. Name them clearly: donations_dec2024.csv, volunteer_hours_dec2024.xlsx.
- 3
Show Claude an example of the finished report
Give Claude Code access to a completed report so it understands the target format. Say: 'This is the monthly board report we produce. I want to automate creating this from the raw data files.' Claude will analyse the structure and understand what output you need.
- 4
Describe the workflow to Claude
Walk Claude through your documented process: 'Here's how I currently create this report. Step 1: I load donations.csv and filter to only Status=Complete...' Include any business logic: 'Donations over £5000 need to be flagged. The overhead percentage is always 15% of direct costs.'
- 5
Build the automation incrementally
Don't try to automate everything at once. Start with the first data source: 'Let's start by just processing the donations data and creating the donations summary table.' Get that working, then add the next source. This makes debugging much easier.
- 6
Test with historical data
Run the automation on last month's data and compare to the report you manually created. Do the numbers match? If not, debug with Claude: 'The volunteer hours total shows 342 but my manual report shows 356. Can you check the calculation?' Fix discrepancies before moving on.
- 7
Add narrative generation (optional)
If your report includes written commentary, Claude can generate that too: 'Add a paragraph summarising the key trends in this month's data. Flag if donations are significantly up or down versus the previous month. Keep the tone factual and suitable for board trustees.'
- 8
Create a simple run script
Ask Claude: 'Create a simple script I can run each month. It should: 1) Ask me to confirm the data files are in the folder, 2) Process everything, 3) Generate the report, 4) Tell me when it's done and where to find the output.' This makes future runs one-click.
- 9
Document for handover
Ask Claude: 'Write documentation explaining: what this automation does, what files it needs, how to run it, common problems and solutions, and how to modify it if report requirements change.' Save this alongside the scripts. Your successor will thank you.
- 10
Run with human review
Even when automation is working, keep a human review step. The first few months, compare automated output to what you would have produced manually. Over time you'll trust it more, but never skip the final check before board papers go out.
Example code
Example prompt for board reporting automation
A sample initial prompt for automating a monthly board report.
I want to automate our monthly board report. Here's my current process:
DATA SOURCES (all in the 'data' folder):
1. donations.csv - exported from Salesforce, contains all donations this month
2. volunteer_hours.xlsx - manual spreadsheet tracking volunteer time
3. service_users.csv - exported from our case management system
4. budget_tracking.xlsx - our finance team's budget vs actuals
CURRENT MANUAL PROCESS:
1. Donations summary: Filter to Status=Complete, sum by Fund, count unique donors
2. Volunteer hours: Sum total hours, break down by activity type
3. Service users: Count new registrations, count active cases, count closed cases
4. Budget: Calculate variance (actual vs budget) for each budget line
REPORT SECTIONS:
- Executive summary (2-3 bullet points on key headlines)
- Fundraising table: Fund name, Amount raised, Number of donors, vs Last month
- Service delivery table: Metric, This month, Last month, Year to date
- Volunteer engagement: Total hours, breakdown pie chart data
- Financial summary: Budget line, Budget, Actual, Variance, RAG status
- Key risks and issues (I write this manually - don't automate)
OUTPUT FORMAT:
- Word document matching our template (attached example)
- Separate Excel file with all the underlying data tables
Let's start by just getting the donations summary working. The file donations.csv has columns: DonationID, Date, Amount, Fund, DonorName, Status, PaymentMethod.Example prompt for iterating on the automation
How to refine the automation after initial testing.
The donations section is working but I noticed some issues:
1. Gift Aid eligible donations should be shown separately
- There's a GiftAidEligible column (Yes/No) I forgot to mention
- Add a row showing "Potential Gift Aid claim" = sum of eligible amounts * 0.25
2. The "vs Last month" comparison is wrong
- You're comparing raw amounts but we need to compare like-for-like
- Exclude any exceptional donations over £10,000 from the comparison
- Add a note if there were exceptional donations
3. Please also add:
- Average donation amount
- Number of first-time donors (DonorType = "New")
- Number of regular givers (PaymentMethod = "Direct Debit")
Can you update the donations processing and regenerate just that section?Tools
Resources
Official documentation for Claude Code.
Generate grant reports from project datatutorialRelated recipe for automated report generation.
Chain AI techniques for workflowstutorialMore complex multi-step automation patterns.
Claude for Nonprofitsdocumentation75% discount on API costs for qualifying charities.
At a glance
- Time to implement
- days
- Setup cost
- low
- Ongoing cost
- low
- Cost trend
- decreasing
- Organisation size
- medium, large
- Target audience
- operations-manager, data-analyst, finance, ceo-trustees
Initial setup may take several Claude sessions (£5-15 total). Monthly runs cost £1-5 depending on data volume and report complexity. Time savings typically pay back within 2-3 months. Claude for Nonprofits 75% discount applies.