---
title: Profile
description: There are only five fields, and every one is optional. Filling them out takes about a minute and turns generic analysis into something grounded, like "you're 12 years from FIRE, your current pace gets you 75% there, and here's the gap."
---

export const fields = [
  { cmd: 'birth_year',             desc: 'The year you were born. It gives Claude a real time horizon, which matters a lot for risk.' },
  { cmd: 'retirement_target_year', desc: 'When you want to stop depending on a paycheck. It shapes every projection.' },
  { cmd: 'target_net_worth_usd',   desc: 'Your personal "enough" number. Gap analysis depends on it.' },
  { cmd: 'risk_tolerance',         desc: <><code>conservative</code> · <code>moderate</code> · <code>aggressive</code>. This helps Claude call out when your actions don't match your stated risk appetite.</> },
  { cmd: 'notes',                  desc: 'Anything else Claude should remember: preferences like "ESG only," constraints like "can\'t sell RSUs until vested," or tax context.' },
];

export const setupExchange = [
  {
    user: '/setup-profile',
    ai: "Let's set up your goals. What year were you born? (skip if you'd rather not say)",
  },
  {
    user: '1988. I want to retire by 50 with around $1M. Pretty aggressive risk-wise. I hold a lot of TSLA from RSU vesting.',
    ai: <p>
      Got it. Saving birth_year 1988, retirement_target_year 2038,
      target_net_worth_usd $1M, risk_tolerance aggressive, and notes
      "TSLA concentration from RSU vesting".
      From now on, every analysis will frame numbers against your 12-year
      runway and $1M target instead of generic benchmarks.
    </p>,
  },
];

export const benefits = [
  { icon: '→', title: 'Anchored numbers',          desc: '"$441K net worth" becomes "$441K = 44% of $1M target, 12 years to go, current pace gets you 75% there."' },
  { icon: '⚠', title: 'Behavioral contradiction flags', desc: 'If your risk_tolerance is "moderate" but TSLA is 80% of your portfolio, Claude points out the mismatch instead of congratulating you on the gain.' },
  { icon: '⏱', title: 'Time-aware projections',    desc: 'Claude reasons about your actual horizon. A 22-year-old with a 40-year horizon gets different advice than a 55-year-old approaching retirement.' },
  { icon: '✎', title: 'Constraints respected',     desc: <>Notes like "ESG only" or "no leveraged products" are honored across every recommendation. Claude will not suggest things you've already ruled out.</> },
];

<Section label="Why a profile?">
firma already knows your portfolio, balance sheet, and cash flow.
What it cannot infer is what you actually want. That part has to come
from you. Without a profile, Claude can only give generic answers like
"your portfolio is up 60%." With one, it can frame every number against
your real situation.

  <Note>
    All five fields are optional. We deliberately avoid asking for things
    we can already derive. External assets and liabilities come from your
    balance sheet, monthly expenses come from cash flow, and income gives
    us a rough tax picture.
  </Note>
</Section>

<Section label="What it stores">
  <CommandTable rows={fields} />
</Section>

<Section label="Setting it up">
There are two ways to set it up. Use whichever feels more natural.

#### Option 1 · Through Claude

In Claude Desktop, type <code>/setup-profile</code>. Claude asks
conversationally and skips anything you don't want to share.

  <ChatDemo header="Claude Desktop · firma MCP connected" exchanges={setupExchange} />

#### Option 2 · Through the CLI

  <Terminal
    command="firma profile"
    rows={[
      { type: 'meta', text: 'Press Enter to keep the current value. Optional fields can be left blank.' },
      { type: 'val',  label: '◆  Birth year',                value: '1988' },
      { type: 'val',  label: '◆  Retirement target year',    value: '2038' },
      { type: 'val',  label: '◆  Target net worth (USD)',    value: '1000000' },
      { type: 'val',  label: '◆  Risk tolerance',            value: 'aggressive' },
      { type: 'val',  label: '◆  Notes',                     value: 'TSLA concentration from RSU vesting' },
    ]}
  />
</Section>

<Section label="How it changes analysis">
  <FeatureList items={benefits} />
</Section>
