Skip to content
Ritesh FirodiyaGet in touch

Work / Chitragupt / Wiki / Concepts

portfolio-pillar

Conceptcanonicalverified 2026-09-01

CONCEPT.PORTFOLIO-PILLAR

Portfolio pillar

Summary

Portfolio is the household investment lens — a review-only surface built entirely from parsed broker / MF / EPF statements, with an asset-allocation donut, a portfolio-vs-Nifty trajectory, a per-AY capital-gains-booked timeline, a goal-mapping system, and three observation panels ("What lost you money · What made you money · Gaps in your safety net"). It surfaces patterns from user data; it never recommends trades, and it never executes them.

Why it matters

Portfolio touches money (capital gains, §112A headroom) and adjacent regulation (SEBI research-analyst limits). Drift here has two failure modes: (1) an LLM invents a SELL / HOLD CTA and we cross SEBI's advisory line; (2) an LLM forgets the goal-mapping system, so users see holdings-without-goals as a rounding error instead of the first-class product surface it is. The wireframe pins the pillar to observation-only framing ("Observations from your own data, not investment advice") and to a goal-taxonomy the app is meant to reason over.

Implications

  • Holdings come from parsed statements, or a linked broker API pull. No manual entry, no live prices for individual securities. Corollary of upload-only and no-manual-entry — a broker API pull is machine-fetched, not typed, and must be persisted as its own immutable, timestamped source artefact (raw response + provider + account + fetch time) so it carries the same trace-to-source guarantee an uploaded document does. See 2026-09-01-broker-api-sync-as-source.
  • Broker linking is discoverable from two places, both optional. settings-linked-brokers is the durable management surface (link/sync/disconnect, revisit any time); onboarding-connect-broker is a one-time, always-skippable nudge at signup that reuses the same cards. On portfolio-empty.html, a blue "connect a broker" banner sits as a parallel path alongside the existing Inbox-upload banner — not a replacement, not a 7th block in the canonical layout below. On portfolio-holdings.html, the same link is a small trailing item in the existing holdings-count row. See 2026-09-01-broker-connect-own-phase, 2026-09-01-onboarding-broker-nudge.
  • Observation-only, never advisory. No HOLD, no REVIEW, no SELL, no BUY CTAs. Language is always retrospective ("What lost you money", "What made you money", "Gaps in your safety net"). SEBI disclaimer strip is mandatory (2026-06-26-portfolio-sebi-strip).
  • Six-block canonical layout on Review (in order): (1) Asset-allocation donut with "vs balanced ideal" reference (60 / 25 / 10 / 5); (2) Portfolio-vs-Nifty trajectory (invested / realised-gain / realised-loss stacked bars + Your value + Nifty hypo dashed line); (3) Capital gains booked · per AY; (4) three observation panels; (5) Goals · funding pace aside; (6) holdings drill-in link.
  • Asset-class taxonomy is 4 buckets on the donut (Equity + MFs · FDs + bonds · EPF + NPS · Cash) and 6 filters on the holdings drill (Equity · MF · FD · EPF · REIT · SGB). Sub-classes on MF: Debt MF · Flexi MF · Index MF.
  • Holdings table is Holding · Class · Account · Goal · Value · YTD · Notes — not qty/LTV/unrealised. The Notes column carries context ("Held since 2021", "SIP active · ₹15k/mo", "Locked · Statutory · 8.25% guaranteed" for EPF).
  • Goal mapping is a first-class Portfolio surface — portfolio-goal-taxonomy enumerates the 10 default goals (Retirement · House · Kid · UG · Liquidity · Income · Health corpus · Hedge · Tactical · Core · Unassigned). Unmapped holdings surface as an amber banner ("4 unmapped to a goal"). The map-goal modal offers AI suggestions by asset class + timeline (e.g. "Debt fund matches 3-4yr horizon → House 78%"), split-across-goals % allocation, and an "Apply to future units" rule so future SIP tranches auto-map. Goal mapping is Portfolio-only and never mutates the source statement.
  • Capital-gains booking is tax-relevant. STCG @ 20%, LTCG @ 12.5% over ₹1.25L. §112A ₹1.25L personal headroom per AY; ₹3.75L cross-PAN headroom on Pro Family (3 members). Callout: "₹1.25L of long-term capital gains exemption unused this AY (the annual §112A limit)". CG numbers flow deterministically into pillar-tax.
  • Lot classification is parser disambiguation, never a trade. When cost basis is ambiguous (bonus issues, corporate actions), the CG-booked variant surfaces buttons — FIFO · LTCG / Specific lot · STCG / bonus-split / manual cost / zero cost. Verbatim invariant: "Classification corrects parser ambiguity · it does not initiate any trade. Tax position flows into Tax Review." See capital-gains-booking.
  • View-only mode for family members. When a non-admin viewer opens the household portfolio, the surface flips to purple accent, admin-controlled scope pill (locked), and read-only footer on Joint goals: "Read-only: mapping unmapped holdings to goals is admin-only. Open your Personal portfolio to manage your own holdings + goals." Verbatim: "Chitragupt never executes trades for anyone."
  • Family combined view aggregates NAV across up to 6 PANs (Pro Family), splits by member/asset-class, stages cross-PAN §112A headroom, and hints senior-parent §80D super-top-up moves that feed Tax. Filings themselves stay per-PAN.
  • Range switcher on the trajectory chart: 1M · 3M · 6M · 1Y · Custom (JS also supports 1Y · 3Y · 5Y · MAX). No AY pivot on Portfolio (2026-06-11-ay-selector-tax-only).
  • Free tier locks the review. Blurred previews + "Portfolio Review is locked for AY 2026-27" + Unlock ₹249. Past AYs always free.

Related

Sources

  • .context/designs/web/portfolio/portfolio-empty.html
  • .context/designs/web/portfolio/holdings.html
  • .context/designs/web/portfolio/portfolio.html
  • .context/designs/web/portfolio/cg-booked.html
  • .context/designs/web/portfolio/view-only.html
  • .context/designs/web/portfolio/family.html
  • .context/designs/web/portfolio/family-locked.html
  • .context/designs/web/portfolio/portfolio-locked.html
  • .context/designs/web/portfolio/map-goal.html

Every project of mine is written down like this.

Read the résumé