- 310 registry:skill items, 1528 files, 7 categories (hub tags) - registry.json generated by @kortix/registry buildRegistry - nested SKILL.md in sn-da-* renamed SUBSKILL.md (no phantom skills) - provenance + licenses: SOURCES.md
2.4 KiB
Gotchas — cash-flow-snapshot
Known edge cases and connector failure modes. 2–5 entries, Good/Bad format.
1. QuickBooks AR aging includes invoices already collected
Bad: Including fully-paid invoices from the AR aging report inflates inflow projections. QuickBooks sometimes shows $0-balance invoices in aging exports.
Good: Filter AR rows to balance_due > 0 before computing inflows. If the
connector doesn't expose balance_due, subtract known PayPal/Stripe settlements
from the invoice total before including it.
2. PayPal settlement lag varies by transaction type
Bad: Assuming all PayPal receipts settle in 1–2 business days. PayPal holds funds differently for disputes, new sellers, and high-value transactions — using a flat settlement assumption produces overconfident inflow timing.
Good: Compute settlement lag from actual transaction_date → completed_date
pairs in the PayPal transaction history. Use the computed mean and stddev per
customer or transaction type.
3. CSV column names are inconsistent across accounting exports
Bad: Requiring exact column names like "Date", "Amount", "Type". QuickBooks CSV exports use "Transaction Date", "Amount", "Transaction Type". Wave uses "Date", "Amount", "Account Type". Rigid parsing fails silently.
Good: Fuzzy-match column headers (date → transaction date → txn date; amount → debit/credit; type → category → account type). Show the header row to the user and confirm mapping before computing — one question beats a silent wrong forecast.
4. Fixed costs hidden in one-off AP entries
Bad: Only pulling recurring line items labeled as "recurring" in QuickBooks. Many SMBs don't tag fixed costs consistently — rent may appear as a one-off vendor bill each month.
Good: Look for AP entries that appear in 3+ consecutive months with the same vendor and similar amount (±10%). Treat these as recurring fixed costs in the forecast. Surface the list to the user: "I'm treating these as fixed monthly costs — does that look right?"
5. Confidence band formula breaks when mean payment lag is zero
Bad: Dividing stddev by a mean lag of 0 (e.g. immediate payment customers like Square POS) produces a divide-by-zero error or an infinite band.
Good: If mean lag ≤ 1 day, set band_pct to 5% (low variance, near-immediate settlement). Don't attempt the division.