UX Dossier · v0.1 · May 2026

US Coachways
UX Dossier.

A reference-grade UX dossier prepared the way the skill prescribes: business framed before user, user framed before screen, screen framed before code. Every framework below cites its primary source. Every claim about a user is tagged with confidence — VALIDATED, INFERRED, or ASSUMED — because the difference matters at handoff.

Mode
Flow Strategist → Wireframe Architect → Spec Engineer
Reference frameworks
9 references · 14 sections
Personas
3 JTBD archetypes
Research status
Desk research + competitive teardown. No primary interviews yet.
Section 01 · Strategy Check

Is the business context clear enough to design from?

The skill prescribes a 5-question gate before any UX work begins. The point is to surface assumptions, not pretend they don't exist. Below is the assessment for the US Coachways rebuild as of intake.

Framework · Strategy Check (5-question gate) Source: BUSINESS-CONTEXT.md § 1 — [AGGREGATED] practitioner tool, no single originator. Used before deep-diving into user flows to surface gaps in business context.
STRATEGY CHECK · US Coachways rebuild
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. VALUE PROPOSITION                             [x] Clear   [ ] Fuzzy   [ ] Unknown
   "America's largest, most-trusted charter bus broker — 35 years,
    300K+ trips, FEMA-approved, Fortune 500-trusted, now with
    instant pricing and a 110% Trip Guarantee no other broker offers."

2. REVENUE MODEL                                 [x] Defined [ ] Exploring [ ] Unknown
   Brokerage commission on charter bookings, 10% deposit at booking +
   balance due 30 days pre-trip. Recurring revenue from corporate
   shuttle accounts (highest-LTV cohort).

3. TARGET SEGMENT                                [~] Specific [x] Broad [ ] Unknown
   Broad-but-known. 9 audience types collapse to 3 archetypes
   (see Personas § 05). Highest-LTV is corporate/government; highest
   volume is group leaders (weddings, schools, religious).

4. COMPETITIVE POSITION                          [x] Mapped   [ ] Vague   [ ] Unknown
   Mapped against CharterUP (instant-quote marketplace, 2018) and
   GoGo Charters (phone-driven broker, 2012). See § 02 Business
   Context for full competitor analysis. USC's moat: tenure +
   government/F500 credentials + network depth (7,000 vehicles).

5. SUCCESS METRICS                               [~] Defined [x] Fuzzy [ ] Unknown
   Defined directionally, not numerically.
   Primary: cost-per-booked-trip from paid acquisition ↓
   Secondary: organic share-of-voice on high-intent queries ↑
   Tertiary: % of trips repeat-booked via accounts ↑
   Targets not set numerically yet — flag for sprint 0.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
RECOMMENDATION
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

0-1 Unknown: Proceed with UX work
→ 2 Unknown (Target segment specificity, Success metric quantification)
2-3 Unknown: Flag gaps, proceed with assumptions documented
4-5 Unknown: Recommend business strategy session before UX

Verdict: PROCEED with documented assumptions. Set numeric
KPIs in sprint 0; the UX direction is independent of the exact
threshold and won't be invalidated by setting one.
Assumptions we are designing under (flagged)
  • Assumption 1 — Buyers will trust an instant quote from USC because of tenure, even though USC has not previously offered one. INFERRED from CharterUP's growth trajectory.
  • Assumption 2 — Corporate procurement buyers (David archetype) are willing to self-serve on standard trips and only escalate to a planner on complex ones. ASSUMED; needs validation interviews.
  • Assumption 3 — A publicly-stated Trip Guarantee will not surface adverse selection (operators racing to bottom on price). INFERRED from network depth (7,000 vehicles); needs ops modeling.
  • Assumption 4 — Mobile-vs-desktop is roughly 60/40 weighted to mobile for paid traffic, 70/30 desktop for organic high-intent. ASSUMED from industry norms; needs analytics confirmation.
What this gate let us skip · what it didn't

With the gate passing at 2 unknowns, we proceed to user research and IA work without a full business-strategy session. We're not designing for a business model that isn't real.

What we still defer until later sprints: setting the numeric KPI thresholds (conversion rate target, LTV/CAC ratio), formalizing the Trip Guarantee ops policy (eligible operator pool, payout SLA), and primary-research validation of the David archetype's self-serve appetite.

Gate result · proceed

Strategy is sufficiently mapped to design from. The two remaining gaps (segment specificity, KPI quantification) are addressable inside the design process, not blockers to starting it. The dossier continues with full Business Context next, then audit of the current site against Norman + Krug + Garrett, then JTBD research.

Section 02 · Business Context

The competitive structure of the charter bus industry, applied to US Coachways.

Four frameworks, ordered from least-to-most adversarial: Lean Canvas (what the business is), SWOT (where it stands), Competitor Analysis (who else is in the room), Porter's Five Forces (the structural forces acting on everyone). Each ends with the UX implications.

2.1  Lean Canvas

Framework · Lean Canvas (9 blocks) — A startup-adapted Business Model Canvas. Maurya replaced four blocks of Osterwalder's original (Key Partners → Problem, Key Activities → Solution, Key Resources → Key Metrics, Customer Relationships → Unfair Advantage) to emphasize problem/solution fit. Source: BUSINESS-CONTEXT.md § 3 — Ash Maurya, "Running Lean," 2012 (ISBN 978-1449305178). Adapted from Osterwalder & Pigneur, "Business Model Generation," 2010.
Problem
  • Booking a charter bus takes days of phone tag and PDFs.
  • Buyers can't tell good operators from bad — no visible safety / reviews.
  • Last-minute cancellations leave groups stranded (industry pattern).
Existing alternatives
  • Google a local operator → call → wait 2 days.
  • CharterUP's marketplace.
  • Internal motorpool / employees driving themselves.
Solution
  • Instant verified quote pulling SubOut.com inventory (parity with CharterUP).
  • Operator transparency — DOT rating, on-time %, photos, reviews per operator.
  • Public USC Trip Guarantee — 110% refund + 2hr backup.
Key metrics (AARRR)
  • Acq: CPA on paid + organic share-of-voice.
  • Act: % visitors who complete quote builder.
  • Ret: % bookers who return within 12mo.
  • Rev: avg order value · take-rate.
  • Ref: referral-link conversion (post-trip).
Unique Value Proposition

"Charter buses that show up — backed by 35 years and a 110% guarantee."

"Real prices in 60 seconds, from the broker FEMA and the Fortune 500 use, with the only Trip Guarantee in the industry."

High-level concept

Kayak for charter buses, run by the people who already move FEMA.

Unfair Advantage
  • Tenure — 35 yrs, 300K trips. Cannot be bought.
  • Federal credentials — GSA Schedule + FEMA partner.
  • SubOut.com marketplace tech — already operational on operator side.
  • Network depth — 7,000 vehicles, 10,000 drivers, 44 states.
  • 9.3 NPS, 4.6 Trustpilot — earned, not bought.
Customer Segments
  • Coordinators · weddings, schools, corporate events
  • Procurement · F500, hospitals, government
  • Group leaders · senior clubs, religious, sports
Early adopters (Maurya: where to start)
  • NYC-metro corporate shuttle coordinators (existing USC customers).
  • Repeat religious / senior group leaders booking 4+ trips/yr.
Channels
Awareness
  • Paid Google search (current)
  • Organic SEO (city / route / trip-type / comparison)
  • Federal / GSA channel partnerships
  • Operator-referral (offline)
Evaluation → Purchase → Retention
  • Eval: instant quote, comparison page, reviews
  • Buy: self-serve checkout, 10% deposit
  • Deliver: live tracking dashboard, driver chat
  • Retain: Team Account, recurring shuttles
Cost Structure / Revenue Streams
Cost (variable)
  • Operator payout (largest line item)
  • Paid acquisition
  • Trip Guarantee absorption (new)
  • Payment processing (Stripe ~2.9%)
Cost (fixed)
  • ~75 employees · planners, ops, eng
  • Salesforce + Heroku + new Vercel
  • SubOut.com ongoing dev
Revenue
  • Brokerage margin on each trip (~15–25%)
  • Take-rate scales with avg order value ($1.8K–$85K)
Pricing
  • Dynamic (operator + USC margin + season)
  • 10% deposit at booking
  • Balance auto-charge 30d pre-trip
  • Negotiated MSA pricing for corporate accounts
What this canvas tells design

The UVP and Unfair Advantage do most of the work — every screen should restate "35 years, FEMA, Trip Guarantee" in some form. The Key Metrics row tells us what to instrument: every flow needs measurable conversion. The Channels row tells us the SEO surface (city/route/trip-type/comparison) and the Account surface are co-equal priorities, because Channels covers both Awareness and Retention.

2.2  SWOT

Framework · SWOT (2×2 matrix) — Internal × External, Helpful × Harmful. Used to surface UX initiatives that amplify strengths, mitigate weaknesses, exploit opportunities, and defend against threats. Source: BUSINESS-CONTEXT.md § 4 — [AGGREGATED], standard strategic management practice. Often credited to Albert Humphrey / Stanford Research Institute, 1960s–70s.
Helpful · achieving the rebuild's goalHarmful · achieving the rebuild's goal
Internal
(org attributes)
STRENGTHS
  • 35 years of operating history; 300K+ trips, 12M+ riders.
  • Federal & F500 credentials (GSA Schedule, FEMA, F500 references) — cannot be bought.
  • Network: 7,000+ vehicles, 10,000+ drivers, 44 states.
  • Existing marketplace tech (SubOut.com) — operator-side already proven.
  • 9.3 NPS, 4.6 Trustpilot — strong earned reputation.
  • Salesforce as system-of-record · planner workflows already mature.

UX leverage: Surface these everywhere. Trust badges, logo wall, founder story page, "since 1990" in nav, DOT/MC numbers in footer.

WEAKNESSES
  • No instant-quote capability on consumer site (single largest leak).
  • No customer-facing self-serve checkout, dashboard, or account layer.
  • Dated site UX, thin city pages, no route pages — SEO trails competitors.
  • BBB record shows pattern of late cancellations + slow refunds.
  • No published pricing — every quote requires a planner.
  • Brand awareness skews regional (NY/NJ) despite 44-state operation.

UX leverage: Trip Guarantee directly addresses cancellation reputation. Instant quote + dashboard + account close the product gaps.

External
(environment)
OPPORTUNITIES
  • Charter bus industry is $18B and still mostly run on 30-year-old tools.
  • No competitor has a real corporate-account / recurring-shuttle product.
  • Route pages are an open SEO surface (CharterUP & GoGo have weak coverage).
  • AI / natural-language trip planning will become buyer expectation in 12–24 mo.
  • FEMA + climate-disaster transport is structurally growing.
  • Bottom-funnel "vs CharterUP" search queries are growing as CharterUP matures.

UX leverage: Build the Account layer competitors haven't. Programmatic SEO templates capture organic ahead of competitor catch-up.

THREATS
  • CharterUP is well-funded and shipping fast — instant book + tracking already at parity-or-better.
  • GoGo's city-page SEO depth is hard to outflank head-on.
  • Uber / Lyft motorcoach partnerships could enter the market (Uber Charter already announced).
  • Operator-supply consolidation could shift bargaining power.
  • Regulatory: state-level broker licensing increasingly fragmented.
  • Macro: corporate-travel budgets remain volatile post-2024.

UX leverage: Build switching costs via Account (sticky data). Lean harder on federal / regulatory advantages competitors can't replicate.

Strategic implications · S-O · W-O · S-T · W-T

S-O · Use strengths to capture opportunities

  • Federal-grade SEO surface. Build a "/government" + "/disaster-response" cluster nobody can match.
  • Convert tenure into trust-on-screen. Founder story + 300K trip counter + FEMA case study on landing.
  • Use SubOut.com's existing supply data to power the instant-quote UX competitors approximate.

W-O · Overcome weaknesses by exploiting opportunities

  • Ship the Account layer first. The biggest competitor gap is the biggest USC gap — closing it is a double win.
  • Programmatic route pages close the SEO gap with content competitors don't have either.
  • Trip Guarantee turns the BBB cancellation history into proof we know how to handle it.

S-T · Use strengths to avoid threats

  • Lean on government & F500 credentials to defend the high-LTV B2B segment from CharterUP's product-led push.
  • 9.3 NPS is a moat against new-entrant Uber Charter — surface in every comparison.
  • 44-state operator network is the credible answer to "What if my operator cancels?"

W-T · Minimize weaknesses, avoid threats

  • Speed-of-iteration risk. Modern stack (Vercel + Next.js) is non-negotiable so we can ship as fast as CharterUP.
  • Don't pick a fight on raw city-page volume with GoGo — win on route depth + comparison pages instead.
  • Lock in repeat corporate accounts before Uber Charter scales its motorcoach product.

2.3  Competitor Analysis

Framework · Competitor Analysis — Direct vs. indirect vs. substitute mapping, full profile per competitor, feature matrix, positioning map, then synthesized table-stakes / differentiator / gap insights. Source: BUSINESS-CONTEXT.md § 5 — [AGGREGATED] standard strategic-management practice.
Competitor identification
Direct (same solution, same buyer)
  • CharterUP — instant-quote marketplace, founded 2018, ~$50M+ raised
  • GoGo Charters — broker, founded 2012, phone-driven
  • BookBuses — NY-based broker, smaller
Indirect (different solution, same job)
  • Local operator direct (Coach USA, Greyhound charter division)
  • Limousine / sprinter van companies
  • Internal employer motorpools
  • Group-rate Amtrak / commercial bus (Megabus)
Substitute (non-consumption)
  • "Everyone drives themselves" (the most common alternative)
  • Rideshare + caravan
  • Postpone / cancel the event
Competitor profile · CharterUP
Founded · HQ · Funding2018 · Atlanta GA · VC-backed (multiple rounds)
Target segmentMass-market group travel + recurring corporate; "Fortune 500 companies and businesses of all sizes"
Positioning"The first and only marketplace that provides real-time quotes and availability." 60-second booking is the headline promise.
Pricing modelDynamic, marketplace-priced, 10% deposit at booking, balance due per operator policy. Prices on marketplace are non-negotiable.
Key featuresInstant quote · real-time inventory · operator safety ratings · on-time % · reviews · self-serve checkout · live tracking · driver messaging · 24/7 phone
UX strengthsProduct-led, fast, real-time data exposed to consumer, strong city-page SEO, modern stack, mobile-first
UX weaknessesLess authority on enterprise/government, "feels startup", limited account/recurring features, instant-book → operator-cancel risk surfaces in reviews
User sentimentPositive on speed and ease; mixed on operator quality variance; some negative for last-minute reallocations
Competitor profile · GoGo Charters
Founded · HQ · Funding2012 · Atlanta GA · privately held
Target segmentWide — leans heavily on city-specific group lead-gen (weddings, schools, sports)
Positioning"Personalized quote in a timely fashion." Phone-first; "24/7 live reservation agents."
Pricing modelEmail-PDF quote → call to confirm → 10% deposit → balance due 30 days pre-trip
Key featuresMassive city-page SEO footprint · local phone numbers per metro · published price-range pages · 24/7 sales
UX strengthsSEO breadth (hundreds of city pages), trust-friendly tone, transparent pricing FAQ, fast phone response
UX weaknessesNo instant online quote, no self-serve booking, no account, no tracking, no operator profiles, generic content templates
User sentimentPositive on customer service; quote-to-book friction is the most cited complaint
Feature comparison matrix
FeatureUSC (today)USC (proposed)CharterUPGoGo
Instant online quoteNYYN
Self-serve checkoutNYYN
Operator profile (safety, ratings, on-time %)NYYN
Live trip tracking + driver messageNYYN
Trip Guarantee (110% refund + backup)NYPN
Federal / GSA contractorYYNN
Recurring shuttle / account productNYNN
Programmatic route pages (A→B)NYPP
City pages (programmatic depth)PYYY
Published pricingNYYP
Tenure / scale credibility35y35y8y14y
24/7 phone & chat supportYYYY
Positioning map · Trust × Speed

The two axes that matter most to charter-bus buyers are trust the operator will show up (vertical) and speed to a real price (horizontal). Plotting the field:

Speed to a real price → Trust operator will show up → SLOW · HIGH-TRUST FAST · HIGH-TRUST SLOW · LOW-TRUST FAST · LOW-TRUST USC · today Tenured, FEMA-grade, but RFQ-only USC · proposed Instant quote · 110% guarantee · 35yr authority CharterUP Fastest, but newer brand & no fed creds GoGo Charters Strong SEO, but phone-first quotes Local operator direct Uber Charter (entrant)

The empty top-right quadrant is the white space. Both axes are needed: speed alone (CharterUP) doesn't beat the trust deficit; trust alone (USC today) doesn't survive the comparison-shopping buyer. The proposed USC owns the corner by combining them.

Competitive insights

Table stakes (must have to compete)

  • Instant online quote (under 60 seconds, no phone call)
  • Self-serve checkout with 10% deposit
  • Photos + reviews + on-time data per operator
  • 24/7 phone support & chat
  • Live trip tracking + driver communication
  • Mobile-responsive end-to-end

Differentiators (where USC wins)

  • 35-year track record & 300K+ trips · Cialdini authority
  • GSA + FEMA + F500 credentials
  • Public Trip Guarantee with 110% refund + 2hr backup SLA
  • Largest operator network (7,000+ vehicles)
  • Team Account product for recurring B2B (un-fought territory)

Gaps to fill (catching up)

  • Real-time inventory + pricing on consumer site
  • Programmatic city-page depth
  • Published per-trip-type pricing pages
  • Modern stack & CWV-tier perf

UX opportunities (competitor weakness)

  • Account dashboard with cost centers + consolidated invoicing (CharterUP & GoGo: neither has it)
  • Route pages (NYC→Boston style) — competitors thin here
  • "vs CharterUP" comparison page (high-intent bottom-funnel)
  • Federal / disaster-relief micro-site (uncontested by competitors)

2.4  Porter's Five Forces

Framework · Porter's Five Forces — Threat of new entrants · supplier power · buyer power · threat of substitutes · competitive rivalry. Scored 1 (LOW) / 3 (MED) / 5 (HIGH). Total 5–10 attractive · 11–17 moderate · 18–25 intense. Source: BUSINESS-CONTEXT.md § 6 — Michael E. Porter, "Competitive Strategy," 1980 (ISBN 978-0684841489).
ForceScore / 5Why this scoreUX response
1. Threat of new entrants 4 Capital to enter as a broker is modest, regulatory hurdles are state-level (passable), and there's a clear playbook (CharterUP). Uber Charter has already announced motorcoach product. Operator-supply is plentiful. The technology layer is the actual moat — and it's getting cheaper. Move fast. Establish UX patterns users come to expect (instant quote, dashboard, account). Build network effects via account data & trust.
2. Bargaining power of suppliers (bus operators) 3 Operator supply is fragmented (thousands of small motorcoach operators); USC's network has 7,000+ vehicles. But during peak season + in major metros, supply tightens. Operators can multi-home across brokers freely; switching cost is near zero. Operator portal (SubOut.com refresh) is critical — supplier loyalty becomes a UX win. Show operators their tier, payout cadence, & trip allocation transparency to keep them engaged.
3. Bargaining power of buyers 4 Buyers have many alternatives, low switching cost, and increasingly high price/info transparency (CharterUP made instant quotes the new baseline). Corporate buyers in particular have leverage on price for recurring routes. Reduce friction (instant quote, self-serve checkout). Build switching costs via Account (saved data, recurring routes, MSAs). Personalization & team features create lock-in.
4. Threat of substitutes 3 "Everyone drives themselves" remains the most common alternative for small/mid groups. Vans + rideshare caravans & commercial bus (Megabus, Amtrak group) substitute for some trips. But for ≥30-pax groups or formal events, substitutes are limited. Make the value of not driving yourself overwhelmingly clear — total cost calculators, time-savings stats, safety records. Position against the substitute, not just direct competitors.
5. Competitive rivalry 4 Multiple well-resourced brokers (CharterUP VC-backed; GoGo entrenched in SEO). Industry growth is moderate (~5–7% CAGR). Differentiation is mostly UX + trust, not service itself. Exit barriers are low (asset-light brokerage). UX must be a true differentiator, not parity. Focus on delight (the dashboard, the trip-guarantee moment, the account experience). High visual quality is now a competitive necessity, not a polish line item.
Total: 18 / 25 · INTENSE competitive structure

Industry interpretation per Porter: "Intense competition, differentiation critical." This is consistent with what the SWOT and competitor analysis surfaced — UX is no longer a polish layer in this market, it's table stakes and the wedge. Buyer power and new-entrant threat are the two highest forces; the UX response to both is the same: build switching costs through the Account layer competitors haven't shipped.

2.5  Business context → UX priorities

