{"id":51537743,"url":"https://github.com/weklund/fiduciary","last_synced_at":"2026-07-09T10:30:29.159Z","repository":{"id":368945371,"uuid":"1285543263","full_name":"weklund/fiduciary","owner":"weklund","description":"A personal financial advisor that runs locally. Plaid CLI + SQLite + Claude Code skills. Fiduciary-grade advice grounded in your real data.","archived":false,"fork":false,"pushed_at":"2026-07-02T22:01:50.000Z","size":1069,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-03T00:05:08.262Z","etag":null,"topics":["agent-skills","ai-agent","budgeting","claude-code","fiduciary","financial-advisor","local-first","personal-finance","plaid","sqlite"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/weklund.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-30T23:10:54.000Z","updated_at":"2026-07-02T22:01:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/weklund/fiduciary","commit_stats":null,"previous_names":["weklund/fiduciary"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/weklund/fiduciary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weklund%2Ffiduciary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weklund%2Ffiduciary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weklund%2Ffiduciary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weklund%2Ffiduciary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/weklund","download_url":"https://codeload.github.com/weklund/fiduciary/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weklund%2Ffiduciary/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35296693,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-09T02:00:07.329Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-skills","ai-agent","budgeting","claude-code","fiduciary","financial-advisor","local-first","personal-finance","plaid","sqlite"],"created_at":"2026-07-09T10:30:28.431Z","updated_at":"2026-07-09T10:30:29.153Z","avatar_url":"https://github.com/weklund.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fiduciary\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/banner.png\" alt=\"fiduciary — your money. your machine. your advisor.\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n[![Agent Skills](https://skills.sh/b/weklund/fiduciary)](https://skills.sh/weklund/fiduciary)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n\nA local-first personal finance advisor. Connects to your bank accounts, stores everything in SQLite on your machine, and uses an LLM agent as a conversational advisor — grounded in your real data, not generic platitudes.\n\n\u003e [!NOTE]\n\u003e **All data stays on your machine.** No cloud storage. No telemetry. No product recommendations. See [docs/PRIVACY.md](docs/PRIVACY.md) for full details.\n\u003e If you have any questions please feel free to hit me on X! [https://x.com/WesEklund](https://x.com/WesEklund)\n\n```\nYou: \"What did I spend on dining this month?\"\nAdvisor: queries your local DB, shows the answer with merchants and totals\n\nYou: \"Should I pay off my credit card or keep cash reserves?\"\nAdvisor: walks your actual balances and rates through a priority framework,\n         accounts for your constraints, gives a specific recommendation with the math\n```\n\n## Prerequisites\n\nmacOS or Linux (Windows via WSL) · Python 3.8+ · SQLite 3 · [Homebrew](https://brew.sh) · An [Agent Skills-compatible runtime](https://agentskills.io/clients)\n\n\u003cdetails\u003e\n\u003csummary\u003eVerify your setup\u003c/summary\u003e\n\n```bash\npython3 --version   # 3.8+\nsqlite3 --version   # any\nbrew --version      # any\n```\n\nAll three come pre-installed on macOS. On Linux, install via your package manager.\n\n\u003c/details\u003e\n\n## Quick Start\n\n```bash\ngit clone https://github.com/weklund/fiduciary.git \u0026\u0026 cd fiduciary\ngit config core.hooksPath .githooks\nbrew install plaid/plaid-cli/plaid\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eFirst-time Plaid setup\u003c/strong\u003e (free account required)\u003c/summary\u003e\n\n```bash\nplaid register     # opens browser — create a free Plaid developer account\nplaid trial        # apply for the free Trial plan (auto-approved in ~60 seconds)\nplaid login        # authenticate the CLI (opens browser for OAuth)\nplaid keys fetch   # download your API keys\n```\n\nThe Trial plan is free for personal use (up to 10 linked institutions).\n\n\u003c/details\u003e\n\n```bash\nplaid link --products transactions,liabilities,investments   # connect your bank (opens browser)\nbash scripts/sync.sh                                         # pull data + build local DB\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eConnect your agent\u003c/strong\u003e\u003c/summary\u003e\n\n**Claude Code** — open Claude Code in this directory. Skills auto-discover.\n\n**Hermes Agent:**\n```bash\ncp CLAUDE.md ~/.hermes/SOUL.md\nhermes skills add ./.claude/skills/*\n```\n\n**Other tools** — any [Agent Skills-compatible](https://agentskills.io/clients) runtime works (Gemini CLI, Cursor, GitHub Copilot, 42+ others).\n\n\u003c/details\u003e\n\nThen run the advisor intake:\n\n```\n/onboard\n```\n\nThis asks about your goals, situation, and risk tolerance — then writes a personalized profile so all future advice is tailored to you.\n\n## Skills\n\n| Command | What it does |\n|---------|-------------|\n| `/onboard` | Financial advisor intake — sets up your personalized profile |\n| `/sync-data` | Pull fresh transactions from Plaid |\n| `/finance-query` | Ask any question about your finances |\n| `/next-dollar` | \"What should I do with $X?\" — applies order of operations to YOUR situation |\n| `/health-check` | Quarterly full assessment — pyramid status, ratios, action plan |\n| `/tactics` | Optimize your cards, accounts, and tools |\n| `/spending-audit` | Find waste, unused subscriptions, overspending |\n| `/weekly-report` | Generate a weekly spending summary |\n\n## How It Works\n\n```\n┌─────────────┐     ┌──────────────┐     ┌─────────────────┐\n│  Plaid CLI  │────▶│  SQLite DB   │◀────│  CSV Statements │\n│  (live sync)│     │  (unified    │     │  (historical    │\n└─────────────┘     │   ledger)    │     │   backfill)     │\n                    └──────┬───────┘     └─────────────────┘\n                           │\n                    ┌──────▼───────┐\n                    │  LLM Agent   │\n                    │  (skills +   │\n                    │   CLAUDE.md  │\n                    │   frameworks)│\n                    └──────────────┘\n```\n\nThe advisory logic is built on the CFP Board's fiduciary planning process — a layered pyramid where you never optimize a higher layer while a lower one is unstable. See [docs/ADVISORY.md](docs/ADVISORY.md) for the full framework.\n\n## Adding Historical Data\n\nPlaid gives ~30 days. For deeper analysis, add bank CSVs:\n\n```bash\n# Drop CSVs into data/statements/, then:\npython3 scripts/ingest.py\n```\n\nSupports: Amex, Chase, Capital One, or any CSV with `Date,Description,Amount` columns.\n\n## Privacy \u0026 Security\n\nThis project handles your most sensitive data. We believe you deserve full transparency about what happens with it — not just marketing claims, but a published threat model you can read and challenge.\n\nYour financial data never touches a git-tracked file. The only external calls are to Plaid (for sync) and your chosen LLM provider (for analysis).\n\n**Recommended:** Commercial API key (7-day retention, no training). **Zero-trust:** Ollama locally (nothing leaves your machine).\n\n| Document | What it covers |\n|----------|---------------|\n| [docs/PRIVACY.md](docs/PRIVACY.md) | Provider comparison, session logs, retention settings, credentials |\n| [docs/THREAT-MODEL.md](docs/THREAT-MODEL.md) | Full STRIDE threat analysis — 15 threats, mitigations, accepted risks, runtime comparison |\n| [docs/HLD-Fiduciary.md](docs/HLD-Fiduciary.md) | System architecture, trust boundaries, data classification |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eConnecting additional banks\u003c/strong\u003e\u003c/summary\u003e\n\nRun `plaid link` again for each institution:\n\n```bash\nplaid link --products transactions              # checking/savings only\nplaid link --products transactions,investments  # brokerage accounts\n```\n\nVerify connections:\n```bash\nplaid item list      # list all linked institutions\nplaid balance --all  # test that balances come back\n```\n\n**Common issues:**\n- **Bank not found?** Most major US banks are supported. Some smaller credit unions may not be in Plaid's network.\n- **`ITEM_LOGIN_REQUIRED`?** Bank session expired. Re-run `plaid link` to re-authenticate.\n- **10-institution limit:** The free Trial allows 10 linked institutions.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eUpdating your profile\u003c/strong\u003e\u003c/summary\u003e\n\nRun `/onboard` again anytime your situation changes:\n- New job or lost income\n- Major life event (marriage, kids, inheritance)\n- Goals or priorities shift\n- Want to add accounts or update metrics\n\nThe skill detects existing context and offers to update rather than start fresh.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eProject structure\u003c/strong\u003e\u003c/summary\u003e\n\n```\nCLAUDE.md              ← Advisory frameworks (committed, no PII)\nscripts/\n  sync.sh              ← Pull from Plaid + rebuild DB\n  ingest.py            ← Rebuild DB from all sources\n.claude/skills/        ← Conversational finance skills (8 skills)\ndata/                  ← (gitignored) Financial data + SQLite DB\nreports/               ← (gitignored) Generated reports\ndocs/                  ← Deep documentation\n  ADVISORY.md          ← How the advisory logic works\n  PRIVACY.md           ← Data retention + provider comparison\n```\n\n\u003c/details\u003e\n\n## Philosophy\n\n\u003e Track everything. Automate the boring stuff. Spend deliberately on what builds the future. Cut ruthlessly what doesn't.\n\nThis tool exists because most financial apps sell you products or harvest your data, generic advice doesn't account for YOUR situation, a financial advisor costs $200-400/hour, and your bank has the data.  You should too, queryable, on your terms.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md). Good first contributions: CSV parsers for new banks, new advisory skills, improved category detection.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweklund%2Ffiduciary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweklund%2Ffiduciary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweklund%2Ffiduciary/lists"}