← Cashback CardCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Cashback Card
Snapshot Sep 30, 2026 · 23:13 UTC · version 2.0.1
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "manage-wallet",
"description": "Save, update, list or clear the set of credit cards a user holds, so card recommendations do not have to ask every time. Use when the user says which cards they have, asks to remember or forget a card, wants to see their saved cards, or reports that a spending cap or rotating category has changed.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 166
}
],
"skill_md_contents": "---\r\nname: manage-wallet\r\ndescription: Save, update, list or clear the set of credit cards a user holds, so card recommendations do not have to ask every time. Use when the user says which cards they have, asks to remember or forget a card, wants to see their saved cards, or reports that a spending cap or rotating category has changed.\r\n---\r\n\r\n# Manage Wallet\r\n\r\nKeep a small local file of which cards the user holds, so `find-best-cashback` can answer \"which card at Shell?\" without re-asking.\r\n\r\n## What goes in the file\r\n\r\nProduct identities and reward-relevant state. Nothing else.\r\n\r\nStore: card ids, the user's country, chosen categories, activation status, and cap usage they have told you about.\r\n\r\n**Never store**: card numbers, CVV, expiry dates, PINs, names as they appear on the card, credit limits, balances, statement PDFs, or login credentials. This file is plain text on disk. If the user offers a card number, tell them you do not need it and that the product name is enough.\r\n\r\n## Location\r\n\r\n`~/.cashback-wallet.json` — expand `~` yourself; the engine does not.\r\n\r\n## Format\r\n\r\n```json\r\n{\r\n \"version\": 1,\r\n \"country\": \"US\",\r\n \"updated\": \"2026-07-25\",\r\n \"cards\": [\r\n {\"id\": \"amex-bcp\", \"nickname\": \"the blue one\"},\r\n {\"id\": \"chase-freedom-flex\", \"activated\": true,\r\n \"cap_used\": {\"chase-rotating\": 1200},\r\n \"note\": \"Q3 rotating category is gas stations\"},\r\n {\"id\": \"boa-customized-cash\", \"chosen_category\": \"online_retail\"}\r\n ]\r\n}\r\n```\r\n\r\nCard ids come from the catalog:\r\n\r\n```bash\r\npython ../find-best-cashback/scripts/rank_cards.py --list-cards US\r\n```\r\n\r\nIf the user names a card that is not in the catalog, still save it — record what they told you so it is not lost:\r\n\r\n```json\r\n{\"id\": \"local-credit-union-visa\", \"in_catalog\": false,\r\n \"user_terms\": \"2% everywhere, no annual fee, told to me 2026-07-25\"}\r\n```\r\n\r\n`find-best-cashback` will pass that through as an inline card definition rather than dropping it.\r\n\r\n## Reading it\r\n\r\nRead the file before asking the user which cards they hold. If it does not exist, ask once and offer to save the answer — do not save without being asked or agreeing first.\r\n\r\n## Writing it\r\n\r\nRewrite the whole file; do not append. Always set `updated` to today.\r\n\r\nBefore overwriting an existing wallet, read it and confirm what changes: adding a card is safe to just do, but removing or replacing the list should be echoed back (\"dropping the Discover it, keeping the other three — right?\").\r\n\r\n## Cap and activation state goes stale\r\n\r\n`cap_used` and `activated` are true on the day they were written and drift immediately afterwards. When a saved value is more than a few weeks old, or when the calendar has crossed into a new quarter, treat it as unknown and re-ask rather than computing on it. A confidently wrong cap number produces a confidently wrong recommendation.\r\n\r\nRotating categories reset quarterly. A saved `activated: true` from last quarter means nothing this quarter.\r\n\r\n## Clearing\r\n\r\nIf the user asks you to forget their cards, delete the file rather than emptying it, and confirm afterwards that it is gone.\r\n"
}SHA-256: 805cfac047f57ed76b4af900e98d77362c9bee11710d714b37682246fdbea1d3