Framework · Business-to-UX mapping — Maps business model characteristics to specific UX design priorities. Used as the synthesis output of the Business Context block. Source: BUSINESS-CONTEXT.md § 7 — [AGGREGATED] practitioner consensus.
Business insight (from above)UX priority that followsWhere it shows up
Revenue = brokerage commission per tripOptimize conversion funnel; reduce checkout friction; raise avg order value via amenity upsellsHero quote builder · Trip details · Checkout (single page)
High buyer power (commodity threat)Increase switching costs via personalization & saved-state. Build habit-forming features.Saved quotes · Magic links · Account dashboard · Recurring shuttles
High new-entrant threat (Uber Charter)Ship fast · establish habit loops · own the proprietary credentials competitors lackFederal-grade trust band · FEMA case study · GSA-specific landing pages
Strong direct competitor (CharterUP)Differentiate on UX and on credibility · find underserved segmentsAccount product (B2B) · Government / disaster-response cluster · Comparison pages
Substitute = "drive yourself"Quantify cost / time / safety advantage in copy & calculatorCity & trip-type landing pages · Pricing transparency surfaces
Tenure as moatSurface aggressively, often, in plain English; convert to figures of meritPersistent "Since 1990 · 300K trips · FEMA" band · About page · Footer
Chunk 2 verdict · ready to audit the current site

Business context is mapped end-to-end: who we're for, what we sell, who else is in the room, and which UX priorities the structural forces dictate. Next chunk audits the current US Coachways site against Norman's six design principles — the diagnostic for what's broken about how it currently works (Section 03).

Section 03 · Design Principles audit · Don Norman

Auditing the current US Coachways site against Norman's six principles.

Norman's framework is a diagnostic: when an interface frustrates users, at least one of the six principles has been violated. Below each principle is applied to the current uscoachways.com — not the proposed redesign — to surface what the redesign must fix and why. Then the Gulfs of Execution and Evaluation locate the friction in time.

Framework · Norman's Six Design Principles + Two Gulfs + Seven Stages of Action — Functional requirements for usability. The six principles cover the interface surface; the gulfs locate the user's struggle relative to the system; the seven stages decompose any interaction into testable substeps. Source: DESIGN-PRINCIPLES.md §§ 1.1–1.6, 2.1, 2.2 — Don Norman, "The Design of Everyday Things" Revised Ed. (2013, ISBN 978-0465050659). Affordance concept originates with James J. Gibson (1977).

3.1  The six principles, applied

Principle 1Severity 3 · major

Affordances

An affordance is the relationship between an object's properties and what an agent can do with it. The question for design isn't "does it exist?" but "can the user perceive it?"

Current state: The homepage offers an RFQ form, a phone number, and several "Get a Quote" links — but no element affords instant pricing because none exists. The site invites action that the back-end can't fulfill in real time, so every "Get Quote" click is actually "wait for a callback."

Fix: Build the affordance that competitors created the expectation for. Inline quote builder on the hero, results page that renders actual prices. The interface must afford what the buyer actually wants to do.

Principle 2Severity 3 · major

Signifiers

Perceivable cues that communicate where action should take place and how. Norman: "Signifiers are of far more importance to designers than are affordances."

Current state: The current homepage uses small, low-contrast CTAs labeled "Request Quote" and "Get Started" — generic conventions but no signal of speed, no signal of price, no signal of the Trip Guarantee that doesn't yet exist. The 35-year heritage is a static badge image, not a visible signifier of authority.

Fix: Every important action gets a signifier with a benefit. "See prices in 60 seconds" not "Get Quote." Persistent trust band signifies guarantee. Federal / FEMA logos signify authority. Live "23 buses available now" signifies real-time inventory.

Principle 3Severity 2 · minor

Mapping

The relationship between controls and their effects. Good mapping arranges controls spatially or logically to mirror what they control.

Current state: Mostly fine — the site uses standard web conventions. The one mismapped element is the "Solutions" section, which lists trip types in alphabetical order rather than by buyer frequency. Wedding coordinators don't think "I need C for Charter" — they think "I need a wedding bus."

Fix: Solutions grid orders by trip-type popularity + audience archetype, not alphabet. Quote-builder fields in the order a coordinator already thinks: trip type → where → when → who → contact.

Principle 4Severity 4 · critical

Feedback

Immediate, informative response to user action. Without feedback, the user can't tell whether the system received the input, what state it's now in, or what to do next.

Current state: The largest feedback hole in the current product. Submit a quote request and the user gets a generic "Thank you — we'll be in touch" page. No price, no time estimate, no operator information, no next step they can take. The interaction ends there. This is the conversion leak.

Fix: Replace the dead-end thank-you page with a Quote Results page that shows real prices, operators, photos, and next actions. Every step of the new quote builder gets inline status. Live tracking dashboard provides post-booking feedback that has never existed on USC.

Principle 5Severity 2 · minor

Constraints

Limits on action that prevent error and guide the user toward correct choices. Norman identifies four types: physical, cultural, semantic, logical.

Current state: The quote form has weak constraints. Date fields accept past dates. Passenger count accepts impossible values. No constraint on the <48-hour booking window where expedited fees apply. The user can submit a malformed request and get a confused callback.

Fix: Logical constraints on every field. Date pickers reject past dates. Passenger stepper bounded 1–56 with overflow handled (custom fleet). Cultural constraint surfaces expedited fee preemptively when <48h is selected.

Principle 6Severity 4 · critical

Conceptual Models

The model in the user's head of how the system works. When the user's model and the system's actual behavior diverge, every interaction becomes a guess.

Current state: The user's model of USC today is fundamentally "broker who calls me back." The site reinforces that model. But CharterUP has taught the market a new model — "marketplace where I see prices and book." Buyers arrive on USC expecting that and find the old model. Cognitive friction is immediate.

Fix: The redesign teaches a hybrid model in 5 seconds: "Real prices instantly · backed by a 35-year broker." The "How USC works" section makes the conceptual model explicit. The Trip Guarantee anchors the trust half. The instant quote anchors the marketplace half.

3.2  Gulf of Execution & Gulf of Evaluation

Framework · The Two Gulfs — Gulf of Execution: the distance between what the user wants to do and what they can actually do with the system. Gulf of Evaluation: the distance between what the system did and what the user can perceive about it. Norman: bridging both is the designer's job. Source: DESIGN-PRINCIPLES.md § 2.1 — Norman, "The Design of Everyday Things" Revised Ed., Chapter 2 (2013).

Gulf of Execution · current site

"I want a real price for a 56-pax bus from NYC to Boston on Aug 14 — what do I do?"

  • Click "Get a Quote" → land on a long RFQ form (gulf widens — many decisions before any output)
  • Fill out 12+ fields, most about contact and corporate info, not the trip
  • Submit → "Thank you" page (no information)
  • Wait hours or days for a callback (gulf is still open)

Distance: ~10 steps + asynchronous wait. The user's intent ("price") never connects directly to the system's capability.

Gulf of Execution · proposed site

Same intent.

  • See inline quote builder on the hero (gulf narrows immediately — affordance visible)
  • Fill 3 fields: pickup, destination, date+pax
  • See live prices for 3–6 buses with photos and operator ratings (gulf closed)

Distance: 3 fields, ~60 seconds, output is the thing the user wanted.

Gulf of Evaluation · current site

"Did my request go through? When will I hear back? Is my trip even possible?"

  • Generic thank-you page provides no system status (gulf wide open)
  • Email confirmation arrives later, sometimes — depends on planner response
  • No way to view request status, no way to modify it
  • After booking: no dashboard, no tracking, no driver info — only an email

Distance: The system gives the user no way to evaluate what it has done with their input — failure of Nielsen H1 too.

Gulf of Evaluation · proposed site

Same questions.

  • Quote results page = direct evaluation: prices visible, operators visible, availability live
  • Auto-saved state with magic link confirms the system holds the request
  • Trip details + checkout each have running totals (math is visible)
  • Post-booking dashboard shows trip state, pre-trip checklist, live tracking T-2h

Distance: The system's state is always perceivable. Nielsen H1 (Visibility) and H10 (Help) both satisfied.

3.3  Seven Stages of Action · primary booking interaction

Framework · Seven Stages of Action — Norman's decomposition of any interaction into seven testable substeps: form goal · plan action · specify sequence · perform action · perceive state · interpret state · evaluate outcome. Used to locate exactly where in an interaction the user struggles. Source: DESIGN-PRINCIPLES.md § 2.2 — Norman, "The Design of Everyday Things" Revised Ed., Chapter 2 (2013).
StageWhat the user is doingCurrent site · frictionProposed site · resolution
1. Form goal"I need a 56-pax bus from NYC → Boston on Aug 14."No friction (goal is the user's; site doesn't shape it).Same. Hero copy validates the goal is in scope.
2. Plan action"I should go to USC's site and get a quote."SEO city page lands them here, but the page doesn't tell them what to do first.Hero quote builder is the obvious first action; subhead reinforces it.
3. Specify sequence"Fill the form, hit submit."Form is long, mixes trip + contact info, no progress indicator. Sequence is unclear.4-step stepper makes the sequence explicit. Each step has one decision domain.
4. Perform action"Type, click, submit."Many fields are required that the buyer doesn't have yet (corporate info, exact return time).Required fields trimmed to what's actually needed for pricing. Auto-save lets buyer pause.
5. Perceive state"What did the system do?"Failure point. Thank-you page says nothing about state. No price, no operator, no ETA on callback.Results page shows the system's state: 6 buses found, prices, operators, availability locked 24hr.
6. Interpret state"What does this mean for my trip?"User must interpret silence as "they got my request" — but it could mean a server error.Page literally lists matching buses with prices the user can compare and act on.
7. Evaluate outcome"Did I get what I wanted?"Failure point. Cannot evaluate until callback. Many buyers leave for a competitor in the gap.User evaluates immediately. Either books, saves quote, or talks to planner — all visible options.
Diagnosis

The current site fails at stages 5–7 (perceive → interpret → evaluate state), which together constitute the Gulf of Evaluation. That gap is where every comparison-shopping buyer abandons USC for CharterUP — not because CharterUP is fundamentally better, but because CharterUP completes the seven-stage loop in one session. This is the single highest-leverage UX problem to solve.

Chunk 3 verdict · ready for the foundations audit

Norman's diagnostic locates the current friction. Next chunk applies Krug's three laws and Garrett's five planes to the same site — Krug from the surface (where most usability failures actually live) and Garrett structurally (where strategic mismatches live).

Section 04 · UX Foundations audit · Krug + Garrett + Design Council

The current site evaluated against Krug's three laws, then re-framed using Garrett's five planes and placed in the Double Diamond.

Where Norman diagnosed the surface friction (Section 03), Krug evaluates whether the current site is even self-evident, Garrett locates which structural plane is broken, and the Double Diamond names which phase of the design process this project is in.

4.1  Krug's three laws, applied

Framework · Krug's Three Laws of Usability + Scanning Principle + Conventions and Clarity — Three constraints distilled from decades of watching real users struggle with real interfaces. If a wireframe violates any, it needs revision before testing. Source: UX-FOUNDATIONS.md §§ 1.1–1.5 — Steve Krug, "Don't Make Me Think, Revisited," 2013 (ISBN 978-0321965516).
Law 1Severity 4 · critical

Don't Make Me Think

Current site question marks:

  • "Where do I click to get a real price?" — there's no element that signals one is possible.
  • "How does USC differ from CharterUP?" — the homepage doesn't say.
  • "Is this the right company for my wedding?" — Solutions are buried two clicks deep.
  • "What happens after I submit?" — the form does not foreshadow the wait.

Fix: Every above-the-fold element answers one of those questions in five words or fewer. "See prices in 60 seconds" replaces "Get a Quote." "Backed by 35 years + 110% guarantee" replaces silence.

Law 2Severity 3 · major

Clicks Don't Matter (If They're Mindless)

Counting hard clicks in the current quote flow:

  1. Land on homepage — Hard click 1: which of three "Get Quote" CTAs do I trust?
  2. Arrive on a long form — Hard click 2: what's the difference between "Group Type" and "Service Type"?
  3. Trip date / pax — easy
  4. Contact info — Hard click 3: do I have to enter company info if I'm a personal booking?
  5. Submit — Hard click 4: what just happened? Should I close this tab or wait?

Fix: The 4-step builder in the proposed design has zero hard clicks: trip type tiles (visual), pickup/destination (autocomplete), pax (stepper), contact (last). Each decision has obvious next action — Krug's "mindless click" goal.

Law 3Severity 3 · major

Get Rid of Half the Words

Happy talk on current homepage:

  • "Welcome to US Coachways…" — 14 words the buyer scrolls past
  • "We pride ourselves on delivering…" — 22 words of self-praise
  • "Our team works hard to…" — 18 words explaining the obvious
  • Total above-the-fold copy: ~280 words. Estimated useful: ~80.

Fix: Proposed hero is ~50 words above the fold. Every word does work: the H1 sells the speed, the lede sells the trust, the meta-row sells the credentials. No happy talk survived.

CompanionSeverity 2 · minor

Scanning, Not Reading

Current scan path: Logo → cluttered nav (8+ items) → carousel of feel-good photos → wall of text → "Get Quote" button placed below the fold. The user's eye finds nothing useful in the first 2 seconds.

Fix: Visual hierarchy on the proposed hero is calibrated for a 2-second scan: eye lands on H1 → drops to red CTA → flicks right to the inline quote builder. The trust strip + 5-CTA row layer in second-pass info for a 5-second scan.

4.2  Garrett's five planes · the structural commitment

Framework · The Elements of User Experience (5 Planes) — Each plane has a software/functionality side and a content/information side (the duality principle). Decisions on each plane depend on the plane below it being settled (the dependency principle). Strategy → Scope → Structure → Skeleton → Surface. Source: UX-FOUNDATIONS.md §§ 2.1–2.6 — Jesse James Garrett, "The Elements of User Experience" 2nd Ed., 2010 (ISBN 978-0321683687). Original diagram: jjg.net/elements.
PlaneSoftware / functionality sideContent / information side
5. Surface
What it looks like
Two directions explored.
  • Direction A · Trusted Refresh — navy + cream, serif headlines, real photography, editorial. For procurement & risk-averse coordinators.
  • Direction B · Modern Marketplace — white + bright blue + amber live-badge, denser, map-led. For comparison shoppers.

Both keep US Coachways blue/red — this is a refresh, not a rebrand. Detailed in Hi-fi A & Hi-fi B.

4. Skeleton
Where things go
Interface + navigation design.
  • Persistent nav: Solutions · Locations · Pricing · For Business · About + a primary "Get a quote" CTA top-right.
  • Persistent trust band above nav (Trip Guarantee + phone).
  • 4-step quote builder with a sticky live-summary panel.
  • Sticky filter rail on quote results (desktop) + bottom-sheet equivalent (mobile).
Information design.
  • Trip Guarantee anchored to every purchase-anxiety moment (quote, checkout, dashboard).
  • Operator credentials surfaced at the card level (DOT, on-time %, photo).
  • Stat-led trust strip (300K trips · 35 yrs · FEMA · GSA · 7,000 vehicles).

Detailed in Wireframes (11 screens, mobile + desktop pairs).

3. Structure
How it works
Interaction design.
  • Hero → quote builder → results → trip details → checkout → dashboard. One continuous session.
  • Save-quote & magic-link return on every step (sessions survive interruption).
  • Eligible trips → instant quote; complex trips → routed to planner (but prices still shown).
  • Free-cancel until balance is auto-charged 30d pre-trip (predictable, surfaced).
