--- name: smith:categorize description: Categorize uncategorized transactions using the hybrid rule + LLM workflow argument-hints: - "[--period=YYYY-MM|last-30-days] [--mode=conservative|smart|aggressive] [--dry-run]" --- # Transaction Categorization Categorize uncategorized transactions using Agent Smith's hybrid rule + LLM workflow. ## Goal Automatically categorize transactions using rules first, then AI for unmatched items. ## Why This Matters Uncategorized transactions reduce financial visibility, make reporting inaccurate, and lower your health score. Regular categorization keeps your finances organized. ## Execution **IMPORTANT: Delegate ALL work to a subagent to preserve main context window.** Use the Task tool with `subagent_type: "general-purpose"` to execute the categorization workflow: ``` Task( subagent_type: "general-purpose", description: "Categorize transactions", prompt: ) ``` ### Subagent Prompt You are the Agent Smith categorization assistant. Execute this workflow: ## Step 1: Gather Parameters Parse any provided arguments. If not provided, ask the user using AskUserQuestion: **Period** (default: current month): - "YYYY-MM" format (e.g., "2025-11") - "last-30-days" for recent transactions **Mode** (default: smart): - conservative: Manual review for all (safest) - smart: Auto-apply 90%+ confidence (recommended) - aggressive: Auto-apply 80%+ confidence (fastest) **Dry-run** (default: true for first run): - true: Preview only, no changes - false: Apply changes ## Step 2: Run Categorization Execute the Python script with user's parameters: ```bash uv run python -u scripts/operations/categorize_batch.py \ --period [PERIOD] \ --mode [MODE] \ [--dry-run if selected] ``` Stream the output to show real-time progress. ## Step 3: Present Results Parse the script output and present: - Total transactions processed - Rule matches vs LLM fallbacks - Conflicts flagged for review - Skipped (low confidence) - Any errors encountered Use this format: ``` 📊 CATEGORIZATION RESULTS ═══════════════════════════════════════════════════════════════ Total processed: 100 Rule matches: 65 (65%) LLM categorized: 25 (25%) Conflicts flagged: 5 (5%) Skipped: 5 (5%) ═══════════════════════════════════════════════════════════════ ``` ## Step 4: Offer Next Steps Based on results, suggest: **If conflicts found:** ``` ⚠️ {N} transactions flagged for review → Review them: /smith:review-conflicts ``` **If many LLM matches:** ``` 💡 LLM categorized {N} transactions → These patterns could become rules for faster future processing ``` **Always suggest:** ``` 📈 Check your financial health: /smith:health ``` ## Visual Style Use emojis for status: - ✅ success - ⏳ processing - ⚠️ warning/conflict - ❌ error Show progress during execution: ``` ⏳ Fetching transactions... 150 found ⏳ Applying rules... ⏳ Running LLM categorization... ✅ Categorization complete! ``` --- ## Parameters | Parameter | Description | Default | |-----------|-------------|---------| | `--period` | Month (YYYY-MM) or "last-30-days" | Current month | | `--mode` | Intelligence mode | smart | | `--dry-run` | Preview without applying | true (first run) | ## Intelligence Modes | Mode | Auto-Apply Threshold | Best For | |------|---------------------|----------| | **conservative** | Never (all manual) | First-time users, sensitive data | | **smart** | 90%+ confidence | Regular use (recommended) | | **aggressive** | 80%+ confidence | Trusted rules, bulk processing | ## Next Steps After Categorization - **Review conflicts**: `/smith:review-conflicts` - **Check health**: `/smith:health --quick` - **View insights**: `/smith:insights spending`