Courseventure · design brief · Quinn → Sana

One course page, one companion — progressive by auth state.

The move: collapse the two near-duplicate course surfaces into one canonical tabbed page (a fast, indexable public Overview + tabs that unlock as you register and enrol), and make the companion a persistent dock that answers in place and never redirects — one conversation, two synced views. Grounded in the current staging build.

Item 1 · hi-fiItem 2 · hi-fiItem 3 · conceptbuild · after 03-Aug launch stabilizes
The designs · clickable
ITEMS 1 & 2 · DESKTOP PROTOTYPE

Unified course page + companion dockSwitch auth state (Anonymous / Registered / Booked) · type in the dock · open full conversation

The whole thing, connected: the tabbed page with auth-gated progressive disclosure (public Overview stays a light, indexable, conversion page — the workspace shell only layers on for logged-in users), and the persistent dock that answers in place, syncs with a roomy Chat tab, and folds away when the conversation is the page.

Open the prototype →
ITEMS 1 & 2 · MOBILE

Mobilephone frames · dock as a bottom bar

Tabs → scrollable segmented control; the companion is a bottom bar that expands to a sheet, answers in place, and yields to the Reserve CTA. Open-full-conversation → the full Chat screen.

Open mobile →
ITEM 3 · CONCEPT

Agent-guided create-courseconcept · vision only

The companion interviews the instructor and co-drafts the course into an editable structured draft — flagging (never inventing) real venues, prices and safeguarding. The same memory later guides students: shared from day one.

Open the concept →
Design note
✓ Quinn's review — decisions locked into this pass: anon→account continuity approved (+ 30-day expiry, legal to bless); price + CTA stays on Overview; registered = locked-teaser tabs (was hidden); one canonical /courses/{slug} with ?tab= deep-links + 301s. #2/#3 are conversion-sensitive — Quinn is surfacing to Khoa; proceed unless he redirects.

Auth-state tab matrix

One canonical URL per course; progressive disclosure. The public Overview is never buried in the app shell — the left workspace rail appears only when logged-in. Anon stays clean (no locked teasers for cold traffic); registered sees locked-teaser workspace tabs to pull registration → enrolment.

StateShellTabs visible
AnonymousLight top-nav onlyOverview · Chat  (clean — no teasers)
Registered, not booked+ workspace railOverview · Chat · Booking · This trip 🔒 · Materials 🔒 · My work 🔒 · Journal 🔒 (locked-teaser → Reserve)
Booked / enrolled+ workspace railOverview · Chat · Booking · This trip · Materials · My work · Journal (unlocked)

Companion: one conversation, two views (Item 2) — design-final

This kills today's auto-jump-to-chat bug: the dock answers where you are. Khoa's finalization — where the answer is read is now unmistakable: the dock opens out into a roomy right-side slide-over and the response is read in that panel, with the course page still visible on the left. Not a tiny corner bubble; not a centre modal.

Dock — collapsed launcher

A calm launcher pill (bottom-right) on every tab except Chat: “Ask the course companion.” It never dominates the page; on the public Overview it's the only companion chrome.

Dock — opened = the reading panel

Tapping it (or “Ask the companion”) slides open a roomy right-side panel. The question + the streamed answer + citation are read right there — a labelled reading area (“you read the answer here”). The course page shifts left and stays fully visible — no redirect, no modal, no lost context.

Chat tab — the full view

The same conversation, full width. The panel's “open full conversation” is a user-initiated switch here. On this tab the companion chrome folds away — the conversation is the page.

Mobile

Stays a bottom bar → sheet: the bar expands upward into a sheet where the answer is read in place, then yields to the Reserve CTA. Open-full-conversation → the full Chat screen.

Synced both ways

Ask in the slide-over on Booking → it's there in the Chat tab, and vice-versa. One thread per course, carried across every tab.

Grounded + guardrailed

Answers from the course's own content (cited). Booking / refund / medical / visa / safeguarding escalate to a human; clear “AI” disclosure throughout.

⚑ Touches the booking / conversion flow — sequence the build safely

  • Item 1 (the merge) touches the core conversion surface. Build it after the 03-Aug launch stabilizes, not in the crunch — the redesign is spec-ready now so engineering can start clean post-launch (with Faye).
  • Price + primary CTA stay on the Overview (Quinn ✓) — the right-rail keeps price + Reserve/Check-dates; the Booking tab handles the deeper cohort selection + deposit. Price is never buried behind a tab.
  • Keep the public Overview SEO-clean. Server-render the Overview + booking panel; the tabbed app-shell/dock hydrate as a progressive layer so indexability and load speed don't regress.
  • Canonical URL & routing (Quinn ✓) — one canonical /courses/{slug} with in-page tabs; tab state via a query param (?tab=booking) so tabs are deep-linkable/shareable while canonical stays clean; 301 the old /booking + sub-routes to it (Faye/Adam at build).
  • The dock is the one contained slice that could land earlier — swapping the auto-redirect for in-place answering is a self-contained, low-risk win that improves the current booking page without touching the merge.

✓ Anonymous → account continuity — approved (legal to bless)

An anonymous prospect's dock conversation carries into their account after signup. Approved model: hold the anon thread on a session token → an explicit one-tap “keep this conversation” opt-in at signup (not default-on) → no auto-carry of booking / payment / PII (fresh confirm required). The unmerged anon thread expires after ~30 days; once merged it follows the course data-retention policy. ⚑ Legal sign-off before build: loop Bindi to bless the retention window + the consent copy — this touches user data + consent.

Courseventure · course surface redesign · Sana (design) → Quinn → Khoa · 2026-07-23 · grounded in the current staging build (demo-gated).