/hst-assistance
Section titled “/hst-assistance”What it does: Generates manual-entry reference artifacts for a date range of BMO credit-card + chequing statements, so Talbot can enter transactions into QBO without re-deriving any figure from a PDF. Replaces the hand-built Notes/HST-assistance.md working note. Never writes to QBO — extraction + artifact-generation only, no posting path exists in the code at all.
Where the code lives: ~/utils/acct-qbo/hst_assistance.py. Slash command: ~/ai-config/claude/commands/hst-assistance.md (deploys to ~/.claude/commands/ via deploy.sh).
Vendor rules: Core/Accounting/Config/vendors/vendors.yaml (SSOT for simple vendors) + Core/Accounting/Config/vendors/rogers.yaml (Bill-type exception logic — Rogers isn’t auto-split here, it’s flagged for manual bill-PDF cross-reference). A vendor with no confirmed tax code never gets a guessed split — it’s a TBD row + a Part 3 Issues line.
Usage: uv run python hst_assistance.py --from YYYY-MM --to YYYY-MM (run from ~/utils/acct-qbo/), or /hst-assistance --from YYYY-MM --to YYYY-MM in Claude Code. --from/--to select statements by filename date, not transaction date.
Output — ONE artifact, Core/Accounting/Reports/HST-assistance_<range>.md, sectioned in the order Talbot actually works:
- Prep (statements found/missing, where receipts and eIncome live)
- Enter Expenses — by vendor, all months (the Copy → Duplicate → change-date flow)
- Enter eIncome — bank-side deposits + the KDP files on disk (royalty spreadsheets are deliberately not parsed — income figures are Talbot’s call, not inferred)
- Reconcile Credit Card — by month, each statement followed by its Pay CC Bill line (payoff amount + actual chequing withdrawal date)
- Chequing — other bank-side items
- Issues to Address
Also regenerated each run: Notes/Vendors.md (generated view of vendors.yaml).
Annotations: never hand-edit the artifact — it is rewritten every run. Put notes in Core/Accounting/Notes/HST-assistance-notes.md as date | amount | note; they are merged into a Status column. A note matching no row is reported under Issues rather than silently dropped.
Rogers is auto-split from rogers.yaml’s steady_state_periods — recorded, bill-confirmed splits matched on exact amount and charge date within the period window. Anything outside a confirmed period stays TBD.
Test suite: ~/utils/acct-qbo/tests/ (pytest) — regression fixtures for gotchas #6 (multi-card CC truncation), #7 (subtotal cross-check must gate, not just pass), #9 (bank debit/credit from running-balance diff), #10 (date-format variance), #11 (no-pipe statement); Rogers steady-state matching (incl. the 2025-10-29 split-bill date-guard case); and companion-file annotations (incl. an unmatched note surfacing as an Issue). Run: uv run pytest.
See hst-assistance-skill for the full spec, the 18-gotcha catalog this tool bakes in, and the vendor-SSOT decision.