Skip to content
Ritesh FirodiyaGet in touch

Work / Chitragupt / Wiki / Concepts

inbox-pillar

Conceptcanonicalverified 2026-08-10

CONCEPT.INBOX-PILLAR

Inbox pillar

Summary

Inbox is the only writer in the system — the upload + parse + triage hub. Every entry in Tax, Expense, or Portfolio traces back to a document uploaded here. On the Free tier Inbox is view-only; parsing unlocks with the paid tier and back-parses the held backlog.

Why it matters

Every downstream computation (regime choice, refund waterfall, cashflow markers, CG headroom) is a function of what Inbox parsed. If Inbox drifts from the wireframe, an LLM will invent doc statuses that don't exist ("Parsing…"), forget that the Free tier holds documents view-only, or drop the "Needs your action" triage shelf — which is the whole reason Inbox exists as a pillar and not a settings page.

Implications

  • Only writer. No other surface may create or mutate a document; downstream pillars are read-only over the Inbox output. Corollary of upload-only + no-manual-entry.
  • Three states. empty (no docs yet) · populated (≥ 1 doc) · upgrade (Free tier at storage cap). The Free-tier populated state carries Parses on upgrade pills on every row.
  • Two-column layout. Left sidebar (Shelves + view toggle + Folders + Storage meter) → Main pane (Dropzone → "Needs your action" shelf → All documents list).
  • Storage caps are hard numbers, enforced on both ends. Free = 200 MB · Self / higher = 5 GB · per-doc ≤ 25 MB. When the cap is hit: server rejects the upload signed-URL request and the client-side dropzone disables with "Uploads paused — storage full". See 2026-05-31-free-tier-storage-cap.
  • Accepted types: PDF · XLSX · ZIP (ZIPs auto-expanded on receipt).
  • 43 document types supported at V1 (was 28 as of 2026-07-10). Enumerated in inbox-document-types. The empty-state copy names this count verbatim; the upgrade banner cites five by name (Form 16 · Form 26AS · AIS · TIS · ITR-V) + "<N> more types" — both counts are derived from Object.keys(DOCUMENT_TYPES).length as of 2026-08-10, not hardcoded.
  • Free tier = view-only hold. No parsing runs. Every doc row on Free carries a Parses on upgrade pill and links to review-document-view-only instead of review-document. On upgrade, backfillFreeUploads fan-outs the whole held backlog with an ETA ("18 documents auto-parse · ~4 min" on the upgrade banner).
  • "Needs your action" is a first-class triage shelf, not a nav afterthought. Item archetypes: locked PDFs (password prompt), uncategorised batch (pick a category), expiring policy (renewal), OCR failure (re-upload sharper scan). AIS/26AS mismatch is in the wireframe but not built — no backend job diffs AIS against 26AS per TAN/section; scoped out rather than faked, see 2026-08-10-inbox-wireframe-alignment.
  • Smart shelves (auto-computed views): ⚡ Needs your action · ⏳ Expiring in 90 days · 🧾 This year's tax pack · 🕒 Recently added. View toggle: By type / By year.
  • Identity buckets = 12 canonical L1 folders + 4-level tree per bucket. See identity-buckets (Tax · Banks · Employer · Investments · Loans · Insurance · Health · Assets · Retirement · Business · Identity documents · Other). Fixed depth Bucket → Identity → Year → Document; year axis controlled by period_key per bucket (AY / FY / calendar / event_date / none). Tax bucket is a virtual cross-listing view. Docs that don't match any bucket land in Other with an amber badge. Supersedes prior folder-taxonomy per 2026-07-11-user-identity-entry-model.
  • Every doc row carries a status. See inbox-document-status for the canonical set. The set is closed — no ad-hoc status strings.
  • No charts on Inbox. Inbox surfaces work-to-do (shelves) and inventory (folder tree + list). Charts live on the pillars that consume its output.

Related

Sources

  • .context/designs/web/inbox/inbox-empty.html
  • .context/designs/web/inbox/inbox.html
  • .context/designs/web/inbox/inbox-locked.html

Every project of mine is written down like this.

Read the résumé