> ## Documentation Index
> Fetch the complete documentation index at: https://talunavo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQ

> Is this financial advice? What does it model? Where does my data live? How is this different from a Monte Carlo calculator?

export const FaqList = () => {
  const items = [{
    q: "Is Talunavo financial advice?",
    a: ["No. It models arithmetic under assumptions you can see and change. It never says “you should”; it says “Plan B pays this much less lifetime tax than Plan A under these assumptions.” The decision stays yours, and the export is a document you take to a professional."]
  }, {
    q: "How is this different from a Monte Carlo retirement calculator?",
    a: ["Most calculators return a single success probability and stop. Talunavo compares named plans under identical assumptions, with a full tax model in every year, and treats uncertainty as one of three explicit modes. Monte Carlo, when you run it, returns a distribution with the shortfall’s magnitude and timing, never a single percentage. The store refuses to write one."]
  }, {
    q: "What does the tax model cover?",
    a: ["Nine passes per year: filing status including the transition a death causes, Social Security taxability, ordinary brackets, long-term gains stacking, NIIT and the additional Medicare tax, early-withdrawal penalties, state tax, the Medicare IRMAA tiers, and the ACA subsidy cliff. The marginal rate on the next dollar is measured by re-running the year, so cliffs are visible instead of averaged away.", "It is planning-grade, not filing-grade. No forms, no edge-case completeness, and it says so on the page."]
  }, {
    q: "Where does the tax law come from?",
    a: ["From versioned data files per year and jurisdiction, every figure carrying its citation, its indexing rule, and a confidence tier. The data is content-hashed into each run’s fingerprint, so a projection can always say which law it was computed under. Golden tests pin every cliff against official publications."]
  }, {
    q: "Which strategies can a plan state?",
    a: ["Required minimum distributions, Roth conversion policies with IRMAA, ACA-cliff and 0%-gains guards, substantially equal periodic payments under § 72(t) in all three methods, and Social Security claiming with spousal and survivor benefits. Plans can also establish and fund trusts and gift assets. What each strategy does not model is written down alongside it."]
  }, {
    q: "Do I have to connect my brokerage accounts?",
    a: ["No, and you cannot. There is no aggregator and no credential scraping. You enter holdings into the portfolio tracker, and the planner reads them through one read-only gateway that sees only the portfolios you explicitly link into a plan. The planner never writes to the tracker."]
  }, {
    q: "Can I check the engine against my own spreadsheet?",
    a: ["Yes. Upload a balance-by-year series and the app keeps it, re-runs the diff on every review, and flags divergence beyond a tolerance while stating which lines both sides model. Every projection is reproducible from its own stored inputs."]
  }, {
    q: "What happens after I adopt a plan?",
    a: ["A baseline is frozen: the plan, the assumptions, the balance sheet, the run’s identity, and a sentence you write about why. Once a year a checkpoint measures the year against it, decomposes the drift into its causes, re-runs the alternatives you rejected, and answers in one of three states. “On track, nothing has changed the decision” is meant to be the boring, common one."]
  }, {
    q: "Is there an AI advisor?",
    a: ["An advisor panel exists in the design and is deliberately empty on the page until it is ready. When present, its unsolicited output stays comparative only. The engine, the goals, and the checkpoints work with the advisor off, and the product is built to be walked that way first."]
  }, {
    q: "Who is this not for?",
    a: ["Early accumulators with simple finances, anyone who wants an answer handed to them, traders, and anyone who needs filing-grade tax numbers. Below roughly a couple of million in assets the planning levers are mostly inert, and the complexity does not pay for itself."]
  }];
  const [open, setOpen] = useState(0);
  return <div className="tl-faq">
      {items.map((item, i) => {
    const isOpen = open === i;
    return <div className={isOpen ? "tl-faq__item is-open" : "tl-faq__item"} key={item.q}>
            <button type="button" className="tl-faq__q" aria-expanded={isOpen} aria-controls={"tl-faq-panel-" + i} onClick={() => setOpen(isOpen ? -1 : i)}>
              <span>{item.q}</span>
              <span className="tl-faq__mark" aria-hidden="true">+</span>
            </button>
            <div id={"tl-faq-panel-" + i} className="tl-faq__body" hidden={!isOpen}>
              {item.a.map(para => <p className="tl-body" key={para.slice(0, 24)}>{para}</p>)}
            </div>
          </div>;
  })}
    </div>;
};

