Appearance
Screen blueprint: the validated design input, persona by persona
Part of
car_sales— the dealership operating layer. This page is the direct input to the UI/UX design phase. Where it disagrees with an older page, it wins.
🧮 Revalidated end to end on 2026-08-23, by scanning rather than reading
A stale-decision scanner was run across all 16 vertical pages plus the strategy pages — 18 hits, of which 14 were correction banners doing their job and 4 were real. All four fixed: a "six revenue lines" pointer (now seven), a Foundation cap printed as 25 (now 24), and two places still routing escalation through a WhatsApp thread rather than a QR Setu conversation.
🔎 The section is internally consistent. That is now a measured statement rather than an assertion, and the scanner is worth promoting to a repo gate — QRS-862.
⚠ Read every tier label on this page as a PLAN TEMPLATE, not a structure
🧮 feature_grants carries eight scopes with precedence held as data, so any [Core] / [Growth] / [Complete] label here is overridable per dealer by one row at workspace scope. Foundation → Growth → Complete are named bundles of grants, not hardcoded plans — which is what the owner asked for, and the schema already permits it. Validation and gaps: admin control plane.
0 · Deployment decision, locked
📘 Owner decision 2026-08-23: Option A — shared multi-tenant SaaS — for the whole development phase. Deployment variants must not shape screen design.
⚠ Eight future-limitation flags. Every one is a "do not do the tempting thing" rule, and NONE requires extra work now
🔎 Recorded here so a later dedicated-database or dedicated-instance option stays reachable (deployment and isolation).
| # | Rule to hold now | What it protects |
|---|---|---|
| 1 | parties scoped per ORGANISATION; the phone number is unique within an org, never globally | 📘 QRS-855. A global unique phone is the obvious implementation and it creates a cross-tenant join on the most personal identifier we hold — and it would be unsplittable later |
| 2 | Storage paths lead with the org or workspace id | A bucket can then be split per tenant by prefix. Retrofitting a path convention means moving every file |
| 3 | UUID primary keys everywhere — already true | Rows can merge or move across projects without collision |
| 4 | No client code may read another tenant's row — already true via RLS | The moment one does, a tenant cannot be lifted out |
| 5 | Platform-admin views read through an aggregation layer, never direct cross-tenant SQL | 📘 is_admin() does not exist yet, so this is free to get right |
| 6 | Cross-dealer benchmarking stays out of the product | 📘 Already 🟠 and a Data-Fiduciary question (QRS-837). It is also the one feature that becomes impossible under dedicated databases |
| 7 | The outbox drain worker must be addressable per project | A single hard-coded consumer endpoint would need rewriting per tenant |
| 8 | No screen may assume a single global plan catalogue is readable client-side | Plan metadata is resolved server-side per workspace |
⚠ Nothing above changes a screen. They are schema and data-access habits, and they are cheapest to hold before there is data.
1 · Revalidation verdicts
✂ REMOVE — bloat, duplication or vapour
| Was | Why it goes | |
|---|---|---|
| Group Setu Card | A public card for the dealer group, bundled with Group Intelligence | 🔎 I invented it and it has no user. A group has no walk-in customers and no reception; the outlet cards carry public identity. What a group needs is consolidated reporting, not a second public surface. Removing it also removes a card-counting exception |
| "Automation & workflows" as a screen | A GM-tier screen in Complete | ⚠ A screen with no defined automations designs beautifully and ships empty. The real automations are service reminders, insurance renewal, review requests and follow-up escalation — each is a settings panel inside its own module, not a destination |
| AI as its own screens — AI Receptionist, AI Test-Drive Agent, AI Follow-Up Agent | Four proposed agent screens | 🔎 AI is an affordance, not a destination. A "draft reply" button in the conversation, a summary panel on the lead, a suggested slot in the booking sheet. An AI tab is a tab nobody opens, and it hides the capability from the moment of work |
| Discount governance · F&I attach | Sales Manager nav items | 📘 Both are [Future] and in no wave. Designing them now spends design effort on the least-committed items in the plan. They stay in product scope as future differentiators |
| Marketplace featured placement | A price-book row and a Marketing nav item | 📘 Not sellable (QRS-849), and a nav item for an unsellable capability is a promise |
| Enterprise tier screens | Implied by the SKU | The SKU stays as quoted, never listed. No screens — no such customer exists |
✏ MODIFY
| Change | Why | |
|---|---|---|
| Team Leader nav | Stop leading with My Setu Card | 📘 QRS-854. Their card is optional; their job is the team view |
| Rep's conversation surface | Two surfaces, not one: Enquiries (anonymous) and Conversations (registered chat) | 📘 QRS-861. conversations.consumer_user_id is NOT NULL, so these are structurally different objects |
| WhatsApp in every nav | Demoted to a channel inside a thread, plus a Marketing surface | 📘 D7. It is reach and notification, never the record |
| Reviews | Sits under a Reputation surface owned by GM and Marketing, not a standalone module | It is one loop: interaction → feedback → review → response |
➕ ADD — gaps the revalidation exposed
| Gap | Value | |
|---|---|---|
| Enquiry inbox — for the rep, the Team Leader and reception | ⚠ The anonymous-enquiry track had NO screen anywhere. It is the highest-volume entry point and it appeared in no persona tree | Created by yesterday's correction and missed by every tree. Without it the card has no lead-capture surface at all |
| Standee manager — order, place, name, track, retire | Only mentioned in passing | It is a paid line with per-unit tracking; a purchase with no management surface generates support calls |
| Setup & activation — the 45-day milestone tracker | Designed commercially (§7), never as a screen | 📘 The day-45 health check needs somewhere to live, and the dealer needs to see their own progress |
| Consent & opt-in ledger | A nav item without a spec | DPDP-load-bearing. It must be auditable and exportable, not a toggle |
| My card health — for the rep | Only the GM had card health | The design has three card statuses; the person who can fix theirs must see it |
⏸ DEFER
| Until | |
|---|---|
| Tele-call QA | Audio capture is agreed and Wave 2 data exists |
| Payments / text-to-pay | 📘 Thin, and the OEM often owns the flow |
| Insurance renewal | Complete tier, Wave 3 — the asset record must exist first |
| Group Intelligence screens | Wave 3. ⚠ Design them last, because they are a fold over every other screen's data |
✅ KEEP — and why, briefly
The Setu Card as the spine (it is the product thesis and the only uncopyable part with the tree) · org_owned cards (29.53% attrition) · the visitor register first (zero behaviour change) · per-outlet pricing with card and login caps (matches what the dealer counts) · native chat as the record (complete thread, free attribution, zero channel cost) · annual-only commitment (back-loaded value curve) · standees (the best adoption mechanic in the plan) · the reputation loop (proven category, and our trigger is not copyable).
2 · Four principles that keep the blueprint clean
| 1 · AI is an affordance, never a screen | It appears as a button or a panel at the moment of work. No AI tab |
| 2 · A screen exists only if a named persona opens it to do a named job | Not because a capability needs a home |
| 3 · Management screens are FOLDS, not new data | A GM screen is an aggregate of rep-level rows. If a management screen needs data no operational screen produces, the operational screen is missing |
| 4 · Every screen names its tier and its wave | Because the ladder spans 18 months and designing Wave 3 first is how a pilot becomes a refund |
3 · The navigation tree
text
QR Setu — Car Dealership (one outlet unless marked)
│
├── SHARED BY EVERY LOGIN
│ ├── Sign in · Notifications · My profile & preferences · Help
│
├── RECEPTIONIST no card
│ ├── Today [Core]
│ ├── Log a visitor [Core]
│ ├── Visitor queue & assignment [Core]
│ ├── Enquiry inbox — unassigned [Core]
│ └── Catalogue & offers (read) [Core]
│
├── SALES REPRESENTATIVE card mandatory
│ ├── My day [Core]
│ ├── My Setu Card + card health [Core]
│ ├── Enquiries — anonymous, assigned to me [Core]
│ ├── Leads → Lead detail [Plan · Growth]
│ ├── Customers → Customer detail [Plan · Growth]
│ ├── Conversations — QR Setu chat [Core]
│ ├── Test drives [Plan · Growth]
│ ├── Follow-ups & tasks [Plan · Growth]
│ ├── My performance [Plan · Growth]
│ └── Catalogue & offers [Core]
│
├── SERVICE ADVISOR card mandatory
│ ├── My day [Core]
│ ├── My Setu Card [Core]
│ ├── Service due list [Plan · Growth]
│ ├── Bookings [Plan · Growth]
│ ├── Vehicle record → service history [Plan · Growth]
│ └── Post-service feedback [Plan · Growth]
│
├── TEAM LEADER card OPTIONAL
│ ├── Team dashboard [Plan · Growth]
│ ├── My team — per rep [Plan · Growth]
│ ├── Overdue monitor [Plan · Growth]
│ ├── Unassigned & reassignment [Plan · Growth]
│ ├── Team targets [Plan · Growth]
│ └── (everything a rep has, if card-holding)
│
├── SALES MANAGER / CRM HEAD card OPTIONAL
│ ├── Division dashboard [Plan · Growth]
│ ├── Lead funnel — stage · source · loss reason [Plan · Growth]
│ ├── Teams side by side [Plan · Growth]
│ ├── Source attribution [Plan · Growth]
│ ├── Targets — allocate down the tree [Plan · Growth]
│ ├── Follow-up SLA policy [Plan · Growth]
│ └── Reports & exports [Plan · Growth]
│
├── GENERAL MANAGER no card by default
│ ├── Outlet overview — sales AND service [Plan · Growth]
│ ├── People performance [Plan · Growth]
│ ├── Setu Card health — outlet-wide [Core]
│ ├── Reputation — reviews & recovery queue [Integration]
│ ├── Standee performance by placement [Add-on]
│ ├── Outlet targets [Plan · Growth]
│ └── Reports & exports [Plan · Growth]
│
├── DEALER PRINCIPAL no card by default
│ ├── Group overview — every outlet, every brand [Plan · Group]
│ ├── Outlet comparison & ranking [Plan · Group]
│ ├── Drill-down: group → outlet → team → rep [Plan · Group]
│ ├── Group targets [Plan · Group]
│ ├── Reputation — all locations [Plan · Group]
│ └── Subscription & invoices [Core] ⚠ web only
│
├── MARKETING no card
│ ├── Campaigns → Campaign detail [Add-on]
│ ├── Message templates & approval status [Core]
│ ├── Consent & opt-in ledger [Core] ⚠ DPDP
│ ├── Offers on the cards [Core]
│ ├── Reputation — respond & analyse [Integration]
│ ├── Standee manager [Add-on]
│ └── Message balance & recharge [Usage]
│
└── ORG ADMIN no card · /org boundary
├── Organisation & outlets [Plan · Group]
├── Locations — free [Core]
├── People — invite · deactivate [Core]
├── Roles & scopes [Plan · Growth]
├── Setu Cards — issued vs allowance [Core]
├── Access & limits — logins · storage · AI [Core]
├── Standee orders [Add-on]
├── Setup & activation tracker [Core]
├── Subscription, invoices & GST [Core] ⚠ web only
└── Audit log [Plan · Growth]🧮 51 screens across 9 personas, of which 17 are Core and sellable from Wave 1.
4 · Screen specifications
Legend — Tier: Core · Growth · Complete · Group · Add-on · Usage · Integration. Wave: 1 = Dec 2026 · 2 = Apr 2027 · 3 = Aug 2027.
4.1 · Receptionist
| Screen | Purpose | Key actions | Data shown | Depends on | Tier · Wave | ⚠ Architecture |
|---|---|---|---|---|---|---|
| Today | The only screen reception needs open all day | — | Today's visitors, who is free, today's bookings | visits, users | Core · 1 | Must render on a shared tablet, offline-tolerant |
| Log a visitor | Beat a pen | Name, phone, interest, assign | Rep availability | parties, visits | Core · 1 | ⚠ Two fields and a dropdown. Every extra field is a reason to use the notebook |
| Visitor queue & assignment | Nobody waits unattended | Assign, reassign, mark attended | Queue with wait time | visits | Core · 1 | Assignment writes the attribution the whole hierarchy folds over |
| Enquiry inbox | Anonymous enquiries with no owner yet | Assign to a rep | Enquiry note, phone, source card/standee | enquiry table | Core · 1 | ⚠ Anonymous — no users row. Nullable buyer pattern |
| Catalogue & offers | Answer "do you have…" | — | Read-only stock and offers | catalog_items | Core · 1 | Blocked on media (QRS-852) |
4.2 · Sales Representative
| Screen | Purpose | Key actions | Data shown | Depends on | Tier · Wave | ⚠ Architecture |
|---|---|---|---|---|---|---|
| My day | What to do next, ranked | Open next task | Overdue count, today's follow-ups, new enquiries, bookings | leads, visits | Core · 1 | Proactive by design: it proposes, never just displays |
| My Setu Card + health | Their public identity, and whether it works | Share, set palette | Views, what was viewed, status: live / not published / needs attention | setu_cards | Core · 1 | ⚠ Beacon 404s (QRS-734) — until fixed, "every scan is measurable" is false |
| Enquiries | The anonymous inbox, assigned | Reply by WhatsApp or call, convert to lead | Enquiry note, source touchpoint | enquiry table | Core · 1 | ⚠ No in-app thread to reply into. Reply leaves the platform |
| Leads → Lead detail | Work a pipeline with an SLA | Advance stage, log outcome, set follow-up, mark lost with reason | Stage, age, SLA clock, history, AI summary | leads, parties | Growth · 2 | SLA clock derived in @qrsetu/domain, not SQL |
| Customers → detail | One record per person | Edit, merge, add vehicle | Contact, interactions, vehicles, orders | parties | Growth · 2 | ⚠ Party scoped per organisation (QRS-855) |
| Conversations | The system of record | Send, share an item, AI-draft, hand over | Thread, item bubbles with price snapshot | conversations, messages | Core · 1 | ⚠ Registered consumers only — consumer_user_id is NOT NULL |
| Test drives | Requests → completed | Propose slot, confirm, complete, request feedback | Slots, vehicle, customer | schedules, resources | Growth · 2 | Vehicle as a bookable resource |
| Follow-ups & tasks | Nothing forgotten | Complete, snooze with reason | Due, overdue, escalated | reminders engine | Growth · 2 | 🟢 Deterministic — the live recurrence engine, no AI |
| My performance | Their own number, before their manager quotes it | — | Target vs actual, conversion, response time | targets | Growth · 2 | ⚠ Own data only. Never a leaderboard by default |
| Catalogue & offers | Sell from stock | Share an item into a chat | Stock, variants, offers | catalog_items | Core · 1 |
4.3 · Service Advisor
| Screen | Purpose | Key actions | Data shown | Depends on | Tier · Wave | ⚠ Architecture |
|---|---|---|---|---|---|---|
| My day | Today's bay | — | Bookings, due contacts | bookings | Core · 1 | |
| Service due list | 🌐 The 41.2%-margin line | Contact, book, mark no-response | Due by date and by odometer | assets, reminders | Growth · 2 | 🟢 Deterministic. Both date and odometer recurrence |
| Bookings | Run the bay | Confirm, reschedule, complete | Slot, vehicle, advisor | schedules | Growth · 2 | |
| Vehicle record | The dealership's memory | Add service event, note | History, owner, next due | assets | Growth · 2 | ⚠ The stickiest data in the product |
| Post-service feedback | Retention, and the review trigger | Request feedback | Score, comment | feedback | Growth · 2 | ⚠ Low score routes a recovery task, and the review link still goes to everyone |
4.4 · Team Leader
| Screen | Purpose | Key actions | Data shown | Depends on | Tier · Wave |
|---|---|---|---|---|---|
| Team dashboard | One screen instead of asking each rep | — | Team activity, conversion, overdue total | leads, targets | Growth · 2 |
| My team | Per-person, comparable | Open a rep | Activity, leads, conversions vs target | leads | Growth · 2 |
| Overdue monitor | ⚠ The one list that matters | Nudge, reassign | Every SLA breach in the team, by age | leads | Growth · 2 |
| Unassigned & reassignment | A rep on leave must not freeze a pipeline | Reassign, bulk reassign | Unowned and stalled | leads | Growth · 2 |
| Team targets | Allocate down | Set per rep | Allocation vs outlet target | targets | Growth · 2 |
4.5 · Sales Manager / CRM Head
| Screen | Purpose | Key actions | Data shown | Depends on | Tier · Wave |
|---|---|---|---|---|---|
| Division dashboard | The division at a glance | — | Funnel, SLA compliance, source mix | leads | Growth · 2 |
| Lead funnel | Where business is lost | Filter, drill to a lead | Stage, ageing, loss reason | leads | Growth · 2 |
| Teams side by side | Compare, then coach | Open a team | Per-team metrics | leads, targets | Growth · 2 |
| Source attribution | Which channel produced business | — | Standee placement, card share, walk-in, marketplace, campaign | interaction events | Growth · 2 |
| Targets | Allocate down the tree | Set per team | Outlet → team → rep | targets | Growth · 2 |
| Follow-up SLA policy | Set the clock | Define thresholds and escalation | Current policy, breach rate | feature_grants | Growth · 2 |
| Reports & exports | Month-end without a spreadsheet | Export | Saved reports | read model | Growth · 2 |
4.6 · General Manager
| Screen | Purpose | Key actions | Data shown | Depends on | Tier · Wave |
|---|---|---|---|---|---|
| Outlet overview | ⚠ Sales and service on one screen | — | Walk-ins, enquiries, leads, test drives, conversions, service retention | all operational | Growth · 2 |
| People performance | Per-person, both divisions | Open a person | Activity, outcomes, response time | leads, bookings | Growth · 2 |
| Setu Card health | Cards issued vs staff on roll | Nudge, reissue | Live / not published / needs attention | setu_cards | Core · 1 |
| Reputation | Reviews, and the recovery queue | Respond, assign recovery | Rating trend, themes, unresolved negatives | reviews | Integration · 2 |
| Standee performance | Which touchpoint produces enquiries | — | Scans and enquiries per placement | qr_touchpoints | Add-on · 1 |
| Outlet targets | Set the outlet number | Set, allocate to divisions | Target vs actual | targets | Growth · 2 |
| Reports & exports | Export | read model | Growth · 2 |
4.7 · Dealer Principal
| Screen | Purpose | Key actions | Data shown | Depends on | Tier · Wave |
|---|---|---|---|---|---|
| Group overview | ⚠ The moat, and the demo that closes | — | Every outlet and brand side by side, one funnel | tree + oversight | Group · 3 |
| Outlet comparison | Rank and act | Open an outlet | Comparable rows | oversight | Group · 3 |
| Drill-down | Group → outlet → team → rep → customer | Navigate | Whatever level is open | oversight | Group · 3 |
| Group targets | One number, allocated down | Set | Group vs sum of outlets | targets | Group · 3 |
| Reputation, all locations | One reputation view | Respond | Per-outlet ratings | reviews | Group · 3 |
| Subscription & invoices | What they pay and for what | Upgrade, download invoices | Plan, usage vs allowance, GST | plans | Core · 1 ⚠ web only, no in-app CTA |
4.8 · Marketing
| Screen | Purpose | Key actions | Data shown | Depends on | Tier · Wave |
|---|---|---|---|---|---|
| Campaigns → detail | Reach a segment | Build, schedule, send, clone | Audience size, delivery, replies, attribution | campaigns | Add-on · 3 |
| Templates | Stay sendable | Create, submit, track approval | Status, rejection reason | templates | Core · 1 |
| Consent & opt-in ledger | ⚠ DPDP-load-bearing | Export, revoke | Who consented, when, by what act | opt-ins | Core · 1 |
| Offers on the cards | Change what the card shows | Create, schedule, expire | Live offers per outlet | catalog_items | Core · 1 |
| Reputation | Respond and analyse | Respond, request reviews | Sentiment themes, per-rep attribution | reviews | Integration · 2 |
| Standee manager | ⚠ A paid line needs a surface | Order, name, place, retire | Per-standee scans and enquiries | qr_touchpoints | Add-on · 1 |
| Message balance & recharge | Never run out mid-campaign | Top up | Balance, burn rate | credit ledger | Usage · 1 |
4.9 · Org Admin
| Screen | Purpose | Key actions | Data shown | Depends on | Tier · Wave | ⚠ |
|---|---|---|---|---|---|---|
| Organisation & outlets | The tree | Add outlet, set sharing flags | Tree, depth, ownership model | workspaces | Group · 3 | No write path exists today |
| Locations | Addresses are free | Add, edit | Locations per outlet | locations | Core · 1 | The outlet-vs-location test |
| People | Who works here | Invite, deactivate | Staff, status, last active | users | Core · 1 | ⚠ Deactivating frees the card slot in the same action |
| Roles & scopes | Who may see what | Assign a role to a subtree | Role matrix | RBAC | Growth · 2 | ⚠ RBAC is 0% built. Largest dependency |
| Setu Cards | Issued vs allowance | Issue, revoke, buy more | Count vs cap, per-person status | setu_cards | Core · 1 | Active count, slot reuse |
| Access & limits | What is left | Buy logins, storage, AI actions | Usage vs 5/12/25, GB, AI actions | feature_grants | Core · 1 | ⚠ Never render a monthly price (QRS-845) |
| Standee orders | Buy the physical line | Order, track delivery | Orders, quantities | orders goods line | Add-on · 1 | Goods COGS inside a SaaS book |
| Setup & activation | The 45-day contract, visible | Complete a milestone | Cards issued, hierarchy, catalogue, training, first 50 interactions | activation | Core · 1 | Day-45 health check lives here |
| Subscription, invoices & GST | The commercial record | Upgrade, download | Plan, renewal, invoices +18% GST | plans | Core · 1 | ⚠ Web only |
| Audit log | Who changed what | Filter, export | Role, target, card and plan changes | audit | Growth · 2 | ⚠ Does not exist. First thing an enterprise review asks |
5 · ⚠ Design these twelve first
51 screens is the destination. Designing all of them before five are validated is the trap this section keeps warning about
🔎 Every screen below is Core, Wave 1, and needed by a paying Foundation customer. They are also the whole of the zero-behaviour-change adoption path.
| Screen | Persona | Why first | |
|---|---|---|---|
| 1 | Log a visitor | Receptionist | The adoption wedge. Must beat a pen |
| 2 | Today | Receptionist | Where reception lives all day |
| 3 | Visitor queue & assignment | Receptionist | Creates the attribution everything folds over |
| 4 | Enquiry inbox | Reception + Rep | ⚠ The highest-volume entry point, and it had no screen at all |
| 5 | My day | Sales Rep | The proactive surface. Sets the product's tone |
| 6 | My Setu Card + health | Sales Rep | The product thesis, and the thing they show customers |
| 7 | Conversations | Sales Rep | The system of record |
| 8 | Catalogue & offers | Shared | What a scanned standee opens onto |
| 9 | Standee manager | Marketing | A paid line from day one |
| 10 | Setu Cards (issue/allowance) | Org Admin | Onboarding cannot happen without it |
| 11 | People | Org Admin | Same |
| 12 | Setup & activation | Org Admin | The 45-day contract needs a surface |
⚠ And one design prerequisite that is not a screen: the public Organisation Setu Card is what a standee opens, it is the most-seen surface in the product, and 🧮 its images do not resolve today (QRS-852). Designing standees before that card is worth looking at is designing a door into an empty room.
6 · The journey, end to end
Related
- Persona feature map — the same personas by capability and plan
- Architecture validation — what each screen needs from the schema
- Commercial model — the tiers every screen is labelled against
- Go to market — the waves
- AI strategy — why no screen on this page is an "AI screen"