skills/expense-categorizer/SKILL.md
Auto-categorize expenses from receipts with learning from corrections
npx skillsauth add ticruz38/skills skills/expense-categorizerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Auto-categorize expenses from receipts using ML/rule-based categorization with learning from user corrections.
cd skills/expense-categorizer
npm install
npm run build
# Check status
npm run cli -- status
# Categorize a single receipt
npm run cli -- categorize 1
# Categorize all uncategorized receipts
npm run cli -- bulk
# Suggest category for a receipt (dry run)
npm run cli -- suggest 1
# Apply a correction (teaches the system)
npm run cli -- correct 1 --category "Office Supplies"
# Manage categories
npm run cli -- categories
npm run cli -- add-category "Professional Development" --keywords "course,training,certification,conference"
# View merchant mappings
npm run cli -- merchants
npm run cli -- map-merchant "Starbucks" --category "Dining"
# Statistics
npm run cli -- stats
npm run cli -- accuracy
import { ExpenseCategorizerSkill } from '@openclaw/expense-categorizer';
const skill = new ExpenseCategorizerSkill();
// Categorize a single receipt
const result = await skill.categorizeReceipt(1);
console.log(result.category); // "Dining"
console.log(result.confidence); // 0.92
// Bulk categorize all uncategorized receipts
const results = await skill.bulkCategorize();
// Suggest category without applying
const suggestion = await skill.suggestCategory(1);
// Apply correction to teach the system
await skill.applyCorrection(1, 'Office Supplies');
// Manage custom categories
await skill.addCategory({
name: 'Professional Development',
keywords: ['course', 'training', 'certification'],
parentCategory: 'Business'
});
// Get merchant mappings
const mappings = await skill.getMerchantMappings();
// Manually map a merchant
await skill.mapMerchant('Starbucks', 'Dining');
// Get categorization statistics
const stats = await skill.getStats();
await skill.close();
Data is stored in ~/.openclaw/skills/expense-categorizer/:
categorizer.db - SQLite database with categories, mappings, and learning datatesting
Suggest recipes based on dietary preferences, available ingredients, and cuisine preferences
development
Extract data from receipt photos using Google Vision API
business
QuickBooks Online integration for accounting sync - sync customers, invoices, and transactions with two-way sync and conflict resolution
testing
QuickBooks OAuth adapter for QuickBooks Online accounting integration. Built on top of auth-provider for secure token management with automatic refresh, multi-profile support, sandbox/production toggle, and health checks.