Skip to content
Ritesh FirodiyaGet in touch

Work / Chitragupt / Wiki / Decisions

2026-06-01-ask-web-surface-lands

Decisioncanonicalverified 2026-06-26

DECISION.2026-06-01.ASK-WEB-SURFACE-LANDS

/app/ask web surface lands (AI Q&A entry point)

Decision

Build the /app/ask web surface as the AI Q&A entry point, matching the four wireframe states (locked / empty / quota-exhausted / default chat). Distinct from /ca/ask/* which is the consultation marketplace history.

Why

.context/wiki/surfaces/* row /app/ask was mobile-future-twin (wireframe exists, no web build). Wireframes under .context/designs/web/ask/ (ask.html, ask-empty.html, ask-locked.html, ask-quota-exhausted.html) are now the spec the web build matches. Distinct from /ca/ask/* which is the consultation marketplace history (separate product despite the shared "ask" word).

Impact

  • New route apps/website/src/app/(app)/ask/page.tsx dispatches between locked / empty / quota-exhausted / default chat based on AI_PLANS membership + canAccessAI(sub, AY) + presence of a confirmed document + aiQuotaRemaining.
  • Components under src/components/ask/ (AskChatView, AskSidebar, AskTranscriptDemo, AskComposer, AskQuotaChip, AskEmptyState, AskLockedState, AskQuotaExhaustedState).
  • Helpers: src/utils/ist-day.ts (todayIstDay, msUntilIstMidnight, formatHmCountdown), src/utils/ask-quota.ts.
  • RoleNav grows a purple "Ask" nav item visible only to AI Self / Pro Family.
  • Pricing strings sourced from shared/config/plans.ts so .context/wiki/entities/* remains the single price truth.
  • Transcript itself is the wireframe demo content — wiring it to the AI callable (apps/functions/src/ai/) is the next step.
  • Affects tier-ai-self, tier-pro-family, copy-strings.

Status

Active.

Sources

  • .context/wiki/decisions/* § "2026-06-01 — /app/ask web surface lands (AI Q&A entry point)"

Every project of mine is written down like this.

Read the résumé