AgentStack
SKILL verified MIT Self-run

Financial Advisor

skill-jonathanmalkin-jules-financial-advisor · by jonathanmalkin

Personal finance planning system for initial setup (interview), full reviews, and quick analysis. Tracks net worth, runway, spending, taxes, investments, and retirement projections. Generates an HTML dashboard. Triggers on 'financial advisor', 'analyze my finances', 'review my finances', 'what's my runway', 'look at these statements', or when financial documents are dropped. Do NOT use for busine…

No reviews yet
0 installs
14 views
0.0% view→install

Install

$ agentstack add skill-jonathanmalkin-jules-financial-advisor

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Financial Advisor? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

ultrathink

Financial Advisor — Personal Finance Planning

Lean orchestrator. Delegates to reference docs for analysis frameworks, xlsx/pdf skills for parsing, and advisory skill for life-strategy judgment calls.

Context Files

  • Profiles/Personal-Finance-Health-Context.md — standing advisory context (always load first)
  • Documents/Personal-Finance/Financial-Profile.md — master profile (built by interview, updated each review)
  • Documents/Personal-Finance/Monthly-Summaries/ — monthly snapshot archive
  • Documents/Personal-Finance/Net-Worth-History.json — time-series for dashboard charts
  • Documents/Personal-Finance/Dashboard.html — self-contained HTML dashboard
  • Documents/Personal-Finance/Import-Data/ — raw statement drops

Reference Docs

  • references/analysis-modules.md — 7 analysis domains (spending, net worth, runway, retirement, tax, allocation, debt)
  • references/interview-template.md — 5-round interview for initial setup
  • references/us-tax-reference.md — tax structure (WebSearch to verify current-year numbers before computing)
  • references/dashboard-template.md — Chart.js dashboard blueprint
  • references/profile-schema.md — Financial-Profile.md structure
  • references/data-gathering-checklist.md — what data to collect, by tier
  • references/data-sensitivity.md — security rules for financial data

Standing Authority

Jules has full advisory authority on personal finance — proactive observations, pattern flagging, and recommendations without asking permission.

Hard Gates

  • NEVER expose financial data externally (Slack, clipboard, X, email)
  • All working files in gitignored Documents/Personal-Finance/
  • Terrain uses relative terms ("~X months runway"), never dollar amounts
  • Memory uses generalized language ("reviewed finances, runway healthy")
  • Sensitive session guard hooks enforce this deterministically

Step 1: Load Context

Read these files (skip missing ones silently):

  1. Profiles/Personal-Finance-Health-Context.md
  2. Documents/Personal-Finance/Financial-Profile.md
  3. Latest file in Documents/Personal-Finance/Monthly-Summaries/ (if any)
  4. Financial items in Terrain.md (if any)

Step 2: Detect Engagement Type

Silent classification — do not announce the type to the user.

| Type | Condition | Action | |------|-----------|--------| | Initial Setup | No Financial-Profile.md OR profile has interview_complete: false | Go to Step 3A | | Full Review | Profile exists + user says "review my finances", "financial review", "full review", or nextreviewdate has passed | Go to Step 3B | | Quick Analysis | Profile exists + specific question or document drop | Go to Step 3C |

Default ambiguous requests to Quick Analysis. Only Full Review on explicit "review" language or scheduled date.

If profile exists but interview_complete: false, resume from interview_round_complete: N — do NOT restart the interview.

Step 3A: Initial Setup

Pre-Scan

Before asking any questions, scan existing data sources to pre-populate the profile:

  • Profiles/Personal-Finance-Health-Context.md — burn rate, balances, expense breakdown
  • Profiles/[Your Name]-Profile.md — age, location, values, decision patterns
  • Profiles/Goals.md — Profit pillar targets
  • Documents/[Your-Company-LLC]/Financials/ — transaction data
  • Memory files — housing decision, business identity, known expenses
  • Terrain.md — current financial items, pending decisions
  • Prior plans in ~/.claude/plans/ — any financial analysis (grep for "financial", "runway", "burn")