export const LedgerOrnament = () => <svg className="tl-figure" viewBox="0 0 400 200" aria-hidden="true">
    <g stroke="currentColor" strokeWidth="1" opacity="0.25">
      <line x1="0" y1="40" x2="400" y2="40" />
      <line x1="0" y1="80" x2="400" y2="80" />
      <line x1="0" y1="120" x2="400" y2="120" />
      <line x1="0" y1="160" x2="400" y2="160" />
    </g>
    <g fill="currentColor" fontFamily="Inter, system-ui, sans-serif" fontSize="12" opacity="0.8">
      <text x="0" y="28">2031 · retire</text>
      <text x="400" y="28" textAnchor="end">$5.64M</text>
      <text x="0" y="68">2035 · SEPP lock ends</text>
      <text x="400" y="68" textAnchor="end">$5.21M</text>
      <text x="0" y="108">2051 · RMD wall</text>
      <text x="400" y="108" textAnchor="end">$6.02M</text>
      <text x="0" y="148">2074 · horizon</text>
      <text x="400" y="148" textAnchor="end">$7.31M</text>
    </g>
    <path d="M0 190 C 100 184, 200 160, 300 140 S 380 118, 400 110" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" opacity="0.9" pathLength="1" className="tl-draw" />
  </svg>;

export const SiteFooter = () => <footer className="tl-footer">
    <div className="tl-wrap">
      <div className="tl-footer__grid">
        <div className="tl-footer__brand">
          {Wordmark({})}
          <p className="tl-caption">Retirement planning that shows its work. Tax-aware plans you can compare, trace, adopt, and check against reality.</p>
        </div>
        <div>
          <h5>Product</h5>
          <ul>
            <li><a href="/product">How it works</a></li>
            <li><a href="/product#strategies">Strategies</a></li>
            <li><a href="/product#live">Checkpoints</a></li>
            <li><a href="/principles">Principles</a></li>
          </ul>
        </div>
        <div>
          <h5>Company</h5>
          <ul>
            <li><a href="/who-its-for">Who it's for</a></li>
            <li><a href="/faq">FAQ</a></li>
            <li><a href="/get-started">Get started</a></li>
            <li><a href="https://app.talunavo.com">Open the app</a></li>
            <li><a href="mailto:support@talunavo.com">support@talunavo.com</a></li>
          </ul>
        </div>
        <div>
          <h5>Honesty</h5>
          <ul>
            <li><a href="/principles#not-advice">Not financial advice</a></li>
            <li><a href="/principles#planning-grade">Planning-grade tax</a></li>
            <li><a href="/principles#privacy">Your data stays yours</a></li>
          </ul>
        </div>
      </div>
      <div className="tl-footer__legal">
        <span>© 2026 Talunavo. Models arithmetic under stated assumptions. It is not financial, tax, or legal advice.</span>
        <span>Every figure cites its source.</span>
      </div>
    </div>
  </footer>;

export const CtaBand = ({title, lede, primary = "Try Talunavo", primaryHref = "https://app.talunavo.com", secondary = "See the product", secondaryHref = "/product", figure = null}) => <div className="tl-cta" data-reveal="">
    <div>
      <h2 className="tl-h2">{title}</h2>
      {lede ? <p className="tl-lede">{lede}</p> : null}
      <div className="tl-actions">
        {CtaLink({
  href: primaryHref,
  children: primary
})}
        {secondary ? CtaLink({
  href: secondaryHref,
  children: secondary,
  variant: "ghost",
  arrow: false
}) : null}
      </div>
    </div>
    {figure ? <div className="tl-cta__figure">{figure}</div> : null}
  </div>;

