Work / Chitragupt / Wiki / Concepts
portfolio-pillar
Conceptcanonicalverified 2026-09-01
CONCEPT.PORTFOLIO-PILLARPortfolio 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. Onportfolio-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, noREVIEW, noSELL, noBUYCTAs. 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. TheNotescolumn 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 headroomper AY;₹3.75L cross-PAN headroomon 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 supports1Y · 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
- four-pillars — Portfolio is one of the four, review-only
- read-only-review — parent invariant (observation-only, never advisory)
- upload-only · no-manual-entry — holdings from parsed statements or a linked broker API pull
- 2026-09-01-broker-api-sync-as-source — decision allowing the broker API exception
- settings-linked-brokers · onboarding-connect-broker — the two broker-linking entry points
- portfolio-goal-taxonomy — the 10 default goals + mapping rules
- capital-gains-booking — §112A headroom + lot classification
- family-workspace — family combined + view-only-member variants
- pillar-tax — CG-booked numbers feed Tax deterministically
- pillar-dashboard — Portfolio-vs-Nifty chart shared with dashboard
- pillar-portfolio — entity: canonical chart + taxonomy keys
- tier-self · tier-pro-family — unlock gates
- portfolio-empty · portfolio-locked · portfolio-holdings · portfolio-unlocked-strong
- inbox-document-types — Portfolio-routed parsers (broker P&L PDF, MF capital-statement, EPF passbook)
- 2026-06-26-portfolio-sebi-strip — mandatory SEBI disclaimer footer
- 2026-06-11-ay-selector-tax-only — no AY pivot on Portfolio
- copy-strings — Portfolio locked + observation-panel copy
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é