Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Query and analyze personal finance data from the Copilot Money Mac app. Use when the user asks about their spending, transactions, account balances, budgets,...
Query and analyze personal finance data from the Copilot Money Mac app. Use when the user asks about their spending, transactions, account balances, budgets,...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
Query local data from the Copilot Money Mac app to analyze transactions, spending patterns, account balances, investments, and budgets. Data is stored in both SQLite (transactions, balances) and Firestore LevelDB cache (recurring names, budgets, investments).
~/Library/Group Containers/group.com.copilot.production/database/CopilotDB.sqlite
Primary table for all financial transactions. ColumnTypeDescriptionidTEXTPrimary keydateDATETransaction datenameTEXTMerchant/transaction nameoriginal_nameTEXTRaw name from bankamountDOUBLETransaction amount (positive = expense)iso_currency_codeTEXTCurrency (e.g., "USD")account_idTEXTLinked account referencecategory_idTEXTCategory referencependingBOOLEANWhether transaction is pendingrecurringBOOLEANWhether transaction is recurringrecurring_idTEXTLinks to recurring definition (see Firestore)user_noteTEXTUser-added notesuser_deletedBOOLEANSoft-deleted by user
Daily balance snapshots per account. ColumnTypeDescriptiondateTEXTSnapshot dateaccount_idTEXTAccount referencecurrent_balanceDOUBLEBalance on that dateavailable_balanceDOUBLEAvailable balance
Additional data is stored in Firestore's local LevelDB cache, not in the SQLite database. Location: ~/Library/Containers/com.copilot.production/Data/Library/Application Support/firestore/__FIRAPP_DEFAULT/copilot-production-22904/main/*.ldb
CollectionDescriptionitemsLinked bank accounts/institutionsinvestment_pricesHistorical security pricesinvestment_performanceTWR (time-weighted return) per holdinginvestment_splitsStock split historysecuritiesStock/fund metadatausers/.../budgetsBudget definitions (amount, category_id)users/.../recurringsRecurring transaction definitionsamazonAmazon order matching data
FieldDescriptionnameDisplay name (e.g., "Water / Sewer", "Rent")match_stringTransaction name to match (e.g., "CHECK PAID")plaid_category_idCategory ID for the recurringstate"active" or "inactive"
Recurring names - human-readable names like "Rent", "Netflix" Budget amounts - monthly budget per category Investment data - holdings, prices, performance, splits Account/institution names - Chase, Fidelity, etc. Category names - Restaurants, Travel, Groceries, etc.
List all recurring names: for f in ~/Library/Containers/com.copilot.production/Data/Library/Application\ Support/firestore/__FIRAPP_DEFAULT/copilot-production-22904/main/*.ldb; do strings "$f" 2>/dev/null | grep -B10 "^state$" | grep -A1 "^name$" | grep -v "^name$" | grep -v "^--$" done | sort -u | grep -v "^$" List all collections: for f in ~/Library/Containers/com.copilot.production/Data/Library/Application\ Support/firestore/__FIRAPP_DEFAULT/copilot-production-22904/main/*.ldb; do strings "$f" 2>/dev/null done | grep -oE "documents/[a-z_]+/" | sort | uniq -c | sort -rn Find category names: for f in ~/Library/Containers/com.copilot.production/Data/Library/Application\ Support/firestore/__FIRAPP_DEFAULT/copilot-production-22904/main/*.ldb; do strings "$f" 2>/dev/null done | grep -iE "^(groceries|restaurants|shopping|entertainment|travel|transportation|utilities)$" | sort -u
SELECT date, name, amount, category_id FROM Transactions WHERE user_deleted = 0 ORDER BY date DESC LIMIT 20;
SELECT strftime('%Y-%m', date) as month, SUM(amount) as total FROM Transactions WHERE amount > 0 AND user_deleted = 0 GROUP BY month ORDER BY month DESC;
SELECT category_id, SUM(amount) as total, COUNT(*) as count FROM Transactions WHERE amount > 0 AND user_deleted = 0 AND date >= date('now', '-30 days') GROUP BY category_id ORDER BY total DESC;
SELECT date, name, amount FROM Transactions WHERE name LIKE '%SEARCH_TERM%' AND user_deleted = 0 ORDER BY date DESC;
SELECT DISTINCT name, recurring_id FROM Transactions WHERE recurring = 1 AND user_deleted = 0 ORDER BY name;
Use sqlite3 to query the database: sqlite3 ~/Library/Group\ Containers/group.com.copilot.production/database/CopilotDB.sqlite "YOUR_QUERY" For formatted output: sqlite3 -header -column ~/Library/Group\ Containers/group.com.copilot.production/database/CopilotDB.sqlite "YOUR_QUERY"
Category IDs are opaque strings - group by them for analysis (names are in Firestore cache) Amounts are positive for expenses, negative for income Filter user_deleted = 0 to exclude deleted transactions Both databases are actively used by the app; read-only access is safe SQLite has recurring_id linking to Firestore recurring definitions Use strings on LevelDB files to extract human-readable data from Firestore cache
Data access, storage, extraction, analysis, reporting, and insight generation.
Largest current source with strong distribution and engagement signals.