# The three axes of openness

> Companion to [`scratchpad.md`](scratchpad.md). Takes the 100 open-ended scenarios
> and categorizes them along three orthogonal axes, then maps each
> `(breadth × resolution)` combination to a distinct UI surface.

Each scenario sits at a coordinate `(breadth, resolution, anchor)`. The
coordinate tells you what UI it needs.

---

## Axis 1: Breadth — how many dimensions are open, and how wide

| Tier | Description | Example scenarios |
|---|---|---|
| **Pinhole** | One dimension flex, narrow range (≤ 1–2 weeks, or ≤ 5 candidate days) | #1 "cheapest day Nov 22–27" • #25 "Thu–Sun bracket" |
| **Wide-axis** | One dimension flex, broad range or unbounded (any city, any month) | #26 "anywhere round-trip under $150" • #76 "$50 any city next 30 days" |
| **Compound** | 2+ dimensions flex simultaneously | #48 "$80, any weekend, next 60 days, anywhere from DC" • #51 "August open, $300, 3-city loop" |
| **Conditional** | Locked outbound, but the *return* or *sequence* depends on an event the user can't fully predict | #61 "return when Mom's better" • #65 "return depends on callbacks" |

## Axis 2: Resolution mode — what shape of answer the user wants back

| Mode | What the user expects | UI implication |
|---|---|---|
| **One best** | A single answer (the cheapest day, the cheapest route) | Recommendation chip + price |
| **Ranked short list** | Top 3–10 dates/destinations | Compact list or carousel |
| **Wide browse** | Everything that fits the filter | Map, grid, or scrolling catalog |
| **Curated pick** | "Plan it for me" — system makes the choice | AI/editorial surface, single hero card |
| **Comparison** | Rank a *named* set of N candidates | Side-by-side compare widget |

## Axis 3: Anchor type — what's locked that defines the search

| Anchor | Locked dimension | Example scenarios |
|---|---|---|
| **Budget** | $ cap is rigid; date and destination yield | #48, #76, #38 ("$400 from Chicago") |
| **Calendar/event** | A date or window is non-negotiable | #2 (quinceañera), #91 (NCAA), #93 (Día de los Muertos) |
| **Person/relationship** | Visiting a specific person — they define destination, their calendar defines dates | #11 (girlfriend at UMass), #95 (visit son vs son visits) |
| **Mode/access** | Wheelchair-lift, Spanish-only, cash-payable, Amtrak-only — defines the universe | #43, #79, #82, #86, #88 |
| **Carrier/loyalty** | A specific operator's network is the search space | #38 (Vonlane only), #87, #41 (Brightline only) |
| **Origin only** | Everything else is open — pure exploration | #18 ("$80 free weekend from DC"), #62 (sabbatical month) |

---

## What the cross-cuts reveal

Combinations of `(breadth × resolution)` cluster into a small number of distinct
UI surfaces:

| Breadth × Resolution | Distinct UI affordance |
|---|---|
| Pinhole × One best | Price chart on a date picker |
| Pinhole × Comparison | Day-vs-day price strip |
| Wide-axis × Ranked list | Cheapest-N destinations carousel |
| Wide-axis × Wide browse | Map view with live fares (existing Explore) |
| Compound × Curated pick | "Plan it for me" AI surface |
| Compound × Wide browse | Faceted catalog with multi-axis filters |
| Conditional × Ranked list | Open-return picker with "return cheapest" recommendations |
| Comparison × One best | 2–3 city side-by-side rank widget |

**Anchor type drives entry-point design, not result-view design.** If the anchor
is accessibility, the entry point should be an accessibility filter promoted
to first-class. If it's a person ("visiting Mom"), the entry should be a "who"
field, not a "where" field. If it's budget, the entry should be a slider, not a
number input buried in advanced search.

---

## Scenarios that don't fit cleanly

Worth flagging because they stretch the model:

- **#84 (correctional admin)** — anchor is *institutional payment +
  non-digital recipient*, which isn't really a search axis at all. It's a
  workflow that needs to exist before search is useful.
- **#94 (Brightline + Acela combo with a flight in the middle)** —
  multi-modal sequence with a non-ground leg. Suggests the base page might need
  to acknowledge air at certain points, even if we don't sell it.

---

## Relationship to the six patterns

The patterns (A–F) in [`scratchpad.md`](scratchpad.md) are a single-axis
projection of this 3D model — primarily a cut along Axis 1 (breadth) with some
Axis 3 (anchor) mixed in for E and F. The 3-axis model is more useful for
*design decisions*; the six-pattern model is more useful for *describing the
scenario set to a stakeholder*. Keep both.

---

## Related work

- [`travel-dates.analysis.md`](travel-dates.analysis.md) — applies these three
  axes to the **date** dimension specifically, with current prototype coverage.