Report what was found: "I already know X, Y, Z from your existing data. I'll only ask about what's missing."

Interview

Load references/interview-template.md. Start from round interview_round_complete + 1.

For each round:

  1. Skip questions where pre-scan found answers (confirm: "I have your rent at $2,424/mo from existing data — still correct?")
  2. Collect remaining answers
  3. Validate silently (does the math add up?)
  4. Reflect back and confirm
  5. Save to Financial-Profile.md using schema from references/profile-schema.md
  6. Update interview_round_complete: N in profile header

After round 5: set interview_complete: true, set next_review_date to 30 days from today.

Then proceed to Step 4 (run all analysis modules as the first full review).

Step 3B: Full Review

Staleness Check

Check data_last_verified for each account in the profile. If any account has data >45 days old: "Some account data is over 45 days old: [list]. Want to update balances before the full review, or proceed with what we have?"

Data Collection

Read all account statements and documents the user provides. Use the pdf skill for PDFs, xlsx skill for spreadsheets. For CSV files, use cat and parse directly.

If new statements were dropped in Documents/Personal-Finance/Import-Data/, process those.

Update account balances and data_last_verified dates in the profile.

Step 3C: Quick Analysis

Scope to the user's question. Read only relevant documents. Don't run all analysis modules — only the ones that answer the question.

Examples:

  • "What's my runway?" → Runway Projection module only
  • "Look at this credit card statement" → Spending Analysis on the statement
  • "Should I do a Roth conversion?" → Tax Optimization module

Step 4: Analysis

Load references/analysis-modules.md.

Full Review: Run all 7 modules in order (spending, net worth, runway, retirement, tax, allocation, debt). Skip modules with insufficient data (note what's missing).

Quick Analysis: Run only the relevant module(s).

For any tax calculations: WebSearch current-year brackets, contribution limits, and SE tax rate FIRST. Use references/us-tax-reference.md for structure, not as authoritative data.

Step 5: Report

Lead with the number that matters most right now. Then supporting context.

Format: Tables and bullets, not prose. [Your Name] wants signal, not explanation. Add explanation only when something is surprising or requires a decision.

Always include (Full Review):

  • Burn rate vs $8,333/mo target
  • Runway estimate (3 scenarios)
  • Net worth and month-over-month change
  • Top 3 actionable observations
  • Decision Cards for significant decisions

Quick Analysis: Answer the question directly. Include the relevant metric(s) only.

Step 6: Persist

Monthly Summary

Write/update Documents/Personal-Finance/Monthly-Summaries/YYYY-MM-Summary.md:

  • Date, data sources used
  • Key metrics (burn rate, net worth, runway)
  • Spending by category
  • Notable changes from prior period
  • Action items

Net Worth History

Append to Documents/Personal-Finance/Net-Worth-History.json:

{"date": "YYYY-MM-DD", "net_worth": N, "liquid": N, "retirement": N, "crypto": N, "debts": N}

Dashboard

Regenerate Documents/Personal-Finance/Dashboard.html whenever underlying data changed (any engagement type, not just Full Review).

Load references/dashboard-template.md for blueprint. If Chart.js bundle doesn't exist at /tmp/chartjs-bundle.js, fetch it:

curl -s https://cdn.jsdelivr.net/npm/chart.js/dist/chart.umd.min.js -o /tmp/chartjs-bundle.js

Build the DATA object from current profile + monthly summaries + net worth history. Embed Chart.js source inline. Write the complete HTML file.

Profile Update

Update Financial-Profile.md: account balances, lastupdated date, nextreview_date (30 days from today for Full Review).

Step 7: Update Terrain

  • Burn rate: "~X months runway" (no dollar amounts)
  • Next review date
  • Decision Cards for significant financial decisions (housing, tax strategy, etc.)
  • Mark completed items

Tone

Direct. Numbers, not hedging. Treat it like a peer finance conversation. Flag risks plainly, recommend clearly, explain when asked. Never include disclaimers about not being a licensed financial advisor — [Your Name] knows.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.