export const SectionHead = ({eyebrow, title, lede, center = false}) => <div className={["tl-section-head", center ? "tl-section-head--center" : null].filter(Boolean).join(" ")} data-reveal="">
    {eyebrow ? <p className="tl-eyebrow">{eyebrow}</p> : null}
    <h2 className="tl-h2">{title}</h2>
    {lede ? <p className="tl-lede">{lede}</p> : null}
  </div>;

export const Section = ({children, tight = false, id}) => <section id={id} className={["tl-section", tight ? "tl-section--tight" : null].filter(Boolean).join(" ")}>
    <div className="tl-wrap">{children}</div>
  </section>;

export const Glyph = ({name}) => {
  const paths = {
    compare: <path d="M4 5h6v14H4zM14 9h6v10h-6z" />,
    trace: <path d="M4 18L9 10l4 5 7-11M4 21h16" />,
    track: <path d="M3 17l5-5 4 4 9-9M15 7h6v6" />,
    tax: <path d="M4 4h16v16H4zM8 9h8M8 13h8M8 17h5" />,
    goals: <path d="M12 3v3M12 18v3M3 12h3M18 12h3M12 8a4 4 0 100 8 4 4 0 000-8z" />,
    shield: <path d="M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6l8-3z" />,
    grid: <path d="M4 4h7v7H4zM13 4h7v7h-7zM4 13h7v7H4zM13 13h7v7h-7z" />,
    scale: <path d="M12 3v18M5 7h14M5 7l-3 7a3 3 0 006 0zM19 7l-3 7a3 3 0 006 0z" />,
    home: <path d="M3 12l9-8 9 8M5 10v10h14V10" />,
    sparkle: <path d="M12 3l2 6 6 2-6 2-2 6-2-6-6-2 6-2z" />,
    clock: <path d="M12 3a9 9 0 100 18 9 9 0 000-18zM12 8v4l3 2" />,
    lock: <path d="M6 10h12v10H6zM8 10V7a4 4 0 018 0v3" />
  };
  return <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
      {paths[name] || paths.sparkle}
    </svg>;
};

export const Wordmark = ({className = ""}) => <svg className={className} viewBox="0 0 172 40" role="img" aria-label="Talunavo">
    <path d="M7 32 H15 V24 H23 V16 H31 V8" fill="none" stroke="currentColor" strokeWidth="3" strokeLinejoin="round" strokeLinecap="round" />
    <circle cx="31" cy="8" r="3" fill="var(--tl-accent-ink)" />
    <text x="46" y="27" fontFamily="Inter, system-ui, sans-serif" fontSize="22" fontWeight="600" letterSpacing="-0.5" fill="currentColor">Talunavo</text>
  </svg>;

export const CtaLink = ({href, children, variant = "primary", arrow = true}) => <a className={["tl-btn", "tl-btn--" + variant].join(" ")} href={href}>
    <span>{children}</span>
    {arrow ? <svg viewBox="0 0 16 16" fill="none" aria-hidden="true">
        <path d="M3 8h10M9 4l4 4-4 4" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" />
      </svg> : null}
  </a>;

<div className="tl-page">
  <div className="tl-wrap">
    <div className="tl-pagehead">
      <p className="tl-eyebrow tl-eyebrow--accent tl-fade-up">Questions</p>
      <h1 className="tl-display tl-fade-up d1">Asked before, <em>answered plainly.</em></h1>
    </div>
  </div>

  <Section tight>
    <FaqList />
  </Section>

  <Section>
    <CtaBand title="Still have a question?" lede="Ask it. The best ones end up on this page." primary="Email support@talunavo.com" primaryHref="mailto:support@talunavo.com?subject=Question" secondary={null} figure={<LedgerOrnament />} />
  </Section>

  <SiteFooter />
</div>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.