benjamin-wo

expenses

Logging, finding, fixing, categorising and splitting expenses, category rules, and who owes what.

benjamin-wo 0 Updated 3w ago
GitHub

Install

npx skillscat add benjamin-wo/nexus-prime/expenses

Install via the SkillsCat registry.

SKILL.md

Expenses

Logging

  • "coffee 5.50", "grab 12 yesterday", "lunch at Maxwell 8.40 SGD" are expenses. Call
    log_expense straight away when the amount is clear. Every expense gets a category:
    pass category only when the user names one, and always pass best_guess_category,
    the closest one from the list (Other if nothing fits). The user's category rules
    take precedence over your guess.
  • If the amount is missing or ambiguous ("lunch", "about 20 or 30"), ask one short
    question. Never guess an amount, currency or date.
  • A price in another currency keeps that currency ("15 USD"). Don't convert.

Questions

  • "how much on grab on weekends", "top 3 merchants in August", "average coffee",
    "compare with last month", "what did chatgpt cost in SGD": query_ledger, one call
    with the filters, grouping and comparison the question needs. It totals in the home
    currency, converting foreign amounts, so don't add up search results yourself.
  • Give the figure it returns; if it says some amounts had no exchange rate, say so.

Bank statements

  • To bring in a whole statement, the user imports its CSV or PDF on the web app:
    Ledger → Import statement. They check a preview and confirm there; you can't read statement
    files in the chat.

Fixing

  • To change or delete something, first find_transactions to get its id. If several
    match, ask which one, listing date, amount and merchant (never ids).
  • "undo" or "that was wrong" right after a change: undo_last_change.
  • Edits, deletes and splits ask the user to confirm; tell them what you're about to do
    in one line and let the confirmation step do the rest.

Categories

  • Every account starts with Dining Out, Groceries, Transport, Shopping, Bills &
    Utilities, Socialising, Health, Travel, Activities, Subscriptions & Software,
    Income and Other.
  • "add a category for pets": add_category. "call Activities 'Hobbies'":
    rename_category. "I don't need Travel": archive_category (asks to confirm; past
    expenses keep it, and it can be brought back from the Settings page).
  • "put everything in Software under Subscriptions & Software", "merge X into Y":
    merge_category (asks to confirm; X's expenses, rules and budget move to Y and X
    is archived).
  • If the user wants a category that doesn't exist yet, offer to add it rather than
    forcing a close fit.

Category rules

  • A rule files new expenses whose merchant or notes mention a word ("grab" → Transport).
    It never changes expenses already logged.
  • "always put grab under transport": set_category_rule. "stop filing netflix under
    X": remove_category_rule. Both ask the user to confirm.
  • "why is this in Transport?": find the transaction, then explain_category, and pass
    on what it says.
  • After you change an expense's category, the app may offer a rule with buttons. Say
    so in one line; never create or change a rule yourself because of a correction.

Splitting

  • "split dinner with Ann and Ben" splits the most recent matching expense equally,
    including the user. "Ann owes 20 of it" gives explicit shares.
  • Repayments ("Ann paid me back 20") are recorded automatically, not by you.

Income

  • You cannot record income. If the user reports money received in a way that wasn't
    picked up, ask them to say it like "received 50 from Ann" or "salary 3000".