Expense Report Generator
by dkyazzentwatwa
Generate formatted expense reports from receipt data or CSV. Create professional PDF reports with categorization, totals, and approval workflows.
Skill Details
Repository Files
3 files in this skill directory
name: expense-report-generator description: Generate formatted expense reports from receipt data or CSV. Create professional PDF reports with categorization, totals, and approval workflows.
Expense Report Generator
Create professional expense reports from receipt data with automatic categorization and totals.
Features
- Multiple Input Formats: CSV, JSON, or manual entry
- Auto-Categorization: Classify expenses by type
- Receipt Tracking: Link receipts to expenses
- Approval Workflow: Status tracking and approver info
- Policy Compliance: Flag out-of-policy expenses
- PDF Export: Professional formatted reports
- Reimbursement Calculation: Track paid/unpaid amounts
Quick Start
from expense_report import ExpenseReportGenerator
report = ExpenseReportGenerator()
# Set report info
report.set_employee("John Doe", "EMP001", "Engineering")
report.set_period("2024-01-01", "2024-01-31")
# Add expenses
report.add_expense(
date="2024-01-15",
description="Client dinner",
category="Meals",
amount=125.50,
receipt="receipt_001.jpg"
)
report.add_expense(
date="2024-01-18",
description="Uber to airport",
category="Transportation",
amount=45.00
)
# Generate report
report.generate_pdf("expense_report.pdf")
CLI Usage
# From CSV
python expense_report.py --input expenses.csv --employee "John Doe" --output report.pdf
# With date range
python expense_report.py --input data.csv --start 2024-01-01 --end 2024-01-31 -o report.pdf
# Set department and approver
python expense_report.py --input data.csv --employee "Jane Smith" --dept Sales \
--approver "Bob Manager" -o report.pdf
# With policy limits
python expense_report.py --input data.csv --policy policy.json -o report.pdf
Input Format
CSV Format
date,description,category,amount,receipt,notes
2024-01-15,Client dinner at Restaurant,Meals,125.50,receipt_001.jpg,Met with ABC Corp
2024-01-16,Uber to client site,Transportation,32.00,,
2024-01-17,Office supplies,Supplies,45.99,receipt_002.jpg,
2024-01-18,Flight to NYC,Travel,450.00,flight_confirm.pdf,Project kickoff
JSON Format
{
"employee": "John Doe",
"employee_id": "EMP001",
"department": "Engineering",
"period": {"start": "2024-01-01", "end": "2024-01-31"},
"expenses": [
{
"date": "2024-01-15",
"description": "Client dinner",
"category": "Meals",
"amount": 125.50,
"receipt": "receipt_001.jpg"
}
]
}
Policy Configuration
{
"limits": {
"Meals": 75,
"Transportation": 100,
"Lodging": 250,
"Supplies": 200
},
"requires_receipt": 25,
"requires_approval": 500,
"prohibited": ["Alcohol", "Personal items"]
}
API Reference
ExpenseReportGenerator Class
class ExpenseReportGenerator:
def __init__(self)
# Report Setup
def set_employee(self, name: str, employee_id: str = None,
department: str = None) -> 'ExpenseReportGenerator'
def set_period(self, start: str, end: str) -> 'ExpenseReportGenerator'
def set_approver(self, name: str, title: str = None) -> 'ExpenseReportGenerator'
def set_project(self, project_name: str, project_code: str = None) -> 'ExpenseReportGenerator'
# Adding Expenses
def add_expense(self, date: str, description: str, category: str,
amount: float, receipt: str = None, notes: str = None,
reimbursable: bool = True) -> 'ExpenseReportGenerator'
def load_csv(self, filepath: str) -> 'ExpenseReportGenerator'
def load_json(self, filepath: str) -> 'ExpenseReportGenerator'
# Policy
def set_policy(self, policy: Dict) -> 'ExpenseReportGenerator'
def check_compliance(self) -> List[Dict]
# Analysis
def get_summary(self) -> Dict
def by_category(self) -> Dict[str, float]
def by_date(self) -> Dict[str, float]
def get_total(self) -> float
# Export
def generate_pdf(self, output: str) -> str
def generate_html(self, output: str) -> str
def to_csv(self, output: str) -> str
def to_json(self, output: str) -> str
Expense Categories
Standard categories:
- Meals: Business meals and entertainment
- Transportation: Taxi, rideshare, rental car, parking
- Travel: Flights, trains, hotels
- Lodging: Hotel, accommodation
- Supplies: Office supplies, equipment
- Communication: Phone, internet
- Professional: Conferences, training, memberships
- Other: Miscellaneous expenses
Report Summary
summary = report.get_summary()
# Returns:
# {
# "employee": "John Doe",
# "period": {"start": "2024-01-01", "end": "2024-01-31"},
# "total_expenses": 1250.50,
# "expense_count": 15,
# "categories": {
# "Meals": 325.00,
# "Transportation": 180.50,
# "Travel": 650.00,
# "Supplies": 95.00
# },
# "reimbursable": 1150.50,
# "non_reimbursable": 100.00,
# "receipts_attached": 12,
# "receipts_missing": 3
# }
Policy Compliance
# Set spending limits
report.set_policy({
"limits": {
"Meals": 75, # Per transaction limit
"Daily_meals": 100 # Daily limit
},
"requires_receipt": 25, # Receipts required above this
"requires_approval": 500 # Manager approval above this
})
# Check compliance
violations = report.check_compliance()
# Returns:
# [
# {"expense_id": 3, "type": "over_limit", "category": "Meals",
# "amount": 125.50, "limit": 75},
# {"expense_id": 7, "type": "missing_receipt", "amount": 45.00}
# ]
Generated Report Contents
The PDF report includes:
-
Header
- Company logo (optional)
- Report title and date range
- Employee information
-
Summary Section
- Total amount
- Category breakdown
- Reimbursement status
-
Expense Details Table
- Date, description, category
- Amount, receipt status
- Notes
-
Category Charts
- Pie chart of spending by category
- Daily spending bar chart
-
Compliance Notes
- Policy violations (if any)
- Missing receipts
-
Approval Section
- Employee signature line
- Approver signature line
- Date fields
Example Workflows
Monthly Employee Report
report = ExpenseReportGenerator()
report.set_employee("Sarah Johnson", "EMP042", "Marketing")
report.set_period("2024-02-01", "2024-02-29")
report.set_approver("Mike Director", "VP Marketing")
# Load from tracking spreadsheet
report.load_csv("february_expenses.csv")
# Check policy
violations = report.check_compliance()
if violations:
print(f"Warning: {len(violations)} policy violations")
# Generate report
report.generate_pdf("sarah_feb_expenses.pdf")
print(f"Total: ${report.get_total():,.2f}")
Project Expense Tracking
report = ExpenseReportGenerator()
report.set_employee("Project Team")
report.set_project("Website Redesign", "PRJ-2024-001")
report.set_period("2024-01-01", "2024-03-31")
# Add project expenses
report.add_expense("2024-01-15", "Design software license", "Software", 299.00)
report.add_expense("2024-02-01", "User testing incentives", "Research", 500.00)
report.add_expense("2024-02-20", "Stock photos", "Creative", 150.00)
summary = report.by_category()
print("Project Expenses by Category:")
for cat, amount in summary.items():
print(f" {cat}: ${amount:,.2f}")
Dependencies
- pandas>=2.0.0
- reportlab>=4.0.0
- matplotlib>=3.7.0
Related Skills
Xlsx
Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas
Clickhouse Io
ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads.
Clickhouse Io
ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads.
Analyzing Financial Statements
This skill calculates key financial ratios and metrics from financial statement data for investment analysis
Data Storytelling
Transform data into compelling narratives using visualization, context, and persuasive structure. Use when presenting analytics to stakeholders, creating data reports, or building executive presentations.
Kpi Dashboard Design
Design effective KPI dashboards with metrics selection, visualization best practices, and real-time monitoring patterns. Use when building business dashboards, selecting metrics, or designing data visualization layouts.
Dbt Transformation Patterns
Master dbt (data build tool) for analytics engineering with model organization, testing, documentation, and incremental strategies. Use when building data transformations, creating data models, or implementing analytics engineering best practices.
Sql Optimization Patterns
Master SQL query optimization, indexing strategies, and EXPLAIN analysis to dramatically improve database performance and eliminate slow queries. Use when debugging slow queries, designing database schemas, or optimizing application performance.
Anndata
This skill should be used when working with annotated data matrices in Python, particularly for single-cell genomics analysis, managing experimental measurements with metadata, or handling large-scale biological datasets. Use when tasks involve AnnData objects, h5ad files, single-cell RNA-seq data, or integration with scanpy/scverse tools.
Xlsx
Spreadsheet toolkit (.xlsx/.csv). Create/edit with formulas/formatting, analyze data, visualization, recalculate formulas, for spreadsheet processing and analysis.