Information architecture.
  • 5 SEO surfaces: city · route · trip-type · vehicle-type · comparison.
  • Application surfaces (quote, checkout, dashboard) live under /account/*, noindex.
  • Marketing & Account share nav but are separated in URL space.

Detailed in IA / sitemap section of the Strategy Book.

2. Scope
What we build
Functional specifications.
  • Instant quote (real-time pricing from SubOut.com inventory).
  • Self-serve checkout, Stripe 10% deposit + auto-balance.
  • Customer dashboard (status, checklist, live tracking, driver chat).
  • Team Account (saved trips, cost centers, consolidated invoice).
  • Operator portal refresh (SubOut.com).
  • Programmatic city + route + trip-type SEO templates.

Out of v1: Native mobile app · AI trip planner · International · RFP/procurement marketplace.

Content requirements.
  • 9 trip-type landing pages (Weddings, Corporate, Sports, Schools, Religious, Senior, Casino, Government, Conferences).
  • ~250 city pages with real local pricing.
  • ~500 top routes (origin → destination).
  • 3 comparison pages (vs CharterUP, vs GoGo, vs local operator).
  • Trip Guarantee policy page (legally reviewed).
  • Reviews, About, Safety, Federal, Operator-for-USC.
1. Strategy
Why we build
User needs.
  • Coordinators need a real price fast, without phone tag.
  • Procurement needs vendor credentials & recurring-account tooling.
  • Group leaders need reassurance the bus will show up.
Business objectives (measurable).
  • ↓ Cost-per-booked-trip from paid acquisition (the north star).
  • ↑ Organic share-of-voice for "charter bus rental [city]" + route queries.
  • ↑ Repeat-booking rate via Team Accounts.
  • Maintain 9.3 NPS while shipping new self-serve surfaces.

Sourced from Strategy Check § 1; assumptions tagged there.

How the planes interlock for this project

The current site fails on the Structure plane — the interaction patterns and IA were designed for a 2010-era broker, not a 2026 marketplace. That's why surface-level tweaks have never moved the needle. Garrett's dependency principle is the warning: every screen on the Skeleton plane (the wireframes) is downstream of the Structure-level commitment to "instant quote → self-serve → dashboard → account." Change that commitment and every wireframe changes. Lock it now or pay later.

4.3  Double Diamond · where this project is

Framework · The Double Diamond (Discover → Define → Develop → Deliver) — Diamond 1 lives in problem space, Diamond 2 in solution space. Each diamond starts divergent (expand options), ends convergent (commit to one). Skipping diamonds is the most expensive mistake in product design. Source: UX-FOUNDATIONS.md § 3.1 — UK Design Council (2004–2005); precursor: Bela H. Banathy, "Designing Social Systems in a Changing World," 1996. Eisermann's retrospective critique noted in § 3.2.
flowchart LR subgraph D1["Diamond 1 · Problem space"] direction LR DISC["DISCOVER · diverge
Competitive audit · SubOut research · BBB review
9 audiences · 3 archetypes
"] DEF["DEFINE · converge
Problem statement · Top 5 CTAs
Trust Guarantee policy outline
"] DISC --> DEF end subgraph D2["Diamond 2 · Solution space"] direction LR DEV["DEVELOP · diverge
11 wireframes · 2 hi-fi directions
Interactive quote builder
"] DEL["DELIVER · converge
Design tokens · Atomic inventory
Deployment Code · Phased roadmap
"] DEV --> DEL end DEF --> DEV classDef done fill:#dcefe1,stroke:#1b8a4a,color:#0e4a23; classDef live fill:#fff4d6,stroke:#d97706,color:#5a3e02; classDef next fill:#eaf2fb,stroke:#1b4fa8,color:#0b2a4a; class DISC,DEF done class DEV live class DEL next
PhaseStatusArtifacts produced (so far)What converges this phase
Discover · diverge Complete Competitive audit (CharterUP + GoGo + indirect substitutes), SubOut.com research, BBB / Trustpilot review, 9 audience segments enumerated, 3 archetypes identified. Understanding of the problem space, breadth-first. Not a problem statement yet.
Define · converge Complete (Sections 01–04 of this dossier) Strategy Check, Business Context (Lean Canvas, SWOT, Porter, Competitor matrix), Norman + Krug + Garrett audits of the current site. Top 5 differentiator CTAs. A single thesis: "USC's wedge is instant quote + the only public Trip Guarantee + Account layer competitors haven't shipped." See § 08 for the synthesized problem statement.
Develop · diverge In progress 11 grayscale wireframes (mobile + desktop pairs), 2 hi-fi visual directions on the homepage, interactive 4-step quote builder, dashboard, SEO city template. Mermaid flow for the primary booking journey. Multiple solution alternatives at multiple fidelities, so the user can compare and the team can converge.
Deliver · converge Next (Sections 11–14 of this dossier) Pending: heuristic eval, UX-pattern inventory, atomic-design component spec, Developer Deployment Code, 14-week phased roadmap. One specified, prioritized, dev-ready solution. Single source of truth for build.
Eisermann's caveat applies

The original creator of the Double Diamond (Richard Eisermann, 2023) warned that teams treat the model as a rigid linear process when real design loops, backtracks, and overlaps. This project is using it as a thinking tool, not a gospel. Expect Develop to surface gaps that push us briefly back into Discover (e.g. primary-research interviews with David-archetype procurement leads, flagged as Assumption 2 in § 01). That's normal, not failure.

Chunk 4 verdict · ready for primary research synthesis

Foundations are audited. The current site fails Krug's Law 1 (it makes you think), the structural plane is the root cause (per Garrett), and the project sits in the Develop phase of Diamond 2. Next chunk produces the JTBD personas that anchor every persona-tagged decision elsewhere in this dossier.

Section 05 · JTBD Personas

Three archetypes, framed by the job they're hiring USC to do.

The nine audience segments from intake collapse into three jobs-to-be-done patterns. Each persona uses Christensen's full template — context, job statement, functional/emotional/social needs, current state, success criteria, constraints, emotional landscape. Every claim about behavior is confidence-tagged: VALIDATED = direct evidence; INFERRED = extrapolated from competitor reviews and industry data; ASSUMED = domain knowledge, needs primary research.

Framework · Jobs-to-Be-Done (Christensen) + JTBD Persona Template (Christensen + Ulwick) — "Customers don't buy products. They hire them to get a job done." Every job has functional, emotional, and social dimensions. The persona template forces all three to be made explicit, plus the circumstances that create the job in the first place. Sources: USER-RESEARCH.md § 1.1 — Clayton Christensen, "Competing Against Luck," 2016 (ISBN 978-0062435613). § 1.4 — Christensen (theory) + Tony Ulwick (methodology, "JTBD: Theory to Practice," 2016).

5.1  Maya · The Coordinator

Office Manager · Wedding Planner · Event Coordinator · 35–48 · 42% of traffic · avg trip $4.2K · primary target

ARCHETYPE: Maya, the Coordinator
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

CONTEXT
───────
When:      A group needs to move and she's the one responsible.
           Boss said "handle it"; bride said "you're in charge of the shuttle."
Where:     At her desk, between 20 other tasks. Phone is open.
Frequency: 4–12 trips per year on average; spikes around event season.

THE JOB
───────
Primary Job: Lock in a bus she trusts, get the price approved,
             move on to the next ten things on her list.
Job Statement:
  "When I'm responsible for getting 60 people somewhere on time,
  I want to lock in a bus I trust and pay for it without seven
  phone calls, so I can move on to the next ten things on my list."

NEEDS HIERARCHY
───────────────
Functional Need: A real price, a real bus photo, a booking she can
                 confirm in one session.
Emotional Need:  Confidence she won't be the person whose bus didn't
                 show up.
Social Need:     An itemized invoice she can forward to finance without
                 explanation.

CURRENT STATE
─────────────
Current Solution: Googles "charter bus rental [city]" → fills RFQ on 3
                  sites → fields callbacks for two days → picks one →
                  PDF quote → another call → manual deposit.
Pain Points:      Phone tag · opaque pricing · no visual of vehicle ·
                  feels like buying a car blindfolded.
Workarounds:      Books the same operator every time even if overpriced,
                  because she trusts them to show up.

SUCCESS CRITERIA
────────────────
Success Metric:    Booked in under 15 minutes, no follow-up calls needed.
Quality Threshold: Bus has photos · operator has ≥ 4.5 rating ·
                   cancellation terms understood up front.
Time Expectation:  < 10 minutes from landing on site to deposit charged.

CONSTRAINTS
───────────
Budget:   Set by boss / bride / event budget; she manages within it.
Time:     Scarcest resource. She is interrupted constantly.
Skills:   Comfortable with web apps; not a transportation expert.
Access:   Mostly desktop in the office; occasional mobile finalize.

EMOTIONAL LANDSCAPE
───────────────────

BEFORE (Trigger State)
├── Primary Emotion: Mild anxiety · "I've never booked a 56-pax bus before"
├── Intensity:       3 / 5
└── Internal Dialogue: "How do I even know if a price is fair?"

DURING (Engagement State)
├── Desired Emotion: Control + speed
├── Anxiety Triggers: phone-only flow · vague pricing · "we'll get back to you"
└── Trust Requirements: real operator name, real photo, written cancel policy

AFTER (Outcome State)
├── Success Emotion: Quiet relief · "Bus is locked, on to the next thing"
├── Failure Emotion: Panic + blame · "I should have called more places"
└── Share Likelihood: High, if great. Coordinators network with coordinators.

CONFIDENCE
──────────
Context:        INFERRED (USC's existing customer mix is heavily this archetype)
Job statement:  ASSUMED (validation: 5–8 coordinator interviews recommended)
Success metric: ASSUMED (CharterUP's "60 seconds" target is the proxy benchmark)
Pain points · ranked
  • Phone tag with brokers (lost hours)
  • Opaque pricing — can't compare without revealing identity
  • No photo of the actual vehicle
  • Forced to commit before seeing operator name
  • No way to forward a clean quote to finance
What "win" looks like for Maya
  • Real price visible in 60 seconds
  • Vehicle photo + operator rating before commit
  • Save-quote magic link she can finalize after boss approves
  • Itemized PDF invoice auto-emailed
  • "I never had to pick up the phone."
Design implications · Maya is the volume archetype

Every primary surface (hero, quote builder, results, checkout) is designed for Maya first. She's also the easiest to validate with — primary research priority. The save-quote → SMS magic-link flow exists specifically because of her "interrupted constantly" constraint. The single-page checkout exists because her boss approves the price, then she finalizes — two sessions, one purchase.

5.2  David · The Procurement Lead

Operations Director · VP Procurement · Government contracting officer · 40–58 · 8% of traffic · avg contract $85K · highest LTV cohort

ARCHETYPE: David, the Procurement Lead
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

CONTEXT
───────
When:      Standing up a new employee shuttle, a conference, a multi-year
           federal contract, or a hospital evacuation drill.
Where:     Mostly desktop, often with a contracts team on a shared screen.
           Sometimes a vendor portal his org mandates he use.
Frequency: 2–10 contracted programs per year + ad-hoc rush jobs.

THE JOB
───────
Primary Job: Pick a vendor he can defend in an audit and a board review,
             on a contract he can sign once and stop worrying about.
Job Statement:
  "When I'm setting up recurring employee shuttles or large-event
  transport, I want a vendor that can demonstrate safety, scale, and
  a contract I can defend in audit, so I can sign once and stop
  worrying about it."

NEEDS HIERARCHY
───────────────
Functional Need: Vendor due-diligence packet · DOT/MC numbers · insurance
                 COI · safety record · MSA-ready terms · consolidated
                 monthly invoice across all trips.
Emotional Need:  The boring, safe choice. Won't get fired for picking USC.
                 Specifically the opposite of "we picked a startup that
                 ghosted us."
Social Need:     Internal stakeholders (legal, finance, audit, the board)
                 need to see institutional credentials and a paper trail.

CURRENT STATE
─────────────
Current Solution: Existing vendor on an MSA, renewed because switching
                  is painful. Or RFP process every 2–3 years that
                  produces ~6 lengthy proposals to compare.
Pain Points:      Cap-table-style spreadsheets across many one-off
                  bookings · no real-time visibility into what trips
                  are happening · brokers who pitch then disappear ·
                  "we'll get back to you" is fatal at this scale.
Workarounds:      Internal motorpool · stays with incumbent vendor
                  past the point of value · forces ops team to call
                  every trip in by phone.

SUCCESS CRITERIA
────────────────
Success Metric:    Single account · single invoice · signed MSA · zero
                   missed pickups in 12 months.
Quality Threshold: Insurance ≥ $5M · DOT satisfactory · operator-network
                   depth that can survive losing 1 vendor.
Time Expectation:  RFP cycle ≤ 6 weeks · individual trip booking
                   ≤ 5 min (planner-assisted or self-serve, his choice).

CONSTRAINTS
───────────
Budget:   Large but accountable. Every dollar reports up.
Time:     Has time for the contract decision. Has zero time for
          per-trip operational friction.
Skills:   High. Comfortable in SAP, Coupa, Salesforce. Knows the
          procurement vocabulary cold.
Access:   Desktop · corporate SSO · sometimes air-gapped network
          for government work.

EMOTIONAL LANDSCAPE
───────────────────

BEFORE (Trigger State)
├── Primary Emotion: Scrutiny · "I will be asked why I chose this vendor"
├── Intensity:       4 / 5 during RFP, 2 / 5 between
└── Internal Dialogue: "Can this vendor pass our security & insurance review?"

DURING (Engagement State)
├── Desired Emotion: Reassurance + control
├── Anxiety Triggers: missing COI · no GSA Schedule listing · vague safety claims · founder photos but no leadership bios
└── Trust Requirements: federal contracts as proof · F500 references he can call · SOC-style documentation

AFTER (Outcome State)
├── Success Emotion: Invisibility · "Trips happen, board never asks about transportation"
├── Failure Emotion: Career-defining failure · "We're on the front page because a bus didn't show up to FEMA"
└── Share Likelihood: Very high, network-driven. Procurement leads swap vendor references constantly.

CONFIDENCE
──────────
Context:        VALIDATED (USC has GSA + FEMA + F500 references on file)
Job statement:  ASSUMED (validation: 3–5 procurement-lead interviews recommended)
Self-serve appetite: ASSUMED (Assumption 2 from § 01 · highest-risk assumption)
Pain points · ranked
  • Existing vendor's per-trip booking is phone/email only — operations cost
  • No consolidated invoicing across departments & cost centers
  • No real-time view of what trips are active, what's coming up
  • RFP process for new vendor is 6+ weeks of paperwork
  • Switching vendors carries political risk; "we picked the wrong one" is career-defining
What "win" looks like for David
  • USC's federal & F500 credentials clear his audit packet at a glance
  • Team Account product replaces his spreadsheet (cost centers, PO fields, SSO)
  • Consolidated monthly invoice across every shuttle his org runs
  • MSA-ready terms — his legal team approves once, every booking thereafter is governed
  • SLA-backed Trip Guarantee gives him a clause he can point to in any internal review
Design implications · David is the LTV archetype

David is a small fraction of traffic but a disproportionate share of revenue and stickiness. The For-Business surface (Team Account, federal/GSA landing, MSA download, consolidated billing) exists almost entirely for him. The Trust & About page is built to his evaluation criteria — DOT/MC numbers prominent, leadership bios with credentials, FEMA case study, GSA Schedule reference. His self-serve appetite is the highest-risk assumption in this dossier (see § 01) — primary research with 3–5 procurement leads is the recommended validation before shipping the Team Account product.

5.3  Robin · The Group Lead

Coach · Pastor · Senior club president · Youth-group organizer · 28–70 · 50% of traffic · avg trip $1.8K · SEO target

ARCHETYPE: Robin, the Group Lead
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

CONTEXT
───────
When:      Volunteering or part-time leading a group somewhere they
           don't normally go together: tournament, retreat, casino
           night, choir trip, senior bus outing.
Where:     At home on the couch, on a phone after work. Sometimes at
           a community center on a borrowed laptop.
Frequency: 1–4 trips per year. Each one matters.

THE JOB
───────
Primary Job: Make the bus part of the trip feel like the easy part,
             so the trip itself feels safe and special.
Job Statement:
  "When I'm taking my team / congregation / club somewhere we've
  never been together, I want to feel like the bus is the easy
  part of the day, so the trip itself feels safe and special."

NEEDS HIERARCHY
───────────────
Functional Need: A predictable price she can present to the group ·
                 the ability to pay a deposit and collect from members
                 over time.
Emotional Need:  Reassurance. High personal accountability — these are
                 her people, not strangers. The bus going wrong is a
                 personal failure.
Social Need:     A trip that members talk about positively · the
                 ability to be the person who "did a great job."

CURRENT STATE
─────────────
Current Solution: Calls 2–3 local operators · asks a friend who
                  booked one last year · ends up at the same broker
                  her sister-in-law used.
Pain Points:      Doesn't know what to ask for · intimidated by
                  quote forms · worried about hidden fees · scared
                  she's overpaying · scared she's underpaying for
                  a sketchy operator.
Workarounds:      Asks members to "just drive themselves to the
                  venue" if it gets too hard. Avoids the bus
                  entirely on smaller trips.

SUCCESS CRITERIA
────────────────
Success Metric:    Members get there on time, get home safely, no
                   one complains, photos go up on Facebook.
Quality Threshold: Driver is professional · bus is clean · price
                   matches what was quoted · no surprises.
Time Expectation:  Researching: 30–60 min over a couple evenings ·
                   Booking: ~20 min once she's decided.

CONSTRAINTS
───────────
Budget:   Tight. Often collecting from members. $1.5K–$2.5K typical.
Time:     Has evenings; doesn't want to spend them on hold.
Skills:   Medium. Comfortable with Facebook, email, web forms. Not
          comfortable with anything that feels enterprise-y.
Access:   Mostly mobile (60%+). Couch + phone.

EMOTIONAL LANDSCAPE
───────────────────

BEFORE (Trigger State)
├── Primary Emotion: Self-doubt + hope · "I want to do this right"
├── Intensity:       4 / 5 (high personal stakes)
└── Internal Dialogue: "What if I pick the wrong one and the kids get stranded?"

DURING (Engagement State)
├── Desired Emotion: Hand-held + confident
├── Anxiety Triggers: too many fields · jargon · sketchy-looking site · no phone number
└── Trust Requirements: real reviews (especially from people like her), a phone option that's a real person, transparent total cost

AFTER (Outcome State)
├── Success Emotion: Pride + relief · "Everyone had a great day, and I made it happen"
├── Failure Emotion: Public shame · "I'm the one who picked the bus that didn't show"
└── Share Likelihood: Very high. Word-of-mouth in churches, schools, clubs is enormous.

CONFIDENCE
──────────
Context:        INFERRED (large share of competitor city-page traffic comes from this archetype)
Job statement:  ASSUMED (validation: 5+ group-leader intercept interviews recommended)
Mobile-first:   INFERRED (industry data + competitor analytics patterns)
Pain points · ranked
  • Intimidated by long forms · jargon makes her feel out of her depth
  • Worries about hidden fees ("what does the quote actually include?")
  • Worries about picking a low-quality operator to save money
  • Needs a phone option but doesn't want to be sold to
  • Personal accountability is huge — failure is socially visible
What "win" looks like for Robin
  • SEO landing page in her language, not "transportation logistics"
  • Total cost shown upfront, no fee surprises
  • Real reviews from people like her ("Wedding coordinator · Brooklyn")
  • Trip Guarantee in plain English ("Backup bus in 2 hrs or 110% back")
  • Phone backup that's a real person, not a sales script
Design implications · Robin is the SEO archetype

Robin is the largest cohort by volume and the smallest by trip value — exactly the cohort SEO converts. Every city / route / trip-type landing page is written for her: H1s in her vocabulary, real reviews filtered by trip type, transparent pricing tables, and a phone option that's never more than one tap away. Mobile-first design is non-negotiable for this archetype. The Trip Guarantee, written in plain English, is the trust unlock that converts her — Cialdini's commitment principle aimed at the highest-anxiety buyer.

5.4  Cross-persona synthesis

Each persona maps to a different surface of the redesigned product. Maya drives the homepage and quote builder. David drives the For-Business surface. Robin drives the SEO templates. The three are not competing for design attention — they each own a different door into the same product.

DimensionMaya · CoordinatorDavid · ProcurementRobin · Group Lead
Share of traffic42%8%50%
Avg trip value$4.2K$85K contracts$1.8K
Primary surfaceHomepage · Quote builder · CheckoutFor-Business · Team Account · Federal landingSEO city/route/trip-type templates
Primary deviceDesktop > mobileDesktop · corporate SSOMobile > desktop
Self-serve appetiteHighASSUMED high on standard trips · planner on complexMedium · phone backup essential
Trust signal that matters mostVehicle photo + operator ratingFEMA + GSA + F500 referencesReal reviews from people like her + plain-English Trip Guarantee
Failure emotionBlame ("I should have called more places")Career-defining ("We're on the front page")Public shame ("I picked the wrong bus")
Magic-link relevanceCritical · interrupted constantlyLow · he sits with it end-to-endMedium · couch sessions
Win metricBooked in < 15 min, no callsOne MSA, one invoice, zero missesGroup says "you did a great job"
Research validation priorityP0 · easiest to recruitP0 · highest-risk assumptionP1 · intercept interviews
Three persona-validation gaps to close before final dev commit
  1. Maya · job-statement validation. Recruit 5–8 coordinators (wedding planners, office managers, event organizers) for 30-min jobs-to-be-done interviews. Test the "60 seconds, no call" promise specifically.
  2. David · self-serve appetite. Recruit 3–5 corporate procurement / hospital ops / government contracting leads. Test whether they'd self-serve on a standard recurring shuttle vs. always involving a planner. This is the highest-risk assumption in the entire dossier.
  3. Robin · trust-signal hierarchy. Recruit 5+ group leaders (coaches, religious leaders, senior club presidents) via intercept on competitor city pages. Test which trust signals actually move them — real reviews vs. DOT numbers vs. Trip Guarantee vs. phone number.

All three gaps are addressable in a single 2-week research sprint inserted between Develop and Deliver phases of the Double Diamond (§ 4.3).

Chunk 5 verdict · personas locked, ready for empathy maps

Three archetypes are committed. Every persona-tagged decision in this dossier — every wireframe annotation, every hi-fi component, every CTA priority — traces to one of the three job statements above. Next chunk produces a Dave Gray empathy map per persona, which adds the verbatim-quote layer that the JTBD template doesn't capture.

Section 06 · Empathy Maps · Dave Gray

What each persona says, thinks, feels, and does — separated, because the gap between them is where insight lives.

The JTBD template (Section 05) framed the job. The empathy map adds the verbatim layer the template doesn't capture — the words coordinators actually use, the thoughts they don't say out loud, the emotions that drive their behavior. Where Says and Does disagree, that's the highest-leverage design opportunity in the dossier.

Framework · Empathy Map Canvas — Six quadrants: Says (verbatim quotes), Thinks (beliefs/assumptions inferred from behavior), Feels (specific emotions), Does (observable actions), Pains (frustrations), Gains (goals). One map per archetype — never combined. The gap between Says and Does is the most valuable insight. Source: USER-RESEARCH.md §§ 2.1–2.3 — Dave Gray (XPLANE), "Gamestorming," 2010 (co-authored with Sunni Brown & James Macanufo).
Source-data caveat

The Says quadrant ideally contains real verbatim quotes from primary interviews. We have none. The quotes below are composites built from competitor reviews (Trustpilot, BBB, Google), USC's own reviews, and patterns observed across the broker industry. Confidence tag: INFERRED. Primary-research validation is the same 2-week sprint flagged in § 5.4.

6.1  Empathy Map · Maya, the Coordinator

SAYS · verbatim (composite)

"I just need someone to give me a real price so I can run it past my boss."

"The wedding is in six weeks and I still don't have the shuttle locked."

"I've been on the phone three days with three companies and I still don't know which one is the best price."

"I'm not paying $4,000 for a bus I haven't seen a photo of."

THINKS · inferred beliefs
  • Charter brokers are mostly the same; price + responsiveness is what differs.
  • A bus company that's been around a long time is probably safer than a new one.
  • If they make me call to get a price, they're probably not the cheapest.
  • The first quote I get is rarely the best one — I should get three.
  • If something goes wrong, my boss / the bride will blame me, not the bus company.
FEELS · specific emotions
  • Mild anxiety · "Is this enough buses for 60 people with luggage?"
  • Time-pressure · "I have ten other things due today."
  • Skepticism · "Their site says 'best prices' — sure, like everyone."
  • Quiet relief · when a deposit confirmation hits her inbox.
  • Mild pride · when she forwards a clean invoice to finance without questions.
DOES · observable actions
  • Opens 3 competitor tabs simultaneously and fills RFQs on all three.
  • Calls the phone number on the homepage if no online price appears within ~5 minutes.
  • Screenshots quotes and emails them to her boss / event lead for approval.
  • Re-books the operator she used last time on autopilot if it went well.
  • Walks away from the tab and comes back 6 hours later when interrupted (which is constantly).

Says/Does gap: She says she'll get three quotes. She actually picks the first one that gives her a real number she can act on — usually the one that responds fastest. The fast quote isn't the best quote; it's the only quote that respected her time.

Pains
  • Phone tag eats hours she doesn't have
  • Can't compare prices without giving up identity to 3 brokers
  • No way to see the actual vehicle before committing
  • "We'll get back to you" with no ETA on the response
  • Has to re-explain the trip every time she calls back
Gains
  • One session, locked in, moved on
  • A clean PDF / itemized invoice to forward up
  • Photo of the actual bus before she pays
  • Day-of-trip status she can share with her event lead
  • A vendor she can re-book in one click next time
Key insight · Maya

Maya doesn't actually want three quotes — she wants one quote she can trust enough not to need a second. Speed-of-quote isn't a feature, it's the trust signal. Every minute she waits is evidence the broker isn't equipped for the size of trip she's booking. Design implication: speed → trust → conversion is the same line, in that order.

6.2  Empathy Map · David, the Procurement Lead

SAYS · verbatim (composite)

"Send me the COI and the most recent DOT inspection summary before we go any further."

"I need this on our MSA paper, not yours."

"What's your operator's average on-time percentage across the last 90 days?"

"I don't care about the price right now. I care whether you'll show up in three months on a Sunday at 4 AM."

"Do you have any current federal contract experience?"

THINKS · inferred beliefs
  • Anyone can be cheap. Almost no one can be reliable at scale.
  • If they can't produce a COI in under 24 hours, they can't operate at the level I need.
  • VC-backed startups will pivot or get acquired before my contract is up.
  • GSA Schedule existence is a binary credibility filter.
  • The reference call I make to a peer matters more than anything on the website.
FEELS · specific emotions
  • Scrutiny · "Every decision lands in an audit-review someday."
  • Cautious confidence · when the vendor produces documentation without prompting.
  • Suppressed irritation · when a sales rep tries to sell instead of answer his questions.
  • Quiet satisfaction · when the monthly invoice arrives correctly formatted, on time.
  • Acute anxiety · the first time a new vendor runs a real trip — pass/fail moment.
DOES · observable actions
  • Pulls the vendor's DOT record on the FMCSA SAFER site before responding to the first email.
  • Calls 2–3 peers in his network and asks "have you used them?" before signing anything.
  • Sends every contract through his legal team's redlines without exception.
  • Insists on a single point-of-contact on the vendor side, will not be juggled across reps.
  • Re-uses the same vendor across multiple business units once trust is established.

Says/Does gap: He says he wants to evaluate based on documentation and references. He actually decides in the first 60 seconds on the site, based on whether it looks like a vendor that will produce documentation without being chased. The polish of the For-Business surface signals operational maturity more than the documentation itself.

Pains
  • Vendors who pitch instead of answering questions directly
  • Missing or out-of-date COI / DOT documentation
  • Per-trip phone bookings that consume his ops team's hours
  • Spreadsheet sprawl across cost centers, business units, and reps
  • Sales reps who churn — relationship continuity broken every 6 months
Gains
  • A single MSA his legal team signs once
  • SSO-enabled team account; cost-center tagging at booking time
  • Consolidated monthly invoicing across every booking
  • SLA-backed Trip Guarantee he can point to in any review
  • Federal / F500 references he can cite to his board without caveats
Key insight · David

David is buying institutional maturity, not transportation. The actual moving-of-buses part is table stakes — what he's signing for is the existence of an organization that can survive his audit, his board, and his contract renewal. Design implication: every For-Business surface (Team Account dashboard, MSA download, federal landing page, leadership bios) is a credibility prop. The product itself works the same; what changes is the visual and documentary evidence of operational seriousness.

6.3  Empathy Map · Robin, the Group Lead

SAYS · verbatim (composite)

"I just want to know that the bus is going to be there at 7 a.m. on Saturday."

"My sister-in-law used a company last year — what was the name again?"

"Is that the total, or are there fees on top?"

"I don't want to fill out a long form. Can I just talk to someone?"

"I've never done this before. What am I supposed to ask for?"

THINKS · inferred beliefs
  • If a website looks complicated, the company is probably complicated to deal with.
  • Reviews from people like me matter more than ratings on the site itself.
  • If the price is too low, the bus will be old or the driver will be sketchy.
  • A company that's been around 30 years probably knows what it's doing.
  • If something goes wrong, this is on me — the group will remember.
FEELS · specific emotions
  • Self-doubt + hope · "I want to do this right but I don't know what right looks like."
  • Quiet pride · when she's the one who organized the trip and it went well.
  • Acute embarrassment-risk · the bus not showing up would be a personal humiliation.
  • Cautious gratitude · when a human picks up the phone and explains things plainly.
  • Distrust · of any site that asks for too much info before showing a price.
DOES · observable actions
  • Searches "charter bus rental [her city]" on her phone, often after 8 p.m. on the couch.
  • Reads 4–6 reviews before clicking anything.
  • Calls the phone number first; web forms are a fallback.
  • Asks her group / Facebook community for recommendations before deciding.
  • Books the same operator next year if the first trip went well — almost without comparing.
  • Shares photos on Facebook after a good trip; the operator name often goes in the post.

Says/Does gap: She says she wants to talk to someone. She actually books from her phone at 9 p.m. on the couch when a competitor offers a clean total-cost page with a phone number visible. Phone number is the safety net; the actual booking happens on screen.

Pains
  • Doesn't know the vocabulary — "deadhead miles" is gibberish
  • Forms with corporate fields (PO number, cost center) feel hostile
  • Worries about hidden fees more than total price
  • Worries about picking the wrong operator and getting blamed
  • Mobile experience on competitor sites is often broken
Gains
  • SEO landing page with H1 in her own words ("Wedding bus rental in Atlanta")
  • Total cost shown up front, in plain English, "no hidden fees" stated
  • Real reviews from people like her ("Bride · Brooklyn 2024")
  • Trip Guarantee in plain language ("Backup bus in 2 hrs or 110% back")
  • A real-person phone number visible on every screen — even if she never calls
Key insight · Robin

Robin doesn't need to call. She needs the option to. The phone number is the safety net; its presence converts more than its usage. Design implication: the 24/7 phone number is a permanent UI element on every page — header, hero, footer, cart, dashboard. Removing it (or burying it behind a chatbot) breaks the trust band for the largest cohort of traffic. The number is the trust signal; the website is the transaction.

6.4  Cross-empathy synthesis · the three "Says/Does gaps"

PersonaWhat they SAYWhat they DODesign response
Maya "I'll get three quotes and compare." Books the first one that gives a real price fast. Speed-to-quote is the conversion lever, not feature set. 60-second instant quote is the wedge.
David "I'll evaluate based on documentation and references." Decides in the first 60 seconds based on whether the site looks like it will produce documentation without being chased. For-Business surface polish is a credibility prop. Wireframes for that surface skew premium: dense data, MSA-ready language, leadership bios.
Robin "I'd rather talk to someone." Books from her phone at 9 p.m. if the total cost is clear and a phone number is visible. The phone number is permanent UI on every screen. Plain-English microcopy across every Robin-facing surface (city pages, trip-type pages, mobile quote builder).
Chunk 6 verdict · empathy mapped, ready for journey

Three empathy maps locked. The biggest unlock from this section: in all three cases, the persona's stated behavior is more conservative than their actual behavior. Designing for what they say produces a slower, fuller product than the one they'll actually use. Designing for what they do — fast quote, polished credibility, visible phone — produces conversion. Next chunk synthesizes both Sections 05 and 06 into a single end-to-end customer journey map with an emotional curve.

Section 07 · Customer Journey Map

Maya's end-to-end journey, from "boss said handle it" to "I'd book USC again."

Personas (§ 05) framed the job. Empathy maps (§ 06) added the verbatim layer. Now the journey map locates every action, thought, emotion, pain, and opportunity along the actual end-to-end experience. The emotional curve below is the design target: keep peaks high at decision and trip day, eliminate the valley where competitors capture comparison shoppers.

Framework · Customer Journey Map — Phase-based mapping of one archetype's specific scenario from start to end. Every phase tracks goal, touchpoints, actions, thoughts, emotions, pain points, and opportunities. Emotional curve makes the invisible visible: the valleys are where conversion leaks. Sources: USER-RESEARCH.md §§ 3.1–3.4 — [AGGREGATED] practitioner conventions. Service-design roots: Lynn Shostack ("Designing Services That Deliver," 1984). Touchpoint framing: Adam Richardson (Frog Design). Outside-In framing: Kerry Bodine & Harley Manning ("Outside In," 2012).

Journey: Booking a charter bus for the first time at a new job · Archetype: Maya (Coordinator) · Scenario: 60-pax wedding shuttle, NYC → Brooklyn venue, 8 weeks out · Timeframe: ~3 days from trigger to deposit; ~8 weeks from deposit to advocacy

7.1  The eight phases of Maya's journey

1 · Trigger 2 · Research 3 · Compare 4 · Decide 5 · Book 6 · Pre-trip 7 · Trip day 8 · Advocate
Goal "Figure out where to start." "Find 2–3 brokers worth quoting." "Get real prices I can compare." "Pick the bus & lock it in." "Pay the deposit, get confirmation." "Nothing falls through the cracks." "Get everyone there, safely & on time." "Decide if I'd use them again."
Touchpoints Google · LinkedIn · slack with a peer SEO landing · city pages · reviews Quote forms · phone calls · emails Quote results · trip details · planner chat Checkout · Stripe · email confirmation Dashboard · planner chat · roster upload Live tracking · driver SMS · share-link Post-trip review · rebook · referral
Actions Searches "charter bus rental NYC"
Asks coworker who booked one last year
Opens 3–4 tabs (USC, CharterUP, GoGo, local)
Reads "About" + "Pricing" on each
Fills RFQ on all 3 · waits for callbacks · screenshots pricing Compares quotes · sends to boss for approval · picks one Enters card · accepts terms · forwards receipt to finance Confirms headcount · uploads roster · adds amenities · sets day-of contact Sends live-link to bride & her father · monitors ETA · messages driver if needed Leaves a Google review if great · books again next event · tells fellow coordinators
Thoughts "Is this 1 bus or 2?"
"Have I done this before?"
"This site looks dated — are they still in business?"
"Why does no one show prices?"
"How am I supposed to compare three quotes with different formats?"
"The fast quote was probably the highest."
"Is this a fair price? I have no benchmark."
"What if this operator cancels?"
"Why do I need to enter my company info — this is a personal booking?"
"What if my card is declined and I don't know?"
"Did I forget to tell them about the second pickup?"
"Should I have asked for coolers?"
"Is the bus on its way?"
"What if the driver gets lost finding the venue?"
"That was easier than last year."
"I should send this to the planners at our other offices."
Emotion 😟
Mild anxiety
🙄
Skeptical
😩
Frustrated
😕
Cautious
😊
Quiet relief
🙂
Engaged
😰
Acute spike · then 😌
😄
Pride + loyalty
Pain No clear starting point for "how do I do this" Generic broker sites · no real pricing · phone-first feels antiquated Largest pain. Quotes arrive in different formats, on different timelines, and reveal her identity to all three vendors No way to verify "this operator is reliable" — has to trust the broker's claim Required fields she doesn't have (PO, cost center) — feels like wrong product No system tells her what to do · she has to remember every detail Driver-cell number is the only artifact she has · refreshing email frantically No clean way to rebook the exact same setup · no referral-credit mechanism
Opportunity SEO landing page in her own words that explains the process USC city page · plain English · phone visible · real reviews Highest-leverage moment. Quote results page with same-format comparison & operator data Per-card on-time % · DOT rating · real photos · Trip Guarantee at decision moment Single-page checkout · optional company fields · clear "what happens next" Pre-trip checklist · auto-reminders · roster upload · planner chat Live map + ETA + driver chat + share-link · the dashboard erases the spike One-click "book this again" · team-account upsell · referral-credit ($250)

7.2  Emotional curve · current journey vs. proposed

The vertical axis is Maya's felt emotion (Low → High). The red line is the current USC experience; the green line is the proposed redesign. The biggest swing is at phase 3 (Compare) — where today she leaks to a competitor that returned a price first, and where the proposed instant quote keeps her on USC.

HIGH NEUT LOW 1 Trigger 2 Research 3 Compare 4 Decide 5 Book 6 Pre-trip 7 Trip day 8 Advocate +115pt swing Instant quote eliminates the Compare valley +95pt swing Live tracking erases trip-day anxiety Current USC Proposed

7.3  Critical moments

ValleyPhase 3 · Compare

The Compare valley

Maya's lowest emotional point on the current site. Phone-only quotes, asymmetric timelines, three different formats. Half the comparison-shopping buyers who reach this phase leak to CharterUP because CharterUP returns a price first. Killing this valley is the single largest conversion lever.

SpikePhase 7 · Trip day

The Trip-Day spike

Acute anxiety 30 minutes before pickup — peak emotional intensity of the entire journey. Today, USC offers no visibility here. Proposed dashboard (live map, driver chat, ETA) erases the spike and converts it into the second emotional peak.

PeakPhase 8 · Advocate

The End-peak

Kahneman's peak-end rule: people judge experiences by their peak emotion and their ending. Maya's ending today is "no follow-up." Proposed: one-click rebook + team-account upsell + referral-credit. The end-peak determines whether she becomes a 4× annual booker.

7.4  Where David and Robin diverge

PhaseMaya (Coordinator)David (Procurement) · divergenceRobin (Group Lead) · divergence
TriggerBoss/bride says "handle the bus"Annual contract review · new business unit standing up · disaster-response prepGroup says "we should do a trip"
ResearchGoogle search · peer askRFP process · existing vendor incumbent check · network referencesGoogle · Facebook ask · "what did so-and-so use last year"
Compare3 quotes in 3 tabs6 RFP responses scored on spreadsheet · 2–3 reference calls1–2 quotes max · the second is for sanity-check
DecideBoss approves the price · she picksProcurement committee · legal redlines · CFO signsDecides alone on the couch · later announces to group
BookCard on file · 10% deposit · forwards to financeSigns MSA · ACH on net-30 · cost-center tagging requiredCard on file · collects from group via Venmo afterwards
Pre-tripDashboard checklist · onceRecurring · multiple trips active simultaneously · ops team managesCalls/texts the planner once to confirm
Trip dayLive tracking · shares link with event leadHands-off — ops team manages day-ofGlued to the live map · texts driver "are you the right bus?"
AdvocateBooks again at next event · referrals fellow coordinatorsRenews MSA · expands to more business unitsFacebook post with photos · operator name in the caption · books again next year
Three journey valleys to design against
  1. Compare valley (Maya). Eliminated by instant-quote results page with same-format comparison. Highest-leverage UX investment.
  2. Trip-day spike (Maya & Robin). Eliminated by live-tracking dashboard with driver chat + share-link.
  3. Advocacy void (all three). Eliminated by post-trip rebook prompt + team-account upsell + referral credit.

All three are addressable in the v1 build (Weeks 1–14 of the phased roadmap in the Strategy Book).

Chunk 7 verdict · journey mapped, ready for synthesis

The journey makes visible what the personas and empathy maps implied: USC's current site has two emotional valleys that competitors fill, and one missing end-peak that turns one-shot transactions into lifetime customers. Next chunk synthesizes Sections 05–07 into a single problem statement via affinity mapping — the convergence step of Diamond 1 (Define phase).

Section 08 · Affinity Mapping + Problem Statement

Synthesizing Sections 02–07 into seven clusters and one committed problem statement.

The Define phase of Diamond 1 converges everything we've discovered into a single thesis. Every observation from competitive audit, personas, empathy maps, and journey gets clustered into themes; each theme produces a labeled insight; the insights collapse into the problem statement the entire Solution Space is designed against.

Framework · Affinity Mapping (KJ Method) + Problem Statement — Originally Jiro Kawakita's KJ Method (1960s); adopted into UX through Beyer & Holtzblatt's Contextual Design (1997). Process: capture → cluster → label → rank → synthesize. Output: insight statements of the form "[User type] struggles with [problem] because [reason]." Source: USER-RESEARCH.md §§ 5.1–5.2 — Jiro Kawakita (KJ Method, 1960s); Hugh Beyer & Karen Holtzblatt, "Contextual Design," 1997.

8.1  Input data · observations being clustered

The "sticky notes" feeding this affinity map come from four sources: competitive audit (§ 02), Norman/Krug/Garrett site audits (§§ 03–04), three JTBD personas (§ 05) + three empathy maps (§ 06), and the eight-phase journey (§ 07). 47 distinct observations were captured; the seven clusters below contain the ones that appeared three or more times.

AFFINITY MAP: US Coachways rebuild
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Data sources:  Competitor audit + Site audit + 3 JTBD personas
               + 3 empathy maps + 8-phase journey
Participants:  N/A — desk research synthesis (composite quotes)
Date:          May 2026
Confidence:    INFERRED · primary-research validation pending

────────────────────────────────────────────────────────────
Observations captured: 47
Clusters surfaced:       7
Outliers (worth noting): 3

8.2  Seven clusters · ranked by frequency & impact

Cluster A9 observations · highest frequency

Speed-of-quote is the trust signal

Key quotes: "I'll get three quotes" → actually picks the first real one." · "The fast quote was probably the highest" · "CharterUP returns a price in 60 seconds" · "Every minute is evidence the broker isn't equipped for this size of trip."

Insight statement: Coordinators struggle to compare brokers fairly because the time-to-real-price varies wildly, and the fastest quote becomes the default winner regardless of fit.

Cluster B7 observations

The Compare phase is where the customer is lost

Key quotes: "I'm comparing three different quote formats" · "Half of comparison shoppers leak to CharterUP at this exact moment" · "Lowest emotional point of the entire journey" · "I had to give my contact info to three brokers to find out which was cheapest."

Insight statement: Buyers struggle to make a confident comparison because no broker produces same-format, side-by-side, real-price comparisons — so they default to whichever vendor reduced the friction first.

Cluster C7 observations · David-heavy

Documentation polish equals operational maturity

Key quotes: "He decides in the first 60 seconds whether the site looks like it will produce documentation" · "GSA Schedule is a binary credibility filter" · "If they can't produce a COI in 24 hours they can't operate at scale" · "He's buying institutional maturity, not transportation."

Insight statement: Procurement leads struggle to differentiate vendors at scale because the actual service is commodity, so they substitute the polish of the For-Business surface as a proxy for operational seriousness.

Cluster D6 observations

Trip-day anxiety is acute and invisible to USC

Key quotes: "Refreshing email frantically 30 minutes before pickup" · "The driver-cell number is the only artifact she has" · "Peak emotional intensity of the entire journey" · "Glued to the live map · texts driver 'are you the right bus?'"

Insight statement: Group leads & coordinators experience peak anxiety on trip day and have no system surface to resolve it, so they either over-call the planner or sit in passive dread — and either way associate USC with the anxiety, not the trip.

Cluster E5 observations

The Account layer is unguarded competitive territory

Key quotes: "Neither CharterUP nor GoGo has shipped a real recurring-shuttle product" · "David needs one MSA, one invoice, zero misses" · "Spreadsheet-style tracking across many one-off bookings" · "Cost-center tagging at booking time."

Insight statement: Repeat corporate buyers struggle with broker-managed transportation because every booking starts from zero, no broker remembers them — and the broker that builds the first credible Team Account will lock in the highest-LTV cohort competitors haven't fought for.

Cluster F5 observations · Robin-heavy

The phone number is the safety net, not the channel

Key quotes: "She says she wants to call. She actually books on her phone at 9pm." · "Phone number is a permanent UI element on every page" · "Its presence converts more than its usage" · "Removing it breaks the trust band for the largest cohort of traffic."

Insight statement: First-time and infrequent buyers struggle to commit on screen without a visible human escape hatch, so the phone number functions as a trust prop — converting buyers who never call it.

Cluster G4 observations

The end of the journey is missing

Key quotes: "USC's product literally ends at the receipt email" · "No clean way to rebook the exact same setup" · "No referral-credit mechanism" · "The end-peak determines whether she becomes a 4× annual booker (Kahneman peak-end rule)."

Insight statement: Successful bookers struggle to convert into repeat bookers because no on-ramp exists between "trip ended well" and "book the next one" — the highest-trust moment in the journey is wasted.

8.3  Outliers worth noting

Three observations didn't cluster but may be significant. They're noted here so they're not lost in a future research cycle.

  • "My sister-in-law used a company last year — what was the name?" (Robin · once) — implies word-of-mouth referral is operationally powerful in the group-lead segment but invisible in USC's analytics. May warrant a referral-code system for friends/family/group-leader networks specifically.
  • "Can I pay 10% now and collect from the group later?" (Robin-adjacent · once) — implies a split-payment / "collect from members" feature could remove a friction point for clubs & congregations. Not in v1 scope; flagged for v2 consideration.
  • "What if my card is declined and I don't know?" (Maya · once) — implies the silent-failure mode in checkout is a real anxiety; surfacing payment status loudly (not just an error toast) might convert.

8.4  The committed problem statement

Seven clusters collapse into one thesis. Everything in Diamond 2 (wireframes, hi-fi, handoff) is designed against this statement. If a feature doesn't trace back to it, the feature is scope creep.

Primary problem statement

Buyers of group transportation — coordinators, procurement leads, and group leaders — need a way to get a real price they can act on in one session, from a broker they can verify before they pay, with visible accountability on the day of the trip, because today the only brokers that provide instant pricing aren't institutionally trusted, and the only brokers that are institutionally trusted force them through days of phone tag.

The statement names the user (three archetypes), the job (real price + verification + day-of accountability, in one session), and the structural problem (the market has forced buyers to choose between speed and trust because no broker has offered both). USC is uniquely positioned to occupy the empty quadrant — and the rest of this dossier is the design plan for doing so.

Three sub-problem statements · one per persona

Maya · Coordinator

"Coordinators need a real price they can forward to their boss in one session, because phone-tag pricing forces them to default to whichever broker reduced their friction first."

David · Procurement

"Procurement leads need an institutional-grade broker with a Team Account they can manage across cost centers, because the marketplace alternatives are operationally immature and the legacy brokers have no recurring-shuttle product."

Robin · Group Lead

"Group leads need transparent pricing in their own vocabulary on mobile, with a visible phone number as safety net, because the personal-accountability stakes are high and the existing broker sites feel hostile to non-experts."

8.5  How-Might-We questions · the bridge into Solution Space

Each cluster generates a How-Might-We question that the design team can ideate against. These are the prompts the wireframes (Section 11 onward) are answers to.

ClusterHow-might-we…Answered in
A · Speed = trust…return a real, comparable price in under 60 seconds without sacrificing the human escape hatch?Hero quote builder · 4-step flow · "Talk to a planner" persistent link
B · Compare valley…produce a same-format, side-by-side comparison of 3–6 buses with operator data and photos, on one page?Quote Results page · vehicle compare grid · filter rail
C · Documentation polish…signal institutional maturity in 60 seconds to a procurement lead skimming the For-Business surface?For-Business landing · MSA download · leadership bios · GSA / FEMA page
D · Trip-day anxiety…replace 30 minutes of refreshing email with a dashboard that shows the bus on a map and the driver in a chat?Customer Dashboard · live tracking · driver SMS bridge · share-link
E · Account layer…lock in the highest-LTV cohort with a Team Account that makes one MSA, one invoice, and zero misses the obvious choice?USC Team Account product · saved trips · cost centers · consolidated billing
F · Phone safety net…keep a real-person phone number visible on every screen without making the site feel phone-first?Persistent trust band · header phone · post-quote "or talk to a planner" link
G · Missing end…convert a successful first trip into a second booking at the moment of peak trust?Post-trip rebook prompt · referral credit · team-account upsell on the dashboard
Scope discipline · what this problem statement excludes

The problem statement is deliberately narrow. It does not commit USC to:

  • A native mobile app (web-first; mobile-responsive is the v1 commitment)
  • An AI trip planner (post-v1 R&D)
  • International expansion (US 50-state focus)
  • Owning operators (asset-light brokerage model continues)
  • A full CRM rebuild (Salesforce stays as system-of-record · see Hosting matrix)

These exclusions are the firewall against scope creep. Garrett's dependency principle (§ 4.2): every plane above is committed to this Strategy-plane statement.

Chunk 8 verdict · Diamond 1 closed, ready for solution definition

Define is complete. Seven clusters, one problem statement, seven How-Might-We prompts, scope firewall in place. The dossier now crosses the Develop / Deliver line into Solution Space. Next chunk converts the How-Might-We prompts into formally specified User Stories (INVEST + Gherkin acceptance criteria) — the contract between design and engineering.

Section 09 · User Stories

The seven How-Might-We prompts, converted into specified user stories.

Each story below answers one of the HMW prompts from § 8.5. Every story uses Mike Cohn's As a / I want to / So that format, with Dan North's Gherkin Given/When/Then acceptance criteria and Bill Wake's INVEST checklist. Edge cases & design notes are explicit because the wireframes (already written) reference these stories as their contract.

Framework · User Stories (Cohn format) + INVEST (Wake) + Gherkin (North/BDD)"As a [user], I want to [action], so that [benefit]." INVEST: Independent · Negotiable · Valuable · Estimable · Small · Testable. Gherkin: Given precondition · When trigger · Then outcome. Sources: USER-RESEARCH.md §§ 4.1–4.5 — Mike Cohn, "User Stories Applied," 2004. Bill Wake, "INVEST in Good Stories and SMART Tasks," 2003. Dan North, Behavior-Driven Development, 2006.

9.1  Eight P0 stories for v1

US-001 · P0 · M · Answers HMW-A · Maya
As a coordinator booking a 60-pax shuttle, I want to get a real, comparable price in under 90 seconds, so that I can forward it to my boss without spending the afternoon on the phone.
Given
I land on the homepage and the inline quote builder is visible above the fold
When
I select trip type (4 tiles) → enter pickup & destination → enter date & passenger count → enter email + mobile
Then
I see a Quote Results page with 3–6 buses, each showing price, operator, on-time %, rating, and a photo, within 5 seconds of submitting
Then also
I receive an email + SMS magic link within 60 seconds to return to the same results later
Edge
If 0 buses match: show "talk to a planner" CTA and capture lead in Salesforce immediately
Edge
If trip is < 48 hrs out: warn about expedited fees on Step 2 before user finishes Step 4
Design
Stepper visible on each step (H1 Visibility). Auto-save state every field blur. Mobile = full-screen step; desktop = inline.
✓ Independent✓ Negotiable (form length tunable)✓ Valuable (north-star metric)✓ Estimable (M, 2 wks)✓ Small enough✓ Testable
US-002 · P0 · M · Answers HMW-B · Maya
As a comparison-shopping coordinator, I want to compare 3–6 buses side-by-side with operator data and photos in one place, so that I can pick a bus confidently without juggling three quote emails.
Given
I have completed the quote builder and reached the Quote Results page
When
I scan the results grid (3–6 cards in a sortable list)
Then
Each card shows: vehicle photo, capacity, price, operator name, operator on-time %, operator rating (★/N), key amenities (chips)
And
I can filter (bus size, amenities, operator rating, price range) without page reload
And
I can compare up to 3 cards in a focused compare view
And
"Talk to a planner" remains persistent in the header throughout
Edge
If results have shifted (operator availability changed) since loading: show a "Refresh" banner, don't silently swap cards
Design
Trip Guarantee banner appears below the cards, not above — buyer is price-anchored first, guarantee closes the loop
✓ Independent~ Negotiable (filter set fixed for v1)✓ Valuable✓ Estimable (M)✓ Small✓ Testable
US-003 · P0 · M · Answers HMW-A/B · Maya · David
As a buyer ready to commit, I want to complete checkout on a single page with a 10% deposit, so that I can lock the bus before my boss changes the venue.
Given
I have selected a bus on the Quote Results page and confirmed trip details
When
I land on /checkout with order summary, contact info, optional cost-center/PO fields, and payment
And When
I enter card details (or tap Apple Pay / Google Pay / ACH) and submit
Then
Stripe charges 10% deposit, balance is scheduled for 30 days pre-trip, confirmation page loads in < 3 seconds
And
Receipt is emailed to me & (optionally) to a finance address I add at checkout
And
I land in my Customer Dashboard with the trip already populated
Edge
If card declines: show inline message with retry, do not lose form state, prompt for alternate payment method
Edge
If 3DS challenge required: surface in modal, return to checkout on completion
Design
Cost-center / PO field collapsed by default (Maya doesn't need it); David expands and uses
✓ Independent✓ Negotiable (Stripe vs Braintree)✓ Valuable (revenue)✓ Estimable (M)✓ Small✓ Testable
US-004 · P0 · S · Answers HMW-A · Maya
As a coordinator who got interrupted mid-quote, I want to resume my saved quote from an SMS or email link, so that I don't have to start over when my boss is finally available to approve it.
Given
I have started a quote and entered at least an email or phone in any step
When
I close the tab / lose connection / explicitly tap "Save & finish later"
Then
An SMS arrives within 30 seconds: "Your USC quote is saved. Resume here: [link]"
And
The link opens directly into the step I left off · all data pre-filled · no re-login
And
The quote is held for 24 hours at the locked price; after that it requires re-quote
Edge
If I clicked the link from a different device: the session migrates without losing state
Edge
If the operator has gone unavailable: show a "Your operator updated availability — see new options" banner, surface alternatives
Design
Magic link tokens expire in 24 hr; longer tokens for explicit "save for next week" requests
✓ Independent✓ Negotiable✓ Valuable (recovery of abandoned carts)✓ Estimable (S)✓ Small✓ Testable
US-005 · P0 · L · Answers HMW-E · David
As a procurement lead at a Fortune 500 with recurring shuttle needs, I want to create a Team Account with multiple cost centers, invite teammates, and receive one consolidated monthly invoice, so that I can replace our existing per-trip phone bookings with one signed MSA.
Given
I land on /business and click "Start a team account"
When
I sign up with corporate email · choose tier (Standard / Enterprise / Government) · accept MSA terms (or upload my own redlines)
Then
An admin dashboard is provisioned · I can invite up to 25 teammates (Standard) by email · I can create cost centers + PO numbers · I can connect SSO (SAML 2.0) on Enterprise
And
Every trip booked under the account auto-tags with the booker's cost center; admin sees aggregated monthly invoice
And
Account exports trips to CSV / NetSuite / Coupa on demand
Edge
If MSA redlines submitted: route to legal queue with 5-business-day SLA · admin dashboard shows status
Edge
If SSO fails: degrade gracefully to password + 2FA, log incident
Design
Federal & GSA tier surfaces FedRAMP-In-Process documentation; explicitly does NOT claim FedRAMP authorized unless/until it is
~ Independent (depends on Stripe billing setup)✓ Negotiable✓ Valuable (highest LTV)~ Estimable (L, split into 2 stories at sprint plan)~ Small (split candidate)✓ Testable
US-006 · P0 · S · Answers HMW-F · Robin
As a group leader booking a senior club casino trip from my phone at 9 PM, I want to see total transparent pricing on the SEO city page with a phone number always visible, so that I can commit without giving up the option to call someone if I get confused.
Given
I arrive on /charter-bus-rental/{city} from an organic search result
When
The page loads (LCP < 1.8s on mobile 4G)
Then
The H1 contains the keyword in plain English ("Charter Bus Rental in [City] — Real Prices in 60 Seconds")
And
The inline quote builder is above the fold, no scroll required on mobile
And
The 24/7 phone number is in the top nav, in the trust band, and in the footer — three independent locations
And
A "Local pricing starts at" table is visible without scrolling past the fold
And
3 real local reviews are rendered with city tags ("Wedding · Brooklyn 2024")
Edge
If city has fewer than 3 real reviews: surface trip-type reviews instead with a "City-specific reviews coming soon" line; never fabricate
Edge
If user is on slow 3G: serve a stripped HTML version with no map & deferred JS
Design
Mobile checkout must work without keyboard zoom · input font-size ≥ 16px · tap targets ≥ 44px
✓ Independent✓ Negotiable✓ Valuable (organic conversion)✓ Estimable (S, template)✓ Small✓ Testable (CWV in CI)
US-007 · P0 · M · Answers HMW-D · Maya · Robin
As a booker on the morning of my trip, I want to see the bus on a live map with ETA and a direct message channel to the driver, so that I'm not refreshing email trying to figure out whether the bus is actually coming.
Given
The trip is confirmed and we are within T-2 hours of pickup
When
I open the Customer Dashboard for the trip
Then
A live map appears with the bus icon updating every 15s · ETA recomputes on movement
And
"Message driver" opens a chat (SMS bridge) with driver's first name and photo
And
"Share live link" produces a public read-only URL with an expiring token (24h) for passengers
And
If I tap "Talk to USC now" I'm connected to dispatch in < 60 seconds
Edge
If operator GPS signal lost: fall back to driver-reported ETA + show "GPS reacquiring…" state, do not show stale map
Edge
If trip is delayed > 15 min: proactively notify booker via SMS, not just dashboard
Design
ETA region has aria-live="polite" for screen readers; status changes are spoken
~ Independent (depends on operator GPS integration)✓ Negotiable✓ Valuable (peak-anxiety solve)~ Estimable (M, GPS variance)✓ Small enough✓ Testable
US-008 · P0 · L · Operations · backend story · supports all personas
As a USC operations dispatcher, I want to be alerted automatically when an operator can't fulfill a trip and have a backup-operator queue pre-ranked by proximity, availability, and tier, so that I can deploy a backup bus within the 2-hour Trip Guarantee window without manual scrambling.
Given
A confirmed trip exists in Salesforce with assigned operator
When
The operator marks the trip "cannot fulfill" OR fails to confirm 24 hours before pickup OR misses the pickup window by 30 min
Then
The dispatch console raises a Critical alert with a pre-ranked list of 3+ backup operators (by distance, available capacity, tier)
And
Customer is notified via SMS & in-dashboard that a backup is being arranged · ETA on backup confirmation provided
And
If a backup is confirmed < 2h after trigger: Trip Guarantee was held · log success
And
If no backup confirmed within 2h: 110% refund auto-issued via Stripe · customer notified with refund timeline
Edge
If multiple trips fail simultaneously (e.g., operator bankruptcy): bulk dispatch view, prioritized by trip date
Edge
Trip Guarantee does not apply to weather force-majeure events; clear policy & UX for that case
Design
Customer-facing copy: never blame the operator by name; "Your bus is being rebooked" — protect operator relationships
~ Independent (SubOut + Salesforce integration)✓ Negotiable✓ Valuable (defends guarantee)~ Estimable (L, split into 3 sprints)~ Small (epic, split at sprint plan)✓ Testable

9.2  Story sizing & sprint plan

Framework · Story sizing (XS/S/M/L/XL) — XS = single-element change · S = single component · M = multiple components · L = full feature · XL = epic that must split before sprint commit. Source: USER-RESEARCH.md § 4.4 — [AGGREGATED] standard agile estimation practice.
IDTitlePersonaSizeSuggested sprint
US-001Instant quote in 90sMayaMSprint 1–2 (Weeks 3–5 in roadmap)
US-002Same-format compareMayaMSprint 1–2
US-003Single-page checkoutMaya · DavidMSprint 2–3 (Weeks 6–8)
US-004SMS magic-link resumeMayaSSprint 2
US-005Team Account v1DavidL · split into 3 storiesSprint 4–5 (Weeks 12–13)
US-006SEO city page conversionRobinS (template)Sprint 3–4 (Weeks 9–11)
US-007Live trip trackingMaya · RobinMSprint 4 (Weeks 12–13)
US-008Trip Guarantee backupOps · allL · split into 3 storiesSprint 2 (alert) → 4 (auto-refund)

9.3  Out-of-v1 (parking lot)

Stories that emerged from research but are firewalled from v1 scope (per § 8.4). Listed here so they don't get lost and so the team can defer with intention, not by omission.

IDTitleWhy deferredTarget
US-009Split-payment / collect from group membersRobin outlier; needs research; payment-flow complexityv1.5
US-010Native mobile app (iOS / Android)Web-responsive covers the journey; native is a wrapper riskv2
US-011AI trip planner (natural-language → fleet)R&D-grade; could ship as opt-in beta in Q3v2
US-012Operator self-onboarding (no sales touch)Supply-side prioritization; ops bandwidth in v1v1.5
US-013Multi-language site (Spanish first)Audience size justifies; not v1-criticalv1.5
US-014Referral-credit program ($250 for booker, $250 for referred)Marketing-led; needs legal review on T&Csv1.5
Chunk 9 verdict · stories specified, ready for behavioral analysis

Eight P0 stories specified, sized, sprint-planned. Six v1.5 / v2 stories parked. Wireframes already on file reference these by ID. Next chunk applies the Behavioral Design layer — Fogg's B=MAP, Eyal's Hook Model, Cialdini's persuasion patterns, Kahneman's System 1/2 — to ensure each shipped story actually drives the behavior change it claims.

Section 10 · Behavioral Analysis · Fogg + Eyal + Cialdini + Kahneman

The behavior layer · why each P0 story actually triggers the action it claims to.

User stories define what the system does. Behavioral analysis specifies why users will actually use it. Each P0 story is run through Fogg's B=MAP diagnostic (motivation × ability × prompt), then the engagement loop is mapped against Eyal's Hook Model, then persuasion patterns and System-1/2 targeting are committed per surface.

10.1  Fogg B=MAP · diagnosing every P0 story

Framework · Fogg Behavior Model (B = MAP) — Behavior happens when Motivation, Ability, and a Prompt converge above the action line. Diagnose which element is missing before designing a fix. Don't boost motivation when the real problem is ability — making things easier is almost always more effective than making people want it more. Source: BEHAVIORAL-DESIGN.md §§ 1.1–1.4 — BJ Fogg, "A Behavior Model for Persuasive Design," Persuasive '09 ACM (2009); "Tiny Habits," 2020. behaviordesign.stanford.edu.
StoryMotivator (Fogg pair)Scarcest ability factorPrompt typeDesign response
US-001 · Instant quote Anticipation · Hope ("I might get the price now") Time · Maya is interrupted constantly Facilitator (motivation already high, ability is the blocker) 4-step builder · auto-save · "60 seconds" promise quantifies the time cost upfront
US-002 · Compare Anticipation · Hope + mild Fear ("Am I overpaying?") Mental effort · comparing across formats Facilitator Same-format grid · sortable · filter rail · max 3-card compare view (reduces choice paralysis)
US-003 · Checkout Anticipation · Hope ("Lock it before the venue changes") Non-routine + physical effort (card-entry friction on mobile) Signal (motivation + ability both high here) Single page · Apple/Google Pay above card fields · optional cost-center collapsed
US-004 · Magic-link resume Anticipation · Hope ("I won't lose my work") Mental effort · context-switching back into the task Signal (SMS arrives as the cue) One-tap link · pre-filled state · "Picking up where you left off" reassurance
US-005 · Team Account Anticipation · Hope + Belonging · Social Acceptance ("My team will love me for this") Social deviance · "Am I allowed to commit my company to this?" Spark (motivation needs lifting on first encounter) "Used by FEMA & F500" social proof · MSA-ready language · "Add teammates later" defer
US-006 · SEO city page Anticipation · Hope Time + mental effort (vocabulary anxiety) Spark · entry from cold organic traffic Plain-English H1 · transparent pricing table · phone number visible · trust badges above fold
US-007 · Live tracking Sensation · Pleasure (relief) + Anticipation · avoid Fear Mental effort · the unknown is the cost Signal (the user comes to it actively, anxious) Map renders first · ETA huge · "Message driver" one tap · "Talk to USC now" persistent
US-008 · Backup deployment Ops-side: Anticipation · avoid Fear (guarantee violation) Time · 2-hour SLA is tight Signal · critical alert in dispatch console Pre-ranked backup queue · one-click deploy · auto-customer-notification · auto-refund if missed
The Fogg pattern across stories

Six of eight stories are Facilitator or Signal prompts — motivation is already there, ability is the bottleneck. This is the single most important behavioral finding in the dossier: USC's job is not to convince buyers to book. It's to remove the friction that's stopping them from booking. Only US-005 (Team Account) and US-006 (cold SEO entry) need a Spark — both are first-encounter moments where the buyer hasn't formed the intent yet.

10.2  Eyal Hook Model · the engagement loop USC builds

Framework · Hook Model (Trigger → Action → Variable Reward → Investment) — A 4-phase cycle that creates habits when repeated. Each cycle's Investment phase loads the next cycle's Trigger. The Investment phase is what separates Hook from simpler reward loops. Source: BEHAVIORAL-DESIGN.md §§ 2.1–2.5 — Nir Eyal, "Hooked: How to Build Habit-Forming Products," 2014 (ISBN 978-1591847786).
flowchart LR T[TRIGGER
External: SEO landing · paid search · email
Internal: "I have another group to move"
] A[ACTION
Instant quote · 4 steps · ~60 sec
Saved to account if signed in
] R[VARIABLE REWARD
HUNT: real prices found
SELF: trip confirmed · pride
TRIBE: shared live-link · group sees
] I[INVESTMENT
Save quote · create account · upload roster
Past trips · cost centers · saved vendors
] T --> A --> R --> I I -.->|loads next trigger| T classDef phase fill:#fff,stroke:#0b2a4a,color:#0b2a4a; class T,A,R,I phase;

Triggers · external → internal transition

External triggers (cycle 1):

  • Paid: Google search ads on "charter bus rental [city]"
  • Earned: organic ranking on city / route / trip-type templates
  • Relationship: coordinator-to-coordinator referral
  • Owned: post-trip email · dashboard notifications

Internal triggers (cycle 3+):

  • "I have another group to move" — opens the dashboard reflexively
  • "My team needs a shuttle" — taps "book again" without searching
  • "I should check on the driver" — opens the live-tracking link

Eyal: products that require constant external triggers haven't formed a habit. The Account & Dashboard exist specifically to make USC the internal-trigger destination.

Variable rewards · all three types

  • HUNT · real prices found, operators discovered, deals on the route page
  • SELF · trip locked in (relief), trip complete (pride), tracking dashboard rendering the bus moving
  • TRIBE · sharing the live-link with the group · members thanking the booker · post-trip Facebook photo gets likes

Eyal: variability is the dopamine driver, not the reward itself. The live-tracking map intentionally updates on movement (variable timing) rather than a fixed interval.

Investment · what makes cycle N+1 easier

  • Data: saved pickup addresses · default passenger counts · cost-center tags · operator favorites
  • Content: uploaded rosters · saved itinerary templates · invoice PDFs in the account
  • Followers: teammates invited under a Team Account (David)
  • Reputation: "Gold" operator tier on the supply side (operator-portal hook)
  • Skill: familiarity with the dashboard — switching costs grow with use

Eyal: ask for investment AFTER reward (user is satisfied, goodwill is high). The team-account upsell appears on the post-trip dashboard, not at checkout — by design.

Ethical check · Eyal's Manipulation Matrix

Where does USC land on Maker-Uses-It × Improves-User-Life?

  • Maker uses it: ✓ — USC employees book company trips through the product.
  • Improves user life: ✓ — replaces hours of phone tag with verified group transportation.
  • Quadrant: Facilitator · ethical foundation for habit-forming design.

Important: if USC ever drifts into "Dealer" territory (engagement design without genuine user benefit), the patterns in this section must be reconsidered, not just turned up further.

10.3  Persuasion patterns · Cialdini + Kahneman, mapped to surfaces

Framework · Cialdini's six principles + Loss Aversion (Kahneman/Tversky) + Anchoring — Social Proof · Scarcity · Authority · Reciprocity · Commitment · Liking · Loss Aversion · Anchoring. Each is a nudge type within choice architecture. Sources: BEHAVIORAL-DESIGN.md §§ 3.2, 6.1 — Robert Cialdini, "Influence: The Psychology of Persuasion," 1984; "Pre-Suasion," 2016. Daniel Kahneman & Amos Tversky, Prospect Theory, 1979; Anchoring, 1974.
PatternWhere it appearsCopy / mechanismWhy it works here
Authority (Cialdini) Persistent trust band · About page · Federal landing · footer DOT/MC "FEMA & Fortune 500 approved · GSA Schedule · DOT #2418" Procurement (David) screens vendors on credentials before evaluating fit. Authority is the binary filter.
Social Proof (Cialdini) Reviews block · F500 logo wall · "23 buses available near you" "★4.6 · 2,400 reviews · 300K+ trips since 2004" Robin (anxious group lead) needs evidence that people like her use USC. Quantified social proof > testimonials alone.
Scarcity (Cialdini) "23 buses available now" map overlay · expiring-quote messaging (24h hold) "Your quote locks pricing for 24 hours." Reframes urgency from manipulation to information. Honest scarcity (real inventory) only — no fake "1 left in stock" copy.
Reciprocity (Cialdini) Published pricing pages · price calculator · transparent fee disclosure "Here's what a trip actually costs, no email required." Brokers historically gate pricing. Giving it away creates obligation-to-engage in the buyer.
Commitment (Cialdini) Save-quote magic link · pre-trip checklist · roster upload · account creation "Save this quote — finish later" · "Pre-trip checklist (2/4)" Small yeses load big yeses. Each saved quote and checklist item is investment that raises cost of switching to a competitor.
Liking (Cialdini) Reviews from people-like-them · local phone area code on city pages · driver photo & name "Lauren · Wedding planner · Brooklyn 2024" Robin trusts a Brooklyn bride more than a generic five-star average. Specificity = liking.
Loss Aversion (Kahneman/Tversky) Trip Guarantee copy · cancellation transparency · "free until balance due" "If we fail: backup bus in 2 hours, or 110% refund." Losses hurt ~2× more than equivalent gains. Framing the guarantee as the broker's potential loss (not the buyer's gain) anchors it stronger.
Anchoring (Tversky/Kahneman) Pricing table on city pages (luxury tier shown first) · order summary at checkout "Luxury motorcoach $175–230/hr · full charter $140–175/hr · executive $120–145/hr · minibus $95–115/hr" Premium tier first sets the reference point. The $140 full charter feels reasonable by comparison; the $95 minibus feels like a steal.
Ethical nudge checklist (per Thaler/Sunstein publicity test)
  • ✓ Is the nudged behavior in the user's genuine interest? Yes — booking a verified bus is the goal they came for.
  • ✓ Would the user approve if they understood the nudge? Yes — none of these patterns are deceptive (no fake countdowns, no dark-pattern defaults).
  • ✓ Is choice still freely available? Yes — every nudge is paired with a real alternative (talk to planner, call us, save and leave).
  • ✓ Can the nudge be easily overridden? Yes — opt-out of every notification, cancel free until balance is due.

10.4  System 1 vs System 2 · which surfaces target which

Framework · Dual Process Theory — System 1: fast, automatic, intuitive, pattern-matching. System 2: slow, deliberate, analytical. System 1 is the default; System 2 activates when System 1 can't handle the choice. Design for System 1 first; reach for System 2 only when the decision is high-stakes and the user needs to slow down. Source: BEHAVIORAL-DESIGN.md §§ 4.1–4.2 — Daniel Kahneman, "Thinking, Fast and Slow," 2011 (ISBN 978-0374275631).
SurfaceTarget systemWhy · design choice
Homepage hero · quote builderSystem 1Mobile, distracted, high motivation. Visual hierarchy + familiar form patterns + single primary CTA. Zero cognitive friction.
Quote Results pageSystem 1 primarily, System 2 opt-inDefault scan is System 1 (cards, photos, price). Filter rail + compare view activate System 2 for the small subset who want deliberate analysis.
CheckoutSystem 2 by intentHigh-stakes ($X,000 charged). Single page, clear hierarchy, every field labeled, math visible — deliberate processing supported, not punished.
SEO city / route pagesSystem 1Cold organic traffic, low patience. Visual scan optimized: H1 → CTA → pricing table → quote builder. No copy that demands System 2.
For-Business landing (David)System 2Procurement is paid to be deliberate. Dense data, detailed tables, downloadable PDFs, in-depth case studies. System 2 is the desired mode here.
Dashboard · live trackingSystem 1Trip-day anxiety. Map renders first, ETA biggest element on screen, color-coded status. No reading required.
Trip Guarantee policy pageSystem 2Legal commitments. Plain English but full disclosure of edge cases. The buyer who reaches this page wants to slow down and read.

10.5  Synthesis · the behavioral spec per surface

Combining Fogg + Eyal + Cialdini + Kahneman into a single annotation per primary surface. This is the spec the wireframes already implement (Section 11 onwards), now made explicit.

[SURFACE: Homepage hero]
├── PROMPT:    External (SEO/paid) → Internal (book another trip)
├── MOTIVATION: Anticipation/Hope (real price now)
├── ABILITY BARRIER: Time (Maya is interrupted)
├── PROMPT TYPE: Facilitator (motivation is already there)
├── SYSTEM TARGET: System 1 (scan, click, type, submit)
├── PERSUASION: Authority (trust band) + Reciprocity (quote without email upfront)
└── INVESTMENT ASK: Email/SMS at end of quote builder (small, loads magic link)

[SURFACE: Quote Results]
├── PROMPT:    Direct from quote builder
├── REWARD TYPE: Hunt (real prices) + Self (decision agency)
├── VARIABLE ELEMENT: Operator data revealed (each card surprises)
├── SYSTEM TARGET: System 1 default · System 2 opt-in
├── PERSUASION: Social Proof (operator ratings) + Anchoring (premium card first)
└── INVESTMENT ASK: "Save quote" or pick a bus (commitment escalator)

[SURFACE: Customer Dashboard · day-of trip]
├── PROMPT:    Internal (anxiety) + Owned (T-2h SMS)
├── REWARD TYPE: Self (relief) + Tribe (share-link to group)
├── VARIABLE ELEMENT: Map updates on movement, not on interval
├── SYSTEM TARGET: System 1 (anxious scanning)
├── PERSUASION: Liking (driver photo + first name)
└── INVESTMENT ASK: Post-trip review → "book again" (peak-end moment)

[SURFACE: For-Business / Team Account]
├── PROMPT:    Spark (cold first encounter, Authority leads)
├── MOTIVATION: Anticipation + Belonging (Social Acceptance internally)
├── ABILITY BARRIER: Social Deviance ("Can I commit my company?")
├── PROMPT TYPE: Spark transitioning to Facilitator post-MSA
├── SYSTEM TARGET: System 2 (deliberate procurement evaluation)
├── PERSUASION: Authority (FEMA · GSA · F500) + Reciprocity (MSA download)
└── INVESTMENT ASK: SSO setup · invite teammates · upload PO list (switching cost)
Chunk 10 verdict · behavioral layer specified, ready for heuristic eval

Every P0 story now has a behavioral diagnosis. The Hook loop is drawn end-to-end. Cialdini patterns are mapped to surfaces with copy. System-1/2 targeting is committed. The ethical floor (Thaler publicity test + Eyal's Manipulation Matrix) holds. Next chunk runs the wireframes (already on file) through Nielsen's 10 heuristics with severity ratings — the converging-design check before atomic-inventory and handoff.

Section 11 · Nielsen Heuristic Evaluation

The current site and the proposed wireframes, scored against H1–H10 with severity ratings 0–4.

A heuristic eval is a discount usability method that catches glaring problems without requiring participant recruitment. Below, each of Nielsen's ten heuristics is run twice — against the current uscoachways.com (severity ratings of violations) and against the proposed wireframes (severity ratings post-fix). The delta is the case for the rebuild.

Framework · 10 Usability Heuristics + Heuristic Evaluation Method + Severity Rating Scale (0–4) — Identified by Molich & Nielsen via factor analysis of 249 real usability problems (1990, refined 1994). Method: 3–5 independent evaluators per Nielsen find ~75% of usability problems. Severity scale: 0 not-a-problem · 1 cosmetic · 2 minor · 3 major · 4 catastrophic (must fix before release). Sources: NIELSENS-HEURISTICS.md §§ 2.1–2.10, 3, 4 — Jakob Nielsen, "Usability Inspection Methods," 1994; updated 2020 with Kate Moran & Feifei Liu. nngroup.com/articles/ten-usability-heuristics.

11.1  Methodology note

What this evaluation is

  • Single-evaluator pass against uscoachways.com (current) and against the wireframes & hi-fi prototypes (proposed) on file in this project.
  • Both desktop and mobile breakpoints considered.
  • Each heuristic scored using Nielsen's 0–4 severity scale.
  • Severity 3 + 4 issues on the proposed site are flagged for fix before v1 ship.

What this evaluation is not

  • Not a substitute for usability testing. Nielsen explicitly: "guidelines-based, not evidence-based."
  • Not 3–5 evaluators (the recommended minimum). Single evaluator catches ~50% of issues. Recommendation: run the same eval with 2 additional evaluators before v1 release.
  • Not a substitute for user research validation of the assumptions tagged in § 01 and § 05.

11.2  The ten heuristics, scored

# Heuristic Current site · violations Now Proposed site · resolution After
H1 Visibility of System Status RFQ form submits to a generic "Thank you" page with no feedback on state, ETA, or what happens next. Quote builder has no progress indicator. Post-booking provides email-only updates, no dashboard. No live trip status surface exists at all. 4 Inline stepper in quote builder. Quote Results page renders system state (prices, operators, availability) directly. Customer Dashboard with pre-trip checklist + live tracking T-2h. aria-live regions on ETA updates. 1
H2 Match Between System & Real World Site uses broker-internal vocabulary ("service type", "group type") that buyers don't share. Solutions ordered alphabetically rather than by buyer mental model. Pricing presented as range FAQs, not per-trip-type. 3 SEO city/route/trip-type templates use buyer vocabulary in H1s. Solutions ordered by audience frequency. Trip Guarantee copy in plain English. Vehicle-type pages name buses the way buyers describe them. 1
H3 User Control & Freedom RFQ is fire-and-forget — no way to edit a submitted request, no save-state, no exit beyond closing the tab. Cancellation policies hidden in FAQ rather than visible at booking. 3 Quote builder auto-saves at every blur · "Save & exit" persistent in nav · SMS magic link to resume. Trip edit + free-cancel until balance auto-charges (visible on dashboard). Modal close + Esc on every modal. 1
H4 Consistency & Standards "Get a Quote", "Request a Quote", "Free Quote" appear interchangeably for the same CTA. Footer / header navigation diverge on some pages. Phone number formatted three different ways across pages. 2 Atomic design system locks CTA copy to one canonical phrase per intent. Same button shape, color, position across surfaces. One phone number format (E.164 stored, US-display rendered) site-wide. 1
H5 Error Prevention Date fields accept past dates. Passenger field accepts negative numbers. No warning when <48-hour booking enters expedited-fee territory. No type-ahead on cities — typos cause "city not found" callbacks. 3 Date picker constrained to future dates with sensible defaults. Passenger stepper bounded 1–56 with overflow → "custom fleet" branch. <48h trigger preemptively warns on Step 2. Pickup/destination autocomplete via Mapbox. 1
H6 Recognition Rather Than Recall No recent searches, no saved quotes, no past-trip list, no operator favorites. Repeat coordinator must re-type the same pickup address every booking. Solutions buried in mega-menus, not surfaced contextually. 3 Account dashboard surfaces past trips, saved itineraries, recent pickups. "Book this again" one-click. Solutions visible on homepage as cards. Filter rail shows applied filters as chips. 1
H7 Flexibility & Efficiency of Use No keyboard shortcuts. No bulk operations for repeat bookers. No way to skip onboarding. Phone-call path and web-form path don't reconcile (info entered online doesn't appear when planner calls back). 2 Power-user shortcuts in dashboard (J/K trip nav, R for rebook). Bulk-book multi-trip uploads (Team Account). Both phone & web feed the same Salesforce lead. Recents pre-fill quote builder. 1
H8 Aesthetic & Minimalist Design Homepage above-the-fold has ~280 words of happy talk competing with the CTA. Three "Get Quote" CTAs at equal visual weight. Carousel hero diverts attention from action. Decorative shadow/gradient/glow effects compete with content. 3 Above-the-fold copy cut to ~50 words. One primary CTA, one secondary, one tertiary — clear visual hierarchy. Single hero photo, no carousel. Whitespace-led editorial layout (Direction A) or denser product-led (Direction B). 1
H9 Help Users Recover from Errors RFQ form errors appear in a generic banner at top of form without indicating which field. "Server error" messages with stack-trace-like text appear on retry. No suggestion of how to fix the problem. 4 Inline field-level errors with specific cause + fix. Card-decline shows alternate payment options without losing state. Network errors surface a "retry" with the request preserved. Plain-language copy, no error codes. 1
H10 Help & Documentation No onboarding. No tooltips. Help is a contact form. FAQ is a static page that doesn't answer "what does a quote cost?" or "what happens if my operator cancels?" — the actual questions buyers have. 2 Contextual help icons on quote-builder steps. Empty states in dashboard explain what to expect ("Live tracking opens 2 hrs before pickup"). Trip Guarantee page with full policy. FAQ schema on city/trip-type pages. Persistent 24/7 phone number. 1

11.3  Aggregated severity · current vs proposed

Current site

  • 2 catastrophes (S4): H1 Visibility · H9 Error recovery
  • 5 major violations (S3): H2 Real-world match · H3 User control · H5 Error prevention · H6 Recognition · H8 Minimalist
  • 3 minor violations (S2): H4 Consistency · H7 Flexibility · H10 Help
  • Aggregate severity: 28 / 40

Per Nielsen's release rubric: any S3 or S4 issue is a release-blocker. The current site has 7 release-blocker-grade violations.

Proposed site (wireframes + hi-fi)

  • 0 catastrophes (S4)
  • 0 major (S3)
  • 0 minor (S2)
  • 10 cosmetic (S1) · documented in § 11.4 for cleanup-sprint backlog
  • Aggregate severity: 10 / 40

Proposed site has 0 release-blocker violations. Net delta: −18 severity points. Every S3/S4 issue resolved at the wireframe stage, before code.

11.4  Known S1 cosmetic issues on the proposed site

Documented for the cleanup sprint backlog. None are release blockers; each is a polish-pass candidate after primary v1 ship.

HeuristicCosmetic issue · proposed siteSuggested fix
H1 VisibilityQuote-builder step transitions could use a subtle animation cue (currently instant)120ms fade on step swap, prefers-reduced-motion honored
H2 Real world"Multi-day" trip type label could be clearer for short multi-stop day tripsTooltip on hover: "2+ days OR multiple stops"
H4 ConsistencyTwo slightly different secondary button styles between Hi-fi A & B (intentional but flag)Lock secondary button to one canonical token at handoff
H6 RecognitionOperator photos on quote-results cards could include a tiny tier badge (Gold/Silver/Bronze) for scannabilityAdd tier ribbon in top-right of operator photo
H7 FlexibilityKeyboard shortcuts not yet surfaced anywhere in UI — users won't discover them"?" key opens a shortcuts overlay (Slack/Linear pattern)
H8 MinimalistTrust band + 5-CTA row + solutions row creates 3 stacked "trust" surfaces above the foldConsider collapsing trust band into nav on Direction A · usability-test both
H10 HelpNo in-app onboarding tour for first-time Team Account admins3-step tour on first login: cost centers · invite teammates · billing
H10 HelpFAQ FAQs are city-page-only; trip-type pages need their own FAQ blocksAdd per-trip-type FAQ schema (e.g. weddings: "do I tip the driver?")
H4 ConsistencyDashboard "trips" tab uses "My trips" on mobile, "Trips" on desktopLock to "Trips" everywhere (Krug Law 3 · half the words)
H9 Error recoveryNetwork-loss state in live tracking shows "GPS reacquiring…" but doesn't explain what user can do meanwhileAdd "Call dispatch · (844) 728-3661" as recovery action in the same state

11.5  Heuristic issues that need user research to validate

Per Nielsen: a heuristic violation doesn't automatically mean a fix is needed. These three borderline cases should be validated with users before treating as confirmed problems.

Borderline caseHeuristic at riskValidation method
Trust band's 3rd stacked element (above-the-fold density on Direction A)H8 Minimalist5-second test (Krug § 1.6) on Direction A vs. trust-band-collapsed variant. Measure recall of Trip Guarantee & phone number.
Trip Guarantee SLA copy ("backup within 2 hours")H2 Real-world match · H10 HelpComprehension test with 5 Robin-archetype users · do they understand the promise without reading the policy page?
Team Account onboarding flow (David's self-serve appetite, Assumption 2 from § 01)H7 Flexibility · H10 Help5 moderated sessions with procurement leads · do they self-onboard or do they ask for a sales call?
Chunk 11 verdict · proposed site clears the heuristic floor

Current site: 7 release-blocker violations. Proposed site: 0 release-blockers, 10 cosmetic items for the cleanup-sprint backlog, 3 borderline cases earmarked for the 2-week research sprint flagged in § 5.4. The Nielsen floor is clear. Next chunk inventories the UX patterns that implement each fix — the microcopy, interaction, and persuasion patterns the dev team should pick up off the shelf.

Section 12 · UX Patterns · microcopy + interaction + annotation

The off-the-shelf patterns that implement every fix in this dossier.

Sections 10 (Behavioral) and 11 (Heuristics) committed to what we'll do and why. This section locks the how at the pattern level: the canonical CTA copy, form-field microcopy, error-message library, empty states, loading states, and wireframe annotation key the dev team picks up directly. Every pattern below traces to UX-PATTERNS.md (which itself aggregates Krug, Wroblewski, NN/g, Cialdini, and platform conventions).

Framework · UX Patterns library (microcopy + interaction + persuasion + annotation) — Aggregated industry conventions documented across NN/g, Material Design, Apple HIG, and named practitioners. Used to convert abstract heuristic compliance into shipped pixel-level decisions. Source: UX-PATTERNS.md §§ 1–4 — [AGGREGATED]. Notable contributors: Krug (simplicity), Wroblewski (forms 2008 + inline validation 2009), Cialdini (persuasion), Nielsen (errors), Hulick (onboarding 2014), Nunes & Dreze (endowed progress 2006).

12.1  CTA microcopy · canonical phrases per intent

Formula: [Action verb] + [Value / object] + [Optional urgency / benefit]. One canonical CTA phrase per intent, locked at the design-system layer so H4 (Consistency) never regresses.

IntentCanonical primaryCanonical secondaryWhere used
Start quoteSee prices in 60 seconds →Talk to a plannerHero · trust band · final CTA · footer
Continue in builderContinue →← BackSteps 1–3 of quote builder
Submit to resultsShow me my prices →Save & finish laterStep 4 of quote builder
Pick a busSelect this busCompare · Save quoteQuote Results cards
CheckoutBook trip · $384 today← Edit tripCheckout primary button (price interpolated)
View live tripTrack my bus →Message driverDashboard · T-2h notification
Account creationStart a team account →Talk to enterprise salesFor-Business landing · dashboard upsell
RebookBook this trip againSave to recurringPost-trip dashboard
CancelCancel tripKeep my trip (in modal)Dashboard · cancel-confirm modal
What we deliberately avoid
  • "Get Started" — too generic; doesn't tell the user what's about to happen.
  • "Submit" / "Send" / "Process" — robotic; "Show me my prices" is benefit-first.
  • "Click here" — accessibility & clarity failure.
  • "Free Quote" / "Free Trial" — "free" is implicit; saying it foregrounds the wrong concept (price-conscious vs. trust-conscious).

12.2  Form patterns · labels, placeholders, validation

FieldLabelPlaceholderHelper / validation
Pickup addressPickupCity, airport, or address…Autocomplete via Mapbox; helper: "We'll show buses available from this location"
DestinationDestinationWhere to?Autocomplete; "Same as pickup" shortcut for hourly trips
Pickup datePickup date & timeSat, Aug 14 · 7:00 AMDate picker constrained to future. <48h triggers expedited-fee warning.
Passenger countPassengersStepper bounded 1–56; >56 triggers "Custom fleet" branch
EmailEmailyou@company.com"We'll send your quote here." Validate on blur with regex + DNS MX check.
MobileMobile (for SMS magic link)(555) 555-1234"For one-time quote link & trip-day status. We don't call."
Card numberCard number1234 5678 9012 3456"We accept Visa, MasterCard, Amex, Discover" · format on type
Cost center / POCost center / PO (optional)e.g. CC-4821Collapsed by default for personal bookings; expanded automatically for Team Account users

Inline-validation pattern

Trigger: validate on blur (Wroblewski 2009 — empirically lowest error rates).

States: default → focused → valid (subtle green check) → invalid (inline message below field).

Never: validate on every keystroke (creates premature-error flicker).

Autosave pattern

Trigger: save on field blur OR every 30s during idle, whichever first.

Status indicator: small "Saved 3s ago" in builder header. Updates to "Saving…" during write.

Recovery: if connection drops mid-save, queue locally + retry; "Saved when you're back online" message.

12.3  Error message library

Formula: [What happened] + [Why / context] + [How to fix]. Plain language, never error codes user-facing, always paired with a recovery action.

Error typeTriggerCopyPlacement
Validation · empty requiredSubmit with blank required field"Pickup address is required to find buses."Inline below field · field border turns red
Validation · email formatEmail field blur with invalid value"Enter a valid email — we'll send your quote link here."Inline below field
Validation · past dateDate picker selects past date"Pickup date needs to be in the future. Earliest available: tomorrow."Inline below picker + auto-suggest next valid date
Validation · <48h expeditedDate selected within 48h"Trips within 48 hours may add an expedited operator fee. We'll show the impact on Step 4."Inline warning (not blocker) on Step 2
Validation · >56 paxPassenger stepper exceeds 56"Groups over 56 need a custom fleet. We'll route you to a planner who'll size it right."Step 3 inline branch
System · network dropFetch fails on quote-results load"Can't reach our pricing right now. Your trip details are saved — try again in a sec?"Page-level banner + retry button
System · timeoutQuote API > 8 seconds"This is taking longer than usual. Hang tight — or we can call you when it's ready."Inline with "Notify me" SMS opt-in
Payment · card declinedStripe declines card"Your bank declined that card. Try another card, Apple Pay, or pay by ACH — your trip is held for 30 minutes."Inline above card field · state preserved · alternate methods surfaced
Payment · 3DS required3DS challenge raised"Your bank needs to verify this charge. We'll open a quick check from your bank in a new window."Modal · returns to checkout on completion
Operator · cancellationBackup-deploy triggered"Your bus is being rebooked — we'll have a confirmed backup within 2 hours. We'll text you the moment it's confirmed."Dashboard banner + SMS · never blame operator by name
Auth · expired magic linkLink clicked > 24h after issued"This quote link expired. Pricing may have changed — get a fresh quote in 60 seconds."Page · button to re-run quote w/ same parameters
Permission · Account accessNon-admin tries admin action"Only Team Account admins can do that. Your admin: [Maya] — ping them to make the change?"Modal with "Email admin" action

12.4  Empty states · what each blank screen should say

Formula: [What this space is for] + [Why it's empty] + [How to fill it]. Empty states are a teaching moment, not a void.

SurfaceTitleBodyPrimary CTA
Dashboard · no trips yetNo trips yet — let's fix thatGet a real price in 60 seconds. Your bookings live here.See prices in 60 seconds →
Dashboard · live tracking pre-T-2hLive tracking opens 2 hours before pickupWe'll text you the moment the bus is on the way. Until then, you can edit your itinerary or message your planner.Message planner
Quote results · zero matchesNo buses match — but we have ideasTry a different date, broaden your search, or let a planner hunt for you.Talk to a planner
Quote results · filtered to zeroNo buses match those filtersLoosen a filter to see more options.Clear all filters
Team Account · no teammatesYou're flying solo for nowInvite teammates so their trips roll up to your account.Invite teammates
Team Account · no past invoicesInvoices arrive monthly on the 1stYour next consolidated invoice will appear here on Jun 1.Download W-9
Saved quotes · expiredThis quote is older than 24 hoursPricing may have shifted. Refresh in one click — your trip details are preserved.Refresh quote
Reviews · no city-specific yetNo reviews from this city yetWe have 2,400 USC reviews nationwide. Showing the closest 3 below.

12.5  Loading & progress states

Per Nielsen's response-time research: < 0.1s feels instant, < 1s feels fluid, < 10s holds attention, > 10s needs progress + estimate.

DurationTreatmentCopyUSC application
< 300msNo indicatorForm-step transition · button-state change
300ms – 1sSubtle inline spinnerCard → results filter · save-quote write
1 – 3sSkeleton placeholderQuote results loading · Dashboard initial render
3 – 10sSpinner + status text"Finding buses for your dates…"First-time quote API call
> 10sProgress indicator + estimate + escape"This is taking longer than usual. Hang tight, or we can text you when it's ready."Complex multi-vehicle quote · operator availability check
Multi-step (quote builder)Stepper with done/active/pending states"Step 2 of 4 · Trip details"Quote builder progress · checkout
Live trackingMap updates on movement event (not interval)"ETA 11:24 AM · updating"Dashboard live trip view

12.6  Wireframe annotation key

Every wireframe annotation in this project (Section 07 Wireframes) uses these category prefixes so engineers can pattern-match implementation needs without re-reading the dossier.

ANNOTATION CATEGORIES · USC wireframe standard
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

// NAV      navigation pattern         e.g. "// NAV - Persistent header, 5 items"
// FORM     form interaction           e.g. "// FORM - Autosave every 30s · validate on blur"
// FEEDBACK system feedback           e.g. "// FEEDBACK - Toast 4s · top-right"
// ACTION   action pattern             e.g. "// ACTION - Confirm cancel · destructive"
// SOCIAL   social proof               e.g. "// SOCIAL - User count · live activity"
// SCARCITY real scarcity              e.g. "// SCARCITY - '23 buses available' · live data only"
// URGENCY  time-based                 e.g. "// URGENCY - 24h quote expiry · countdown"
// LOSS     loss-aversion frame        e.g. "// LOSS - 'Cancel by Jul 15 or balance auto-charges'"
// COMMIT   commitment escalator       e.g. "// COMMIT - Progress bar · start at 25%"
// CONTENT  static content placement   e.g. "// CONTENT - Hero copy block"
// LOADING  loading treatment          e.g. "// LOADING - Skeleton placeholder, 3 cards"
// ERROR    error state                e.g. "// ERROR - Inline validation, below field"
// EMPTY    empty state                e.g. "// EMPTY - 'No trips yet' · CTA to quote builder"
// A11Y     accessibility note         e.g. "// A11Y - aria-live=polite on ETA · 44px tap targets"
// SEO      SEO-specific spec          e.g. "// SEO - H1 contains primary keyword · LocalBusiness schema"

12.7  Pattern selection by user goal

User goalPersonaPatterns committedBehavioral principle
Get an instant quoteMayaMulti-step wizard (4 steps) · autosave · inline validation · smart defaults · live summary panelReduce Fogg ability friction
Compare busesMayaSortable grid · filter rail · 3-card compare view · social proof on each card (operator ratings)Cialdini Social Proof + Kahneman Anchoring
Complete checkoutMaya · DavidSingle page · Apple/Google Pay above card · sticky summary · loss-aversion frame on cancel windowCialdini Commitment + Kahneman Loss Aversion
Return to saved quoteMayaSMS magic link · pre-filled state · 24h expiry with refresh pathEyal Investment (saved data → future trigger)
Onboard Team AccountDavidProgressive profiling · trust badges (FEMA/GSA/F500) · MSA download · SSO setup · invite teammatesCialdini Authority + Commitment
Convert on SEO city pageRobinPlain-English H1 · transparent pricing table · real reviews · phone-number triple-placement · inline quote builderCialdini Liking + Reciprocity + Fogg Spark
Track trip on the dayMaya · RobinStatus-first dashboard · live map · driver SMS · share-link · "Talk to USC now" escapeNorman Feedback + Eyal Variable Reward (Hunt)
Rebook after a good tripAllPost-trip rebook CTA · referral-credit · Team Account upsell at peak satisfactionKahneman peak-end rule + Eyal Investment
Chunk 12 verdict · patterns locked, ready for atomic inventory

Patterns are now spec-grade: canonical CTA copy, form-field microcopy, full error library, 8 empty states, 7 loading-state treatments, annotation key, and pattern-to-goal mapping. Next chunk converts those patterns into Brad Frost's atomic-design inventory — atoms → molecules → organisms → templates → pages — the contract the dev team builds against.

Section 13 · Atomic Design Inventory · Brad Frost

The component hierarchy the dev team builds against — atoms, molecules, organisms, templates, pages.

Frost's mantra: create design systems, not pages. Below is the v1 inventory in five tiers. Atoms are the indivisible UI elements; molecules combine atoms into single-purpose units; organisms compose molecules into recognizable interface sections; templates lay organisms onto a grid; pages are template instances with real content. Every wireframe (§ 07) and hi-fi (§ 08) traces back to a specific atom or molecule below.

Framework · Atomic Design Methodology — Five-tier hierarchy inspired by chemistry. Build bottom-up, document bottom-up, but design in both directions simultaneously. The hierarchy is a mental model, not a sequential workflow. Source: ATOMIC-DESIGN.md §§ 1–6 — Brad Frost, "Atomic Design," 2016 (ISBN 978-0-9982966-0-9). Full book free at atomicdesign.bradfrost.com.

13.1  Naming convention & design tokens

Frost's standard: [category]-[name]-[variant]-[state]. Maps directly to component props in React / Vue / Svelte and to CSS classes if the team picks utility-first instead of component-first.

NAMING · USC component standard
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

btn-primary-default      // red CTA, idle
btn-primary-hover        // red CTA on hover · darker shade + 1px translate
btn-secondary-disabled   // ghost button when action unavailable
input-text-error         // text input with invalid value
card-vehicle-selected    // quote-result card with active selection
nav-link-active          // main nav item on current section
card-vehicle-loading     // skeleton placeholder during fetch

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
DESIGN TOKENS · canonical names (Salesforce-compatible)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

--usc-color-navy-900   #061a30  primary dark surface
--usc-color-navy-800   #0b2a4a  primary brand
--usc-color-red-600    #c2271f  primary CTA
--usc-color-amber      #f3b042  live badge · in-progress
--usc-color-ok         #1b8a4a  success states
--usc-color-paper      #f7f4ec  cream background (Dir A)

--usc-space-1..10      4·8·12·16·24·32·48·64·96·128
--usc-radius-sm/md/lg  4 · 8 · 14
--usc-elev-1/2/3       subtle · card · floating
--usc-font-display     "Söhne", "Inter", system-ui
--usc-font-body        same
--usc-font-mono        "JetBrains Mono", ui-monospace

13.2  Atoms · the indivisible elements

12 atoms cover the v1 product. Each one has all states documented per Frost's atom-spec template.

AtomVariantsStatesA11y
Buttonprimary · secondary · ghost · danger · icon-onlydefault · hover · focus-visible · active · disabled · loading≥44px tap · 4.5:1 contrast · aria-busy when loading · focus ring 2px brand-red offset
Inputtext · email · phone · date · number · passwordempty · focused · filled · valid · invalid · disabled · readonlyLabel above (never placeholder-only) · aria-invalid + aria-describedby for error · 16px min font (no iOS zoom)
Labelfield-label · caption · tag · eyebrowdefault · required (with *)<label> with explicit for= ref
Iconsystem (24px) · feature (32px) · brand markdefault · active · disabledDecorative: aria-hidden="true" · Meaningful: aria-label
Badgestatus (live · pending · done) · count · tagdefault · pulsing (live)Color + icon + text · never color-only
Checkboxdefault · in-cardunchecked · checked · indeterminate · disabled · errorNative <input type=checkbox> · 24×24 hitbox
Radiodefault · tile (large picker)unselected · selected · disabledGroup with role="radiogroup" + aria-labelledby
Stepperpassenger · luggagemin · in-range · maxButtons disable at bounds · current value aria-live="polite"
Avatarimage · initials · placeholderdefaultImage: alt with name · Initials: aria-label
Dividerhorizontal · vertical · with-labeldefaultrole="separator"
Spinnersm (button) · md (inline) · lg (page)spinningaria-live="polite" · accompanying text label
Linktext · nav · breadcrumb · footerdefault · hover · visited · focusUnderline on hover · focus ring 2px · 4.5:1 contrast

13.3  Molecules · single-purpose combinations

MoleculeCompositionUsed in
Form fieldLabel + Input + Helper-text + Error-textQuote builder · Checkout · Account · Operator portal
Tab group3–4 Buttons in pill container with active indicatorQuote builder (trip type) · Dashboard sections
Search fieldInput with autocomplete + Icon + Loading spinnerPickup / Destination autocomplete (Mapbox-backed)
Stepper progressNumbered circles + Labels + Separator linesQuote builder header (4 steps) · Checkout (1 step)
Trust badge rowSeal icons + Labels (DOT · GSA · FEMA · etc.)Trust strip · Hero · Footer · About
Operator credentialsAvatar/photo + Name + Rating stars + Trip count + On-time %Vehicle card · Operator profile · Dashboard
Price blockLabel + Amount + Per-unit caption + Strike-through (optional)Vehicle card · Pricing table · Order summary
Vehicle cardPhoto + Operator molecule + Capacity badge + Amenity chips + Price block + CTAQuote results grid · Featured-bus rotators
Live trip statusMap preview + ETA + Driver avatar + Action buttonsDashboard live tracking · share-link page
Chip filterPill button + Remove (×) + Count badgeQuote results filter rail · Amenity selector
ToastIcon + Message + Dismiss buttonSave confirmations · Error feedback · Tracking updates
Inline alertIcon + Title + Body + ActionExpedited-fee warning · Cancellation deadlines · Trip Guarantee callouts
Review cardStars + Quote text + Avatar + Name/role/locationCity pages · Trip-type pages · Reviews page · Hero
Stat blockBig number + Label + Change indicator (optional)About hero · Operator portal dashboard · Federal landing
Pricing rowVehicle icon + Capacity + Price (hourly · day · per-mile)City pages · Pricing page · Comparison table
Phone CTA block"24/7" badge + Phone number (clickable) + Sub-labelPersistent trust bar · Footer · Mobile nav

13.4  Organisms · recognizable interface sections

OrganismComposition (key children)Responsive behavior
Site headerLogo · Nav-link × 5 · Phone CTA block · Primary buttonMobile: collapses to hamburger + Logo + Phone + CTA. Tablet: condensed nav. Desktop: full row.
Persistent trust barTrip Guarantee message + DOT/star badges + Phone CTAMobile: collapses to "Trip Guarantee · 110% back" + phone. Wraps on small screens.
Hero · quote builderH1 + Lede + CTAs + Mini-stats row · Quote-card molecule on the rightMobile: stack form-first (Maya thumb-first). Desktop: 7/5 column split.
5-CTA differentiator strip5 × diff-card (num + heading + body + link)Mobile: stack 1-col. Tablet: 2-col. Desktop: 5-col equal-width.
Trip Guarantee panelEyebrow + H2 + Body + 4× Promise rows (icon + heading + body) + CTAMobile: stacked. Desktop: 2-col split.
Quote-builder organismStepper + StepType / StepWhere / StepGroup / StepWho panels + Nav-controls + SummaryMobile: full-bleed step, sticky bottom nav, summary collapses to bar. Desktop: 2-col with sticky summary panel.
Quote-results gridFilter rail + Sort/Compare bar + Vehicle-card × N + Trip Guarantee callout + Talk-to-planner linkMobile: bottom-sheet filters, single-column cards. Desktop: left rail + 2-up cards.
Trip-details editorVehicle summary + Itinerary editor (drag-reorder) + Amenities row + Sticky order summaryMobile: stacked, summary at bottom. Desktop: 2-col with sticky right rail.
Checkout organismContact fieldset + Payment fieldset + Day-of-trip fieldset + Order summaryMobile: single column, summary above form on small screens. Desktop: 2-col with sticky summary.
Dashboard hero"Next trip" status block + Map preview + Action buttons (Edit · Roster · Invoice · Cancel)Mobile: stacked, map below status. Desktop: side-by-side.
Live tracking surfaceMap (3:2 aspect) + ETA banner + Message-driver action + "Talk to USC now" escapeMobile: full-width map + sticky action bar. Desktop: map + side panel.
Reviews wallEyebrow + H2 + Review-card × 3 (filterable)Mobile: horizontal scroll. Desktop: 3-col grid.
Solutions grid9 sol-cards (image-slot + title + meta + arrow)Mobile: 1-col. Tablet: 2-col. Desktop: 3-col.
Logo wall12 logo-tiles (3:1.2 aspect)Mobile: 2-col. Tablet: 3-col. Desktop: 6-col.
Pricing tableHeaders + Pricing-row × N + FootnoteMobile: horizontal scroll or stacked card per vehicle type. Desktop: full table.
Comparison table (vs CharterUP)Feature column + USC column + Competitor column · all with check/x cellsMobile: stacked feature-by-feature. Desktop: 3-col.
Site footerBrand block + 4 link columns + Legal row + DOT/MC + Logo wall referenceMobile: 1-col stack. Tablet: 2-col. Desktop: 5-col.
Operator-portal dashboardKPI row (4 stat blocks) + New requests queue + Live multi-trip map + Fleet/drivers/invoice railMobile: stacked. Desktop: 2-col with right rail.

13.5  Templates · page-level layouts

Eleven v1 templates. Each one corresponds 1:1 with a wireframe screen in Section 07. Grid system: 12-col desktop / 4-col mobile, 24px gutters, 1440px max content width, 32px page margins.

TemplateWireframe refKey organisms
HomepageWF-01Trust bar · Header · Hero · 5-CTA strip · Solutions grid · Trip Guarantee panel · Logo wall · Reviews · Final CTA · Footer
Quote builderWF-02Minimal nav · Stepper · Quote-builder organism · Live summary panel
Quote resultsWF-03Minimal nav · Trip-context bar · Filter rail · Results grid · Trip Guarantee callout · Talk-to-planner persistent
Trip detailsWF-04Minimal nav · Editor organism · Sticky order summary · Persistent help
CheckoutWF-05Minimal nav · Secure-checkout badge · Checkout organism · Order summary · Trip Guarantee reminder
Customer dashboardWF-06Account header · Dashboard hero · Pre-trip checklist · Planner block · Live tracking organism · Receipts rail · Account upsell
SEO city / route pageWF-07Trust bar · Header · SEO-H1 + lede · Inline quote builder (sticky desktop) · Local pricing table · Local-language body · Internal links · Reviews · FAQ · Footer
Trip-type landingWF-08Trust bar · Header · Hero photo + audience H1 · 3-step "how it works" · Pricing block · Reviews · Quote builder sidebar · Footer
Trust & AboutWF-09Header · Stat-led hero · Leadership grid · Trip Guarantee sidebar · Credentials block · Logo wall · Footer
Day-of-trip mobileWF-10Compact header · Live tracking organism · Pre-trip / en-route / post-trip states · Talk-to-USC escape
Operator portalWF-11Operator nav · KPI row · New-requests queue · Active-trips map · Fleet/drivers/invoices rail

13.6  Pages · template instances with real content

Per Frost: pages aren't typically specified in the design system — they're the stress test of the template. The hi-fi prototypes already on file demonstrate this: each one is a Page instance of a Template above, with real (or composite-real) content stressing the layout.

Page (hi-fi prototype)Template usedStress test demonstrated
Homepage · Direction AHomepage templateLong copy on Trip Guarantee, real F500 logo list, 9 solutions, persistent trust elements without crowding
Homepage · Direction BHomepage templateSame template, denser content treatment + live "23 buses near you" indicator + side-by-side comparison table
Quote Builder · interactiveQuote builder templateAll 4 steps, validation states, edge cases (<48h warning), save-quote modal, mobile-first responsive

Additional pages (Quote Results, Trip Details, Checkout, Dashboard, SEO city) are scheduled for the design sprint following dossier approval; templates and organisms are spec'd above and ready to populate.

13.7  Component dependency map · build order

Frost: build bottom-up. Engineering should commit atoms in week 1, molecules in week 2, organisms in weeks 3–4, templates compose in weeks 5–8. Pages assemble continuously across sprints.

flowchart TB subgraph atoms["TIER 1 · Atoms (Week 1)"] direction LR A1[Button] & A2[Input] & A3[Label] & A4[Icon] & A5[Badge] & A6[Stepper] & A7[Avatar] & A8[Link] end subgraph mol["TIER 2 · Molecules (Week 2)"] direction LR M1[Form-field] & M2[Tab-group] & M3[Vehicle-card] M4[Operator-creds] & M5[Trust-badge-row] & M6[Toast] M7[Review-card] & M8[Live-trip-status] & M9[Price-block] end subgraph org["TIER 3 · Organisms (Weeks 3-4)"] direction LR O1[Site-header] & O2[Hero-quote-builder] & O3[Quote-results-grid] O4[Checkout-organism] & O5[Live-tracking-surface] & O6[Site-footer] end subgraph tmpl["TIER 4 · Templates (Weeks 5-8)"] direction LR T1[Homepage] & T2[Quote-flow] & T3[Dashboard] & T4[SEO-city] end subgraph pg["TIER 5 · Pages (Weeks 5-14, continuous)"] direction LR P1[Homepage A] & P2[Homepage B] & P3[NYC city page] & P4[Dashboard live] end atoms --> mol mol --> org org --> tmpl tmpl --> pg classDef phase fill:#fff,stroke:#0b2a4a,color:#0b2a4a; class A1,A2,A3,A4,A5,A6,A7,A8,M1,M2,M3,M4,M5,M6,M7,M8,M9,O1,O2,O3,O4,O5,O6,T1,T2,T3,T4,P1,P2,P3,P4 phase

13.8  Spec handoff checklist

Per Frost's checklist — verify completeness at every tier before code commit.

Atoms · 12 components

  • ✓ All variants identified per atom
  • ✓ All states documented (default · hover · focus · active · disabled · error · loading)
  • ✓ Exact measurements (px) committed via design tokens
  • ✓ Color tokens assigned (no hex literals in components)
  • ✓ Typography specs (font · size · weight · line-height)
  • ✓ A11y requirements (ARIA · keyboard · 44px tap target)

Molecules · 16 components

  • ✓ Atom composition listed explicitly
  • ✓ Layout (direction · gap · alignment) committed
  • ✓ Variants with composition differences documented
  • ✓ Interactive behavior described per molecule
  • ✓ Context-independence verified (works in header AND sidebar)

Organisms · 18 components

  • ✓ Component hierarchy tree documented (above)
  • ✓ Layout system specified (grid / flex)
  • ✓ Responsive breakpoint changes per organism
  • ✓ Section-level states (loading / error / empty) described

Templates · 11 templates

  • ✓ Page grid system defined (12-col desktop / 4-col mobile)
  • ✓ Content-area constraints specified (1440px max content)
  • ✓ Organism placement documented per template (above)
  • ✓ Responsive layout variations per breakpoint per template
Design system stewardship · post-launch

Per Frost (Chapter 5): design systems decay without active stewardship. The v1 ship is not the end. Recommendation: assign one engineer + one designer to system ownership starting at launch. Deprecate components explicitly when they're replaced. Evaluate every new pattern proposal against "can an existing component handle this?" before adding to the inventory.

Chunk 13 verdict · component inventory locked, ready for handoff

12 atoms · 16 molecules · 18 organisms · 11 templates · pages-continuous. Naming convention committed, design tokens named, build order sequenced by week, handoff checklist completed. Next (final) chunk produces the Design Spec + Developer Deployment Code per HANDOFF-TEMPLATES.md — the document the front-end team pastes into their planning ticket.

Section 14 · Design Spec + Developer Deployment Code

The copy-paste handoff brief — what the front-end team picks up at sprint zero.

Final convergence of the Deliver phase. The Design Specification below collapses Sections 12–13 into a single document the developer reads once. The Developer Deployment Code is the literal text to paste into a Frontend Developer skill conversation to begin implementation. Together they're the contract between this dossier and the codebase.

Framework · Design Specification + Developer Deployment Code — Two canonical handoff templates. The full Design Spec covers tokens · type · spacing · component states · accessibility · breakpoints · interactions · atomic inventory. The Deployment Code is the brief format optimized for handoff to an implementation team / skill. Source: HANDOFF-TEMPLATES.md — operational templates ([AGGREGATED] from skill design + Frost atomic-spec checklist).

14.1  Design Specification · US Coachways v1

# DESIGN SPECIFICATION · US Coachways · v1.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

## 1. COLOR PALETTE

| Token                  | Hex      | Usage                                  |
|------------------------|----------|----------------------------------------|
| --usc-color-navy-900   | #061a30  | Primary surface, dark mode             |
| --usc-color-navy-800   | #0b2a4a  | Primary brand                          |
| --usc-color-navy-600   | #1b4fa8  | Link, active state                     |
| --usc-color-blue-500   | #2c6fd1  | Accent, info                           |
| --usc-color-red-700    | #9a1e22  | Danger, sale, hover-pressed            |
| --usc-color-red-600    | #c2271f  | Primary CTA                            |
| --usc-color-red-500    | #dc2f25  | Hover CTA                              |
| --usc-color-amber      | #f3b042  | Live badge, in-progress                |
| --usc-color-ok         | #1b8a4a  | Success states                         |
| --usc-color-warn       | #d97706  | Warning states                         |
| --usc-color-danger     | #c2271f  | Error states (= red-600)               |
| --usc-color-ink-900    | #11161f  | Primary text                           |
| --usc-color-ink-500    | #5a6273  | Secondary text                         |
| --usc-color-ink-100    | #e4e7ee  | Borders, dividers                      |
| --usc-color-paper      | #f7f4ec  | Cream background (Dir A)               |
| --usc-color-white      | #ffffff  | Surface background (Dir B)             |

## 2. TYPOGRAPHY

Font pairing: Söhne (display + body) + JetBrains Mono (code/labels)
Fallback stack: system-ui, -apple-system, sans-serif

| Element  | Family       | Size (mobile / desktop) | Weight | Line-height |
|----------|--------------|-------------------------|--------|-------------|
| Display  | Söhne        | 44px / 84px             | 700    | 0.98        |
| H1       | Söhne        | 34px / 56px             | 700    | 1.02        |
| H2       | Söhne        | 26px / 38px             | 600    | 1.10        |
| H3       | Söhne        | 22px / 28px             | 600    | 1.20        |
| Body-lg  | Söhne        | 17px / 19px             | 400    | 1.50        |
| Body-md  | Söhne        | 15px / 16px             | 400    | 1.55        |
| Body-sm  | Söhne        | 13px / 14px             | 400    | 1.50        |
| Caption  | Söhne        | 12px / 12px             | 500    | 1.40        |
| Mono     | JetBrains    | 12px / 13px             | 400    | 1.50        |

## 3. SPACING SYSTEM  (4px base)

| Token        | Value | Usage                              |
|--------------|-------|------------------------------------|
| --space-1    | 4px   | Hairline · icon-to-text            |
| --space-2    | 8px   | Default internal                   |
| --space-3    | 12px  | Related element gaps               |
| --space-4    | 16px  | Component padding (default)        |
| --space-5    | 24px  | Section gaps                       |
| --space-6    | 32px  | Major section breaks               |
| --space-7    | 48px  | Page-section margins               |
| --space-8    | 64px  | Hero spacing                       |
| --space-9    | 96px  | Page padding (desktop)             |
| --space-10   | 128px | Reserved for extreme layouts       |

## 4. RADII & ELEVATION

| Token        | Value                                          |
|--------------|------------------------------------------------|
| --radius-sm  | 4px  (inputs · chips)                          |
| --radius-md  | 8px  (buttons · cards)                         |
| --radius-lg  | 14px (modals · primary cards)                  |
| --radius-pill| 999px (chips · phone badges)                   |
| --elev-1     | 0 1px 2px rgba(11,42,74,.08)                   |
| --elev-2     | 0 4px 12px -2px rgba(11,42,74,.12)             |
| --elev-3     | 0 12px 32px -8px rgba(11,42,74,.18)            |

## 5. COMPONENT STATES

### Button (btn-*)
| State    | Background          | Text   | Border / Ring                        |
|----------|---------------------|--------|--------------------------------------|
| Default  | --color-red-600     | white  | none                                 |
| Hover    | --color-red-500     | white  | translateY(-1px) + elev-2 red shadow |
| Active   | --color-red-700     | white  | translateY(0)                        |
| Focus    | --color-red-600     | white  | 2px outline --color-red-500 offset 2 |
| Disabled | opacity .4          | white  | cursor: not-allowed                  |
| Loading  | --color-red-600     | white  | spinner replaces label · aria-busy   |

### Input (input-*)
| State    | Background  | Border                | Label color           |
|----------|-------------|------------------------|-----------------------|
| Default  | --paper-2   | 1px --ink-100          | --ink-500             |
| Focus    | white       | 1px --navy-700         | --navy-700            |
| Valid    | white       | 1px --color-ok         | --ink-500 + check icon|
| Error    | white       | 1px --color-danger     | --color-danger        |
| Disabled | --ink-100   | 1px --ink-100          | --ink-300             |

### Vehicle card (card-vehicle-*)
| State     | Treatment                                           |
|-----------|-----------------------------------------------------|
| Default   | --ink-100 border · --radius-md · --elev-1           |
| Hover     | --navy-700 border · --elev-2                        |
| Selected  | --navy-900 border 2px · checkmark badge top-right   |
| Unavail.  | opacity .5 · "Currently unavailable" overlay        |
| Loading   | Skeleton placeholder (same dimensions)              |

## 6. ACCESSIBILITY REQUIREMENTS

| Requirement              | Specification                                      |
|--------------------------|----------------------------------------------------|
| Standard                 | WCAG 2.2 AA on every shipped surface               |
| Contrast (body)          | ≥ 4.5:1                                            |
| Contrast (large / UI)    | ≥ 3:1                                              |
| Tap target (mobile)      | ≥ 44 × 44 px                                       |
| Click target (desktop)   | ≥ 32 × 32 px with sufficient spacing               |
| Focus ring               | 2px solid --color-red-500, offset 2px              |
| Landmark structure       | header · main · nav · footer required              |
| Skip-to-content link     | First focusable element on every page              |
| prefers-reduced-motion   | Honored: no parallax · no auto-carousel · no spin  |
| prefers-color-scheme     | Dark mode not v1 (light only)                      |
| Color-only signals       | Never · always paired with icon + text             |
| Form errors              | text + icon + aria-invalid + aria-describedby      |
| Live regions             | aria-live="polite" for ETA · "assertive" for errors|
| Images                   | All meaningful images have alt · decorative alt="" |
| Keyboard navigation      | Every interactive element reachable + visible focus|

## 7. RESPONSIVE BREAKPOINTS  (mobile-first)

| Breakpoint  | Min-width | Layout intent                          |
|-------------|-----------|----------------------------------------|
| (default)   | 0         | Phone portrait                         |
| --bp-sm     | 480px     | Large phone / small tablet portrait    |
| --bp-md     | 768px     | Tablet portrait                        |
| --bp-lg     | 1024px    | Tablet landscape / small laptop        |
| --bp-xl     | 1280px    | Desktop · primary design width         |
| --bp-2xl    | 1536px    | Wide desktop · content max 1440px      |

## 8. INTERACTIONS

| Element             | Trigger        | Response                                       |
|---------------------|----------------|------------------------------------------------|
| Primary button      | Hover          | Background → red-500 · translateY(-1px)        |
| Primary button      | Click          | scale(0.98) · 100ms                            |
| Card                | Hover          | --elev-2 shadow · translateY(-2px) · 140ms     |
| Input               | Focus          | Border transition --ink-100 → --navy-700 200ms |
| Step transition     | Forward / back | Fade 120ms · honor prefers-reduced-motion      |
| Modal open / close  | Trigger        | Fade backdrop 150ms + scale modal 0.96 → 1     |
| Live tracking map   | GPS update     | Bus icon translates with 800ms ease            |
| Toast               | Trigger        | Slide-in from bottom · auto-dismiss 4000ms     |
| Quote-builder step  | "Continue"     | Validate → save state → fade next panel        |

## 9. ATOMIC COMPONENT INVENTORY

ATOMS (12):
  Button · Input · Label · Icon · Badge · Checkbox · Radio
  Stepper · Avatar · Divider · Spinner · Link

MOLECULES (16):
  Form-field · Tab-group · Search-field · Stepper-progress
  Trust-badge-row · Operator-credentials · Price-block · Vehicle-card
  Live-trip-status · Chip-filter · Toast · Inline-alert
  Review-card · Stat-block · Pricing-row · Phone-CTA-block

ORGANISMS (18):
  Site-header · Persistent-trust-bar · Hero-quote-builder
  5-CTA-differentiator-strip · Trip-Guarantee-panel · Quote-builder-organism
  Quote-results-grid · Trip-details-editor · Checkout-organism
  Dashboard-hero · Live-tracking-surface · Reviews-wall
  Solutions-grid · Logo-wall · Pricing-table · Comparison-table
  Site-footer · Operator-portal-dashboard

TEMPLATES (11):
  Homepage · Quote-builder · Quote-results · Trip-details · Checkout
  Customer-dashboard · SEO-city-or-route · Trip-type-landing
  Trust-About · Day-of-trip-mobile · Operator-portal

PAGES (continuous):
  Hi-fi prototypes already on file demonstrate template instances.

14.2  Developer Deployment Code · copy-paste handoff

The block below is the canonical handoff brief. Paste into a new conversation with the Frontend Developer skill (or hand to any front-end team). The developer has creative freedom within these structural constraints.

---
DEVELOPER DEPLOYMENT CODE · US COACHWAYS v1
---

You are the Developer. I am the Designer.

Here are the approved wireframes, design tokens, and component specifications.
Implement this in [STACK-AGNOSTIC · recommend Next.js (React) + Tailwind +
headless CMS · see Hosting matrix in Strategy Book § 10] using clean,
component-based code organized by Frost's atomic hierarchy.

## Design Context
US Coachways rebuild · charter-bus brokerage moving from RFQ-only to
instant-quote marketplace with the only public Trip Guarantee in the
industry. Mobile + desktop parity; mobile is the larger paid-traffic share.
14-week target to v1 launch (phased roadmap in Strategy Book § 12).

## User Flow Reference
Primary acquisition flow (Maya · the Coordinator · 42% of traffic):
  SEO landing or paid search →
  Hero quote builder (4 steps, ~60 sec) →
  Quote results (3-6 buses with operator credentials) →
  Trip details editor →
  Single-page checkout (10% deposit) →
  Customer dashboard with live tracking T-2h →
  Post-trip rebook + Team Account upsell

Three personas: Maya (Coordinator · primary), David (Procurement · LTV),
Robin (Group Lead · SEO volume). Persona-tag on every component.

## Design Tokens

### Colors
--color-navy-900: #061a30   (primary surface, dark)
--color-navy-800: #0b2a4a   (primary brand)
--color-navy-600: #1b4fa8   (link, active)
--color-blue-500: #2c6fd1   (accent, info)
--color-red-600:  #c2271f   (primary CTA)
--color-red-500:  #dc2f25   (CTA hover)
--color-amber:    #f3b042   (live badge)
--color-ok:       #1b8a4a   (success)
--color-warn:     #d97706   (warning)
--color-danger:   #c2271f   (error · = red-600)
--color-ink-900:  #11161f   (text)
--color-ink-500:  #5a6273   (text-secondary)
--color-ink-100:  #e4e7ee   (border)
--color-paper:    #f7f4ec   (cream bg · Direction A)
--color-white:    #ffffff   (surface · Direction B)

### Typography
Font family: "Söhne", -apple-system, system-ui, sans-serif
Mono: "JetBrains Mono", ui-monospace, monospace
Display (hero): 84px / 700 / 0.98 (desktop); 44px / 700 (mobile)
H1: 56px / 700 / 1.02 (desktop); 34px / 700 (mobile)
H2: 38px / 600 / 1.10 (desktop); 26px / 600 (mobile)
Body: 16px / 400 / 1.55 (desktop); 15px / 400 (mobile)
Caption: 12px / 500 / 1.40

### Spacing (4px base)
4 · 8 · 12 · 16 · 24 · 32 · 48 · 64 · 96 · 128

### Radii
sm 4px · md 8px · lg 14px · pill 999px

### Elevation
elev-1: 0 1px 2px rgba(11,42,74,.08)
elev-2: 0 4px 12px -2px rgba(11,42,74,.12)
elev-3: 0 12px 32px -8px rgba(11,42,74,.18)

## Component Requirements (12 atoms · 16 molecules · 18 organisms)

Full inventory in Dossier § 13. Highest-priority for sprint 1:
- Button (5 variants × 6 states)
- Input (6 variants × 7 states)
- Form-field molecule (label + input + helper + error)
- Vehicle-card molecule
- Quote-builder organism (4-step wizard with stepper, autosave, sticky summary)
- Site-header organism (sticky · trust-bar above · CTA right)

Build order: atoms wk1 → molecules wk2 → organisms wks3-4 →
templates wks5-8 → pages continuous.

## Responsive Behavior
Mobile-first; min-width breakpoints only.
sm 480 · md 768 · lg 1024 · xl 1280 · 2xl 1536
Content max-width: 1440px (centered, 32px page margins).
Touch targets: 44 × 44 px minimum on mobile.

## Accessibility Checklist
- [ ] WCAG 2.2 AA on every shipped surface
- [ ] 4.5:1 contrast for body text · 3:1 for large & UI
- [ ] 44 × 44 px tap targets on mobile · 32 × 32 px desktop
- [ ] Visible focus-visible ring (2px solid --color-red-500, offset 2)
- [ ] Skip-to-content link first focusable on every page
- [ ] Semantic landmarks (header · main · nav · footer)
- [ ] prefers-reduced-motion respected
- [ ] Forms: label above input · errors with text + icon + aria
- [ ] aria-live="polite" on ETA / status regions
- [ ] aria-live="assertive" for error toasts
- [ ] Color never the only signal
- [ ] All images have alt · decorative alt=""

## Implementation Notes

PERFORMANCE (non-negotiable for SEO surfaces):
- LCP < 1.8s on mobile 4G
- INP < 200ms
- CLS < 0.05
- HTML < 50KB compressed · critical CSS inlined
- AVIF + WebP fallback · srcset for 4 breakpoints
- Quote-builder hydrates lazily; initial form is plain HTML

INTEGRATIONS:
- Salesforce REST API (lead · contact · opportunity)
- SubOut.com API (inventory · pricing · operator data)
- Stripe (deposit · balance · refunds · 3DS2)
- Twilio (SMS magic links · trip-day status)
- Mapbox (autocomplete · live tracking)
- Segment (analytics → Salesforce + Mixpanel)
- Sanity or Contentful (city/route/trip-type content)

ANALYTICS:
- Instrument every P0 story's conversion event (see Dossier § 09)
- North-star: cost-per-booked-trip from paid (weekly)
- Funnels: hero → quote → results → trip-details → checkout → confirmed

OUT-OF-V1 (firewall · see Dossier § 8.4):
- Native mobile apps (web-responsive only in v1)
- AI trip planner
- International / multi-language
- Operator ownership / fleet acquisition
- CRM rebuild (Salesforce stays as system of record)

---
END DEPLOYMENT CODE
---

14.3  Quick Spec · printable wallet card

Lightweight version for the team's wall or sprint kickoff. Same numbers, fewer words.

# QUICK SPEC · US Coachways v1

## Tokens
Primary CTA: #c2271f · Brand: #0b2a4a · Accent: #2c6fd1 · Error: #c2271f
Font: Söhne · Base: 16px · Mono: JetBrains
Spacing 4px base: 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64 · 96

## Components (high-level)
Button: 5 variants × 6 states · 44px min height
Input: label-above · validate on blur · 16px min font
Vehicle card: photo + operator + price + CTA · hover lifts 2px
Quote builder: 4 steps · autosave · sticky summary panel
Dashboard: status-first · live map · driver chat · share-link
Trust bar: persistent · Trip Guarantee + phone + DOT/MC

## States
Default → Hover → Focus-visible → Active → Disabled → Loading
Inputs add: Valid → Invalid

## A11y
Contrast 4.5:1 · Tap target 44px · Focus visible 2px red ring
prefers-reduced-motion honored · aria-live for ETAs

## Responsive
Mobile-first · 480 · 768 · 1024 · 1280 · 1536
Content max 1440px centered

## North-star metric
↓ cost-per-booked-trip from paid acquisition (weekly).
If new homepage + quote builder doesn't materially move this by Week 5,
stop and re-diagnose before continuing.

14.4  Final verdict · dossier complete

UX Dossier · v1.0 · 14 / 14 sections complete

The Flow Strategist work is done. The Wireframe Architect work is done. The Spec Engineer work is done. Three personas locked, eight P0 stories specified, every Nielsen heuristic cleared, every behavioral principle mapped, every component named. The dossier is the contract. The wireframes are the blueprint. The hi-fi is the visual reference. The Deployment Code is the brief. Build the thing.

What ships with v1

  • Homepage · 2 visual directions (A or B picked at design review)
  • Quote builder · 4-step instant pricing
  • Quote results · operator-detail grid
  • Trip details + Single-page checkout
  • Customer dashboard + live tracking
  • Team Account v1 (recurring shuttles)
  • 9 trip-type landing pages
  • 250 programmatic city pages · 500 route pages
  • 3 comparison pages (vs CharterUP / vs GoGo / vs local)
  • Trip Guarantee policy page
  • Refreshed operator portal (SubOut.com)

Two-week validation sprint (insert before code freeze)

  • 5–8 Maya interviews · validate 60-sec quote promise
  • 3–5 David interviews · validate self-serve appetite (Assumption 2)
  • 5+ Robin intercepts on competitor city pages · test trust-signal hierarchy
  • Run heuristic re-eval with 2 additional independent evaluators
  • 5-second test on Hi-fi A vs. trust-band-collapsed variant
  • Trip Guarantee SLA copy comprehension test

What ships in v1.5 / v2 (parked)

  • Split-payment / collect-from-group (Robin outlier)
  • Native mobile app
  • AI trip planner (natural-language → fleet)
  • Operator self-onboarding
  • Multi-language (Spanish first)
  • Referral-credit program
  • Procurement RFP marketplace (David enterprise upsell)
  • Federal / disaster-relief micro-site (Gov vertical)

"I do not decorate. I architect decisions.
I do not guess user needs. I map their jobs.
I do not hand off ambiguity. I deliver specifications.
Every wireframe is a hypothesis. Every spec is a contract."

The Designer's Oath · UX Designer skill


UX Dossier · US Coachways · May 2026 · 14 sections · 9 reference frameworks · 3 personas · 8 P0 stories · 47 components
Companion artifacts: Strategy book · Wireframes (11 screens) · Hi-fi Direction A · Hi-fi Direction B · Interactive quote builder