Skip to content

Work / Babul / Wiki / Entities

demo-tenants

Entitysupersededverified 2026-10-21

TENANT.DEMO

The demo tenant

Summary

What every screen draws: the company Chitragupt and its web product, captured from the real chitragupt.ai. This page is the spec; a screen that disagrees with it is wrong.

Canonical values

Company, products, people

Value
Company Chitragupt · slug chitragupt · India
Product Chitragupt Web · babul.dev/chitragupt/chitragupt-web · captured from chitragupt.ai
Second product Chitragupt Android · nothing captured. Every -empty state draws it
Signed in Ritesh, ritesh@chitragupt.ai, Owner
Plan Team since 12 Oct 2026, annual, 4 seats, $15 a seat a month = $720 a year, renews 12 Oct 2027, Visa ending 4242
AI actions 143 of 200 used this month, 57 left
Storage 1.4 GB of 100 GB
Stack Next.js · Tailwind (Get code shows it as a hint)
Member Initial Access Seat
Ritesh R Owner yes
Ananya A Can merge yes
Kabir K Can edit yes
Meera M Can edit yes
Dev D Can view no
Product Who can open it
Chitragupt Web Everyone in Chitragupt
Chitragupt Android Chosen people: Ritesh, Ananya, Kabir

Drawn on product-settings. One invite is open: priya@chitragupt.ai, Can view, sent by Ritesh, 6 days left. Two preview links: one by Ananya 2 days ago, one by Ritesh just now (Share preview shows the second, once). The free-month screens (billing-trial, billing-locked, billing-deleting) are the same company before Team: 3 of 3 seats (Ritesh, Ananya, Kabir).

Pages (10), roles and journey

Sizes on every page: 1440 · 1024 · 390.

Key Route Name Reached by What it shows
landing / Landing Open "Know exactly what to file." · "Tax, expense, and portfolio — in one place." · Start free → · See pricing
pricing /pricing Pricing Open Free ₹0 · Self ₹249 · AI Self ₹499 (Most popular) · Pro Family ₹799 — one-time per AY
signin /sign-in Sign in Open "Welcome back" · Work email · Password · Sign in
dashboard /dashboard Dashboard User Four KpiTiles: Gross income ₹18,40,000 · Tax payable ₹1,62,500 · TDS paid ₹1,48,200 · Balance due ₹14,300
inbox /inbox Inbox User Upload · Form 16 FY 2025-26 (Parsed) · AIS (Parsed) · 26AS (Pending) · HDFC statement, March (Error: password protected)
document /inbox/:docId Document User Form 16 from Acme Pvt Ltd · employer, PAN, salary ₹18,40,000, TDS ₹1,48,200 · See tax review
tax /tax Tax review User AY 2026-27 · ITR-1 · Old regime ₹1,74,900 vs New ₹1,62,500 → "New regime saves ₹12,400" · Share your Tax Review with a CA · Unlock ₹249
hire /ca/hire Hire a CA User CA Priya Mehta ★4.9 ₹2,999 · CA Rohan Iyer ★4.8 ₹1,999 · CA Neha Kapoor ★4.7 ₹2,499
upgrade /payment/upgrade Upgrade User "Unlock parsing + Tax/Expense/Portfolio for AY 2026-27 · ₹249 one-time" · Pay with Razorpay · "Refundable for 14 days from unlock."
caportal /ca/portal My clients CA Aarav Sharma (In review) · Isha Rao (Filed) · Vikram Shah (Waiting on documents)

The person inside the product is Aarav Sharma (a test user).

Role Signs in as Reaches Note
Open — /, /pricing, /sign-in the default
User test@chitragupt.ai /dashboard, /inbox, /inbox/:docId, /tax, /ca/hire, /payment/upgrade captured today
CA ca.test@chitragupt.ai /ca/portal captured today
Admin admin@chitragupt.ai — 2FA, so walked by hand; nothing captured yet

Journey links (11), each with its action:

From To Action
/ /pricing See pricing
/ /sign-in Sign in
/pricing /sign-in Start free
/sign-in /dashboard After sign-in
/sign-in /ca/portal After sign-in as CA
/dashboard /inbox Upload Form 16
/dashboard /tax Open Tax
/inbox /inbox/:docId Open document
/inbox/:docId /tax See tax review
/tax /ca/hire Share with a CA
/tax /payment/upgrade Unlock ₹249

Issues: /payment/upgrade is a dead end (payment leaves for Razorpay); /ca/portal has no way in from the User journey; /dashboard has 1 missing state. Journeys of their own: File taxes (/dashboard → /inbox → /inbox/:docId → /tax, 4) and Upgrade (/pricing → /tax → /payment/upgrade, 3). New journey being made: Hire a CA (/tax, /ca/hire). Filter counts: All 10 · Open 3 · Sign-in 1 · User 6 · CA 1. A role with nothing captured (Admin) is hidden from the filters; the row shows "1 role not captured", which opens Walk it yourself.

Components (13)

