| name | expense-tracking |
| version | 1.0.0 |
| category | business |
| description | Track, categorize, and analyze business expenses including credit card statement import and monthly expense reports. |
| type | reference |
| tags | ["finance","expenses","credit-card","reporting","bookkeeping"] |
| related_skills | ["tax-preparation","invoice-automation"] |
| scripts_exempt | true |
Expense Tracking
Track, categorize, and analyze business expenses for AceEngineer Inc.
Description
This skill manages expense tracking including credit card statement import, automatic categorization, and expense analysis for engineering consulting operations.
Trigger Conditions
Activate when the user mentions:
- Expense tracking or expense management
- Credit card statement import
- Expense categorization
- Business expense analysis
- Monthly expense reports
Core Capabilities
- Statement Import: Import credit card and bank statements
- Auto-Categorization: Automatically categorize expenses by type
- Receipt Management: Link receipts to transactions
- Expense Analysis: Generate expense reports and visualizations
- Budget Comparison: Compare actual vs budgeted expenses
Usage Examples
from aceengineer_admin.common import import_statement
expenses = import_statement("statements/amex_2025_01.csv")
categorized = categorize_expenses(expenses)
report = generate_expense_report(
year=2025,
month=1,
output_format="html"
)
Expense Categories
Operating Expenses
- Software subscriptions
- Cloud services
- Communication (phone, internet)
- Professional memberships
Travel Expenses
- Airfare
- Hotels and lodging
- Ground transportation
- Per diem meals
Office Expenses
- Office supplies
- Equipment purchases
- Furniture
- Maintenance
Professional Services
- Legal fees
- Accounting fees
- Consulting fees
- Insurance
Output Reports
reports/
├── monthly_expense_report.html # Interactive Plotly charts
├── expense_by_category.xlsx
├── vendor_analysis.xlsx
└── budget_variance.xlsx
Configuration
categories:
- name: "Software"
keywords: ["adobe", "microsoft", "github", "aws"]
- name: "Travel"
keywords: ["airline", "hotel", "uber", "lyft"]
- name: "Office"
keywords: ["staples", "amazon", "office depot"]
budget:
software: 500.00
travel: 2000.00
office: 300.00
Dependencies
- pandas: Data processing and analysis
- plotly: Interactive expense visualizations
- openpyxl: Excel report generation
Related Files
aceengineer_admin/common/: Common utilities
expense_data/: Historical expense data
statements/: Imported statements
Workflow
- Import credit card/bank statement CSV
- Parse and clean transaction data
- Apply auto-categorization rules
- Flag transactions requiring review
- Generate expense reports
- Update expense tracking spreadsheet
Locating the Latest AceEngineer Expense Workbook Across Machines
Use this when the user asks for the latest workbook and mentions network machines such as home-win, aceengineer-va, or the Mac portable machine.
Recommended retrieval order
- Check the local repo copy first:
aceengineer-admin/Sabitha/<year>/EXPENSES Jan <year>-Dec<year> ...
- Search both
*.xlsx and *.ods
- Compare mtimes before assuming the newest year/file:
- local repo can already contain the newest workbook even if remote access fails
- Test live network reachability before attempting access:
- Windows/home-win: ping + port 445 (SMB)
- Mac portable: resolve hostname via mDNS/avahi, then test ping + port 22
- Treat documented IPs as hints, not ground truth:
- hostname/IP mappings can drift
- prefer fresh resolution over stale notes
- If the newest workbook is
.ods, convert/export a values-only .xlsx copy for downstream users who expect Excel
Important operational findings
home-win may be reachable on LAN with SMB open, but stored SMB credentials can be stale; verify authentication before promising remote retrieval.
- The portable Mac may resolve on the LAN via mDNS even when the documented IP is stale; use
avahi-resolve/hostname resolution rather than relying only on old registry values.
- A machine can respond to ping while still having SSH/File Sharing disabled; verify service ports explicitly.
- For AceEngineer expense files, the newest artifact may be
.ods rather than .xlsx.
ODS handling pattern
When the newest workbook is an ODS file and the user needs an Excel workbook:
- Read ODS sheets programmatically with
odfpy
- Preserve sheet names and cell text values
- Write a values-only
.xlsx copy with openpyxl
- Tell the user clearly that formulas/formatting may not be preserved in the exported copy
Verification checklist
- Confirm exact source path of the newest workbook
- Report whether it was local or remotely retrieved
- Extract headline totals the user likely cares about:
- total revenue
- total expenses
- net income
- any major line items already populated
- State any access limitations explicitly if remote machines were unreachable or auth failed