{"id":19579,"plugin_id":"plugins_6a99cda269b0819180d65893e1de7811","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:15:39.065Z","digest":"302d6a552fee0b1d68a3f91001b58498a1f30e7932d5aee724a9df58084156ef","against":null,"payload":{"name":"ux-ui-psych","description":"Execute the UX/UI Psych choice architecture playbook (PLAY-002). Use when designing product menus, ordering flows, kiosk UX, upsell/cross-sell intercepts, or any conversion flow that needs behavioral nudges. Triggers on \"choice architecture,\" \"default selection,\" \"upsell intercept,\" \"cart cross-sell,\" \"decoy pricing,\" \"progress bar,\" \"nudge,\" \"contextual bandit,\" or when optimizing attachment rates and average check. Includes scoring functions, personalization rules, experimentation standards, accessibility specs, and dark-pattern guardrails.","included_files":[],"skill_md_contents":"---\nname: ux-ui-psych\ndescription: Execute the UX/UI Psych choice architecture playbook (PLAY-002). Use when designing product menus, ordering flows, kiosk UX, upsell/cross-sell intercepts, or any conversion flow that needs behavioral nudges. Triggers on \"choice architecture,\" \"default selection,\" \"upsell intercept,\" \"cart cross-sell,\" \"decoy pricing,\" \"progress bar,\" \"nudge,\" \"contextual bandit,\" or when optimizing attachment rates and average check. Includes scoring functions, personalization rules, experimentation standards, accessibility specs, and dark-pattern guardrails.\n---\n\n# UX/UI Psych — Choice Architecture (PLAY-002)\n\nDesign defaults and frames so the easiest path is also the most profitable and ethical path. Use proven nudges, honest anchors, real personalization, and experimentation that does not lie to you.\n\n## When NOT to Use\n\n- **Funnels without the volume to learn.** The experimentation standards here demand power analysis up front and contextual bandits by week 5. If your traffic cannot feed enough exposures to power the tests you design, the bandits never converge and the A/Bs lie to you. Ship the rules-based defaults and Slot-1 ladder, skip the learning loop until volume exists.\n- **No consent or privacy infrastructure.** Personalization runs on past orders, location, and context signals, and the ethics telemetry requires tracking opt-outs and consent symmetry. If you cannot capture consent properly, you cannot run this playbook ethically — and \"no pre-checked consent boxes\" is a hard rule, not a suggestion.\n- **Operations that cannot absorb demand shifts.** Every recipe here is kitchen-aware: station capacity guardrails, prep-time thresholds, a kill switch tied to SLA risk. If fulfillment cannot flex when upsells land, you are trading order accuracy and throughput for attachment rate. Fix capacity first.\n- **The pricing architecture itself is the problem.** This skill optimizes how customers select from a ladder that already exists. If the anchor, upgrades, and bundles are not designed yet, start with `fairness-anchor-ladder`.\n\n1. Preselect a sane default or bundle that most customers actually want.\n2. Lead with a premium anchor so the hero feels reasonably priced.\n3. Insert one interstitial upsell after add-to-cart and a second pass in cart.\n4. Rank suggestions with a scoring function, then let contextual bandits learn.\n5. Measure attachment, average check, and throughput weekly. Kill weak patterns.\n\n## Principles\n\n1. **Choice beats chance.** Choreograph decisions so the right path is the easy path.\n2. **Defaults decide.** Most users keep the preselected option if it is fair and clear.\n3. **Anchors frame reality.** Start with a premium reference, then present the target hero.\n4. **One nudge, not a maze.** Intercept once after add, and once in cart if the gap remains.\n5. **Progress pulls.** Steps and progress bars speed completion near the finish line.\n6. **Personal is powerful.** Day-part, weather, and order context matter more than slogans.\n7. **No trickery.** Study dark patterns so you never ship them.\n\n## Pattern Architecture\n\n### Frame\n- **Top of screen:** premium anchor, then target hero. Sticky mini-basket.\n- **Same frame selection:** upgrade chips directly under the hero. No second page.\n- **One-tap/two-click rule:** attach Slot-1 without leaving the flow.\n\n### Ladder\n- **Slot 1:** Sane add-on with highest attachment.\n- **Slot 2:** Signature upgrade with highest margin.\n- **Slot 3:** Novelty or seasonal.\n- **Bundles:** Hero plus Slot-1 at a small discount.\n\n## Scoring and Decisioning\n\n**Candidate set:** items not in cart that meet constraints (in stock, prep time under threshold, station capacity, allergen safe).\n\n**Score function:**\n```\nscore(item, context) =\n  w1·margin +\n  w2·attach_rate_by_context +\n  w3·popularity_now +\n  w4·personal_affinity +\n  w5·inventory_pressure\n  − penalties(allergens, station_load, SLA_risk)\n```\n\n**Learning:** contextual bandits to balance explore vs exploit. Start rules-based week 1, flip to bandits by week 5.\n\n**Signals:** day-part, weather, location, basket contents, past orders, promo calendar, inventory, station load.\n\n## Pattern Recipes\n\n### Intercept Upsell After Add-to-Cart\n- Title: \"Make it a meal?\"\n- Body: \"Add fries and a drink and save $1.20\"\n- Primary CTA: \"Add meal\"\n- Secondary CTA: \"No, continue\"\n- Show if: entrée lacks side or drink, kitchen load under threshold, attach_rate above floor.\n\n### Cart Cross-Sell\n- Carousel: \"People add with X\"\n- Ranking: contextual bandit score\n- Include a fast-prep item to smooth throughput.\n\n### Post-Purchase Add\n- Timing: within 3 minutes if batching is possible\n- Action: one tap with stored payment\n- Guardrail: do not reopen the full checkout.\n\n## Personalization Rules\n\n- Early evening → family bundles\n- Hot weather → cold drinks\n- Low station load → unlock fries upsell\n- Out-of-stock → hard-filter candidates\n\n## Experimentation Standards\n\n- **Design:** power analysis up front, fixed horizon or sequential methods.\n- **SRM checks:** halt if allocations deviate from plan.\n- **Variance reduction:** CUPED or covariate adjustment.\n- **Kitchen-aware:** define station capacity guardrails. Abort if exceeded.\n- **Registry:** log hypotheses, exposures, metrics, and decision notes.\n\n## Metrics\n\n**Primary:** average check, attachment rate, units per transaction, conversion, time to complete.\n\n**Second order:** repeat purchase, order accuracy, refund/void rate, prep-station utilization.\n\n**Ethics telemetry:** opt-out rate, complaint rate, undo after accidental adds, churn after promos, consent acceptance symmetry.\n\n## Legal and Ethical Standards\n\n- No pre-checked consent boxes.\n- Clear declines and cancellation paths with parity to acceptance.\n- If \"No thanks\" is harder to see or reach than \"Add,\" it is out.\n\n## Category Adaptations\n\n- **QSR/cafes:** meal default, drink + side as Slot-1, dessert as fast-prep cross-sell.\n- **Retail:** bundle defaults, warranty/care kit as Slot-1, limited colorways as novelty.\n- **Wellness/beauty:** ritual default, booster as Slot-1, seasonal scent as novelty.\n- **Local services:** consult default, quick add-on as Slot-1, priority turnaround as Slot-2.\n\n## Accessibility\n\n- Minimum 44px tap targets, consistent focus states, readable contrast.\n- Kiosk flows reachable at standing and seated height.\n- Basket preserved for N minutes after timeout.\n\n## JSON Blueprint\n\n```json\n{\n  \"ui\": {\n    \"anchor_order\": [\"premium_anchor\", \"target_hero\", \"value_option\"],\n    \"defaults\": {\"meal_variant\": true, \"slot1_selected\": true},\n    \"progress_steps\": [\"browse\", \"build\", \"review\", \"checkout\"]\n  },\n  \"eligibility\": {\n    \"max_prep_minutes\": 8,\n    \"exclude_if\": [\"out_of_stock\", \"allergen_conflict\", \"station_overload\"]\n  },\n  \"scoring\": {\n    \"weights\": {\"margin\": 0.35, \"attach_rate_ctx\": 0.25, \"popularity_now\": 0.15, \"affinity\": 0.15, \"inventory_pressure\": 0.10},\n    \"penalties\": {\"allergens\": 1.0, \"station_load\": 0.5, \"sla_risk\": 0.4}\n  },\n  \"patterns\": {\n    \"intercept_after_add\": {\"show\": true, \"copy_variant\": \"value_save\"},\n    \"cart_cross_sell\": {\"max_items\": 10, \"include_fast_prep\": true},\n    \"post_purchase_add\": {\"window_seconds\": 180, \"requires_stored_payment\": true}\n  },\n  \"metrics\": {\n    \"primary\": [\"avg_check\", \"attachment_rate\", \"upt\", \"conversion\", \"time_to_complete\"],\n    \"ethics\": [\"opt_out_rate\", \"undo_rate\", \"complaint_rate\"]\n  },\n  \"guardrails\": {\n    \"srm_watchdog\": true,\n    \"kitchen_load_kill_switch\": true,\n    \"consent_symmetry_required\": true\n  }\n}\n```\n\n## 30/60/90 Implementation\n\n**Day 0–30:** Instrument events (view_item, add_to_cart, upsell_shown, upsell_accept, upsell_dismiss, checkout_start, purchase). Ship baseline patterns with eligibility rules. Stand up dashboards and SRM watchdog.\n\n**Day 31–60:** Tune scoring weights. Run A/B on copy, placement, default states. Introduce Slot-3 novelty and fast-prep cross-sell.\n\n**Day 61–90:** Replace ranking with contextual bandits. Add cart-level second-chance prompts. Harden kill switch tied to kitchen load and SLA risk.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}