Group Component Variants Used on
Actions Button 5: Primary · Secondary · Danger · Ghost · Warn every page, 40
Actions Dropdown 2: Closed · Open /tax 1 (AY selector)
Data Card 6: Default · Emerald · Amber · Rose · Blue · None /pricing 4, /dashboard 2, /ca/hire 3
Data KpiTile 5: Emerald · Rose · Blue · Amber · Zinc /dashboard 4, /tax 2
Data StatRow 2: Default · Highlight /tax 6, /inbox/:docId 4
Data TableContainer 2: Data · Empty /inbox 1, /ca/portal 1
Feedback StatusBadge 6: Success · Pending · Warning · Error · Info · Default /inbox 4, /ca/portal 3
Feedback Toast 4: Success · Error · Warn · Info /inbox 1
Feedback ErrorBanner 1 /inbox/:docId 1
Feedback LoadingSpinner 2: sm · md /inbox 1
Forms Input 3: Default · Focused · Error /sign-in 2, /ca/hire 1
Layout Modal 4: sm · md · lg · Sheet /inbox/:docId 1
Layout SectionEyebrow 3: Emerald · Amber · Zinc / 3, /pricing 1

Moment 6 only (form controls, all in Ritesh's draft). Kit = taken from Babul Kit 1.0.

Group Component From Variants Interactions
Actions Button "Upload Form 16" captured 25: Type 5 × Default · Hover · Pressed · Disabled, + Loading per Type On click → onClick; hover and pressed built in
Data Table "Documents" (Form 16 · FY 2025-26 Parsed · AIS Parsed · 26AS Pending · HDFC statement, March Error) kit 4, one per State header → Sort, onSort; row checkbox → onSelect; row → onRowClick
Feedback Toast captured 5: Tone Success "Form 16 uploaded" (Undo) · Danger "HDFC statement is password protected" · Warn "26AS is still pending" · Info "AIS refreshed from the portal", + Loading "Uploading Form 16…" After 5 s → Close, onDismiss; Close → onDismiss; Undo → onAction. Shown by Upload Form 16 on /inbox
Forms Checkbox "Form 16 · FY 2025-26" kit 6 toggle, onChange
Forms CheckboxGroup "Share with your CA" kit 4 part onChange → onChange with the values
Forms DatePicker "Pay by" 31 Jul 2026 kit 6: Open × Empty · Data · Error, + Loading a day → Value, onChange; ‹ › month
Forms Radio "New regime" ₹1,62,500 kit 4 Checked on, onSelect
Forms RadioGroup "Tax regime" (New ₹1,62,500 · Old ₹1,74,900) kit 6 each radio → Change to Value, onChange
Forms Select "Assessment year" (AY 2026-27 · 2025-26 · 2024-25) kit 6: Open × Data · Error, + Empty, Loading open, pick → Value, onChange; Esc
Forms Switch "Use the new regime" (Saves ₹12,400) kit 7 toggle, onChange
Layout Accordion "Deductions ₹1,75,000" kit, detached 5 Expanded toggle, onToggle
Layout Modal "Unlock AY 2026-27" · Pay ₹249 captured 12: Width sm · md · lg · sheet × Loading · Data · Error Close, Esc, backdrop → onClose; Pay → onConfirm
Layout Tabs Summary · Old vs New · Documents kit 4: Selected × Data, + Loading a tab → Selected, onChange

Kit: Babul Kit 1.0 in use, 66 components, 10 used, 1 detached, 56 not used. 1.1 changes Select (type-ahead, Esc returns focus), DatePicker (arrow keys), Switch (focus ring). Import a kit draws shadcn/ui: 46 components, 5 picked (Command, Sheet, Hover card, Input OTP, Toggle group). The playground draws CheckboxGroup; Get code draws Switch.

The one gap. KpiTile has no Empty state: the capture never saw a dashboard with no documents. The draft adds it.

Styles (62 tokens) and icons

Group Count Values
Colors 30 brand 50 #ECFDF5 · 100 #D1FAE5 · 200 #A7F3D0 · 400 #10B981 · 500 #059669 · 700 #047857 · 900 #064E3B; accent 400 #F59E0B · 500 #D97706; ink #111827 · ink-2 #4B5563 · ink-3 #6B7280 · ink-4 #9CA3AF; page #F3F4F6 · surface #FFFFFF · muted #F9FAFB · line #D1D5DB · line-strong #9CA3AF; success #059669 · warn #D97706 · danger #E11D48 · info #2563EB, each with a -bg; workspace personal #059669 · family #2563EB · ca #D97706 · admin #E11D48
Fonts 2 Geist 400 · 500 · 600 · Geist Mono 400
Typography 10 10 · 11.5 · 13 · 14 · 16 · 18 · 22 · 28 · 36 · 46 px
Spacing 8 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64
Radius 7 sm 8 · md 12 · lg 16 · xl 20 · 2xl 24 · 3xl 28 · pill 999
Shadows 3 sm · md · lg
Motion 2 150 ms ease-out · 300 ms ease-out

Near-duplicate: ink-3 #6B7280 and a raw gray-500 #6B7280 used 9 times.

Logos (3): the Mark (a dark ₹ on an emerald rounded square), the Wordmark ("Chitragupt" beside the mark), the Favicon. Icons (24, Lucide, in the text colour): chevron-right, check, users, upload, loader-circle, clock, lock, chevron-down, circle-alert, x, info, triangle-alert, trending-up, shield-check, message-circle, file-text, eye, circle-check, wallet, star, search, chart-pie, chart-column, piggy-bank. Selected on Icons: upload, drawn in 9 places on 3 pages (/dashboard 2, /inbox 6, /inbox/:docId 1), at 16 and 20, stroke 2.

The story, in order

Every screen sits at one moment of this story. A screen never shows two moments at once.

Moment Screens What is true
1. Onboarding onboarding/*, first Analysis 12 Sep 2026, the free month. Capture of chitragupt.ai as Open + User (the free month allows Open and one role; CA and Admin are drawn locked "Team"). The free month walks it yourself; Capture automatically is drawn locked "Team". The automatic walk (capture-walk*) draws the same 9 pages as Team captures them, and its Stop opens the full Analysis. Main is v1.0, no branches, no draft. "Stop and see the analysis" opens the free-month Analysis (analysis/analysis-locked.html)
2. Team settings, billing Moved to Team on 12 Oct 2026; CA captured since. Admin still needs Walk it yourself (2FA)
3. Editing journey*/, pages*/, components*/, styles*/, editor/, branches/review* Main v1.4. One open branch: pricing-copy. Ritesh's draft has 3 changes (below). AI screens are the moment before: draft has 1 change (warn), and Apply adds KpiTile Empty and shows it on /dashboard → 3
4. Saved branches/branch*.html Review saved the draft as kpi-empty-state, just now. The draft is empty again. Branch page first shows "Verify: not run"; Verify then gives 94; Merge confirms
5. Merged versions/* Main is v1.5 "KpiTile empty state" (Ritesh, today). Merged 5. Open 1 (pricing-copy). Draft empty
6. Form controls components-sets*/, components-kit/, components-play/, components-edit/components-{start-from,properties,new-property,interactions}, components/components-get-code-props Main is v1.5. Ritesh's new draft has 13 changes: ten components added from Babul Kit 1.0 (Switch, Checkbox, CheckboxGroup, Radio, RadioGroup, Select, DatePicker, Table, Tabs, Accordion; Accordion then detached) and Button, Toast and Modal given properties and interactions. Components lists 23. Babul Kit 1.1 is offered and changes Select, DatePicker and Switch. Proposed in 2026-10-21-components-like-figma
7. Placing a component pages-place/* Right after moment 6: main v1.5, the same draft. On /dashboard in Edit, Assets lists the 23 components in 5 groups (Actions 2 · Data 5 · Feedback 4 · Forms 8 · Layout 4); Babul Kit 1.0 has 56 not used. Ritesh places Button in the Documents card: default Type primary, Label "Upload Form 16", Show icon off; he changes 3: Type secondary, Label "Upload 26AS", Show icon on (Icon upload). Hug 128 × 38. Draft 13 → 17 (placed + 3 overrides). Then On click → Open page /inbox, Tap, label "Upload 26AS" (a 12th journey link, in the draft) and Show component Toast, success, "26AS uploaded": draft 19. Search "date range": no match in the product, Date range in Babul Kit (Inputs). Empty draws Chitragupt Android with no components. Proposed, waiting for the owner
Value
Tags v1.0 Capture of chitragupt.ai · v1.1 Inbox empty state (Kabir) · v1.2 Pricing copy AY 2026-27 (Meera) · v1.3 Button radius 12 (Kabir) · v1.4 CA badge (Ananya) · v1.5 KpiTile empty state (Ritesh, after moment 5)
The draft (moment 3) 3 changes: KpiTile gains Empty · /dashboard shows it · warn #D97706 → #B45309 (text contrast 3.2 → 5.0, 14 elements on 4 pages)
pricing-copy Ananya, from v1.2. Changes the pricing copy and Button radius 8 → 16. Main changed Button radius 8 → 12 in v1.3 (Kabir). Both changed it: 1 conflict. Settling returns to All branches with pricing-copy synced
Ritesh's draft, on review-conflict only After Ananya merged warn #C2410C to main, the draft's warn #B45309 is 1 conflict, settled on Review by Keep your draft or Take main
Verify of kpi-empty-state Match score 94 = mean of 10 pages: /dashboard 72, /inbox 90, /tax 88, /ca/hire 90, the other six 100. 4 differences on 4 pages
Scores Match score (Verify, 0–100) is how close a branch is to the target. Design consistency (Analysis) is a different score. Never call either just "consistency"

Analysis

Performance 71 · Accessibility 88 · Best practices 96 · SEO 92 · Design consistency 81 · State coverage 74. Slowest page /tax, 3.9 s. 11 accessibility issues on 3 rules (most: warn text contrast). 2 duplicate component groups: Card and the pricing tile; KpiTile and StatRow's highlight.

Related

Sources

  • The real product: chitragupt.ai, and ~/git/products/chitragupt/.context/designs/web/ (its pages, components, tokens and copy).
  • The owner chose Chitragupt as the demo on 2026-10-18.