Internal review · 12 November 2026

Coffee Kit: UX, source assets and design handoff

Research date: 12 November 2026. Scope: source inspection, supplied screenshot review, Mobbin references and a bounded read-only Coffeetale storefront check. No theme edits, app implementation, merchant mutations, checkout, or outreach.

Product direction

Design Coffee Kit as a coherent coffee-selling workspace: bring in a coffee, review its facts, choose how it is sold, preview the complete shopper experience, and maintain that experience as the catalog changes. The north star is the founder's replacement-worthy “#1 solution for selling coffee on Shopify.” That is a positioning ambition, not a verified market claim.

The current source provides a substantial storefront foundation. It does not provide the Coffee Kit admin, extraction/review system, subscription engine, provider integrations, loyalty ledger, or agency API. The commercially meaningful product work is connecting those storefront components to a dependable shared workflow. Assisted migration by a salesperson or AI can be a legitimate onboarding route; the ongoing result should be one manageable system, with explicit ownership of data and subscription operations.

For the first wireframes, show one complete journey from source document to a sellable coffee and subscription offer. Show existing source assets accurately. Label proposed backend actions and simulated outcomes. Do not present a subscription concept screenshot as working billing.

Evidence and reproducibility

Evidence labels: Source means actual code inspected; Live means a specific browser observation; Visual means a supplied image or Mobbin image actually viewed; Proposal means a design recommendation. None of these establish conversion uplift, demand, price acceptance, or cross-theme compatibility.

Recovered the prior thread with read_thread(includeOutputs: true). Its returned history was truncated and preserved the finding about helper-section dependencies and reference candidates. The report checks those against accessible files and viewed images instead of treating the recovered commentary as complete evidence.

Read the founder brief, relevant current sections of both context dossiers, existing study notes, theme workspace rules (local handoff artifact), Coffeetale agent guide (local handoff artifact), design contract (local handoff artifact), Hydra child-theme rules and the latest available daily theme log. The actual build takes precedence over a shorthand capability description in a historical brief.

Repository snapshot, all clean at inspection:

Repository HEAD
FLAT-WHITE/build 9f020b1a8fe969bcdf0422b7b1234f4adc90cbd8
FLAT-WHITE/_dev 3c1d83e9b636dcf15d4d6c37b8bd73f87ec368c8
_framework/hydra 62fbccc5259a30a13fb23b30b3ea6b447e0b57fb
_framework/js 5a6c6af198e68dd561864804943649138c00b0e4

The source manifest (local handoff artifact) records 41 entry points, hashes, source filename candidates, direct literal dependencies and repository states. It is not a complete graph of dynamically selected blocks. The old .source-map.json predates this study; its mapping was not treated as current proof. The inventory script (local handoff artifact) reads source and produces contact sheets without modifying themes. It requires Pillow; the research run used an isolated temporary Python environment.

All 14 Coffeetale concept images and 21 representative supplied subscription screenshots were viewed in seven generated contact sheets. The screenshot manifest (local handoff artifact) identifies every original, dimensions and contact-sheet cell. Fine copy and transactional behavior are not inferred from thumbnail-sized text. Mobbin references below were also actually viewed; nine useful full-resolution files were downloaded to the reference folder (local handoff artifact).

Live check and its boundary

Used the existing local Playwright runtime and cached Chromium. The installed runtime initially expected a newer uncached browser; explicitly selecting cached Chromium 1248 resolved that. The password was used only to open a storefront session. The inspection script (local handoff artifact), browser observations (local handoff artifact), and captured screenshots (local handoff artifact) are retained.

Surface Actual observation
Homepage HTTP 200; coffee cards, tasting notes, scales and charts rendered. A quiz-creator element is present.
Collection HTTP 200; 55 products in this demo collection. Opened a multi-variant quick-buy trigger and waited for its helper-backed product-variant element to become visible. Captured the open quantity/add-to-cart panel. Did not submit.
Profile finder HTTP 200; initial text reported 28 matches. Clicking “Bright & fruity” selected high fruity/high acidity, showed matching filter pills and reported 10 matches. Cards refreshed. These are demo observations, not an accuracy benchmark.
Coffee quiz HTTP 200; selected the first answer in each of four questions: espresso machine, black coffee, rich/chocolatey, light/bright. The result rendered four cards: Honduras Marcala, Guatemala Antigua, Nicaragua Jinotega and Decaf Luna. This verifies one completed path, not recommendation accuracy.
Brew guides HTTP 200; method tabs and V60 recipe specifications rendered. Screenshot shows 15 g coffee, 250 g water, 94°C and medium-fine grind.
Ethiopia Guji PDP HTTP 200; notes, roast/character scales, five profile axes, brew/grind and bag-size controls rendered. The inspected DOM contained no name="selling_plan" input.

The guessed /pages/quiz and /pages/brew-guide routes returned 404. The actual navigation uses the longer routes above; those 404s are not evidence of missing quiz or brew-guide functionality. No cart-add, payment, checkout, renewal, portal management, admin editing, accessibility audit, performance benchmark, mobile QA or external-theme installation was performed. Lack of a selling-plan input on these pages does not prove that the store has no subscription app elsewhere.

Useful live captures for the website: collection, profile finder, selected mood, open quick buy, brew guides, PDP, and completed quiz. Page captures use a 1440 × 1100 viewport; the quiz-result capture is cropped to its actual component. Crop for presentation without claiming to show untested commerce.

Existing code versus product work still needed

Paths below are relative to LOCAL/themes/FLAT-WHITE/build/ unless another root is given. Build files are evidence of delivered output, not files to edit. Future implementation belongs in the child _dev or the owning framework source.

Capability Actual source evidence What is reusable Coffee Kit work still needed
Coffee product card card block (local handoff artifact), snippets/card.liquid, assets/component-product-card.css Composable card surface and child blocks; image, badges, origin, notes, scale/chart and quick-buy treatments Catalog eligibility, app-owned grid/result surfaces, saved style configuration, adapter for selected native grids, measured installation behavior
Coffee facts tasting notes (local handoff artifact), tasting-images, origin-icon, flavor-chart, progress-bar Source-aware renderers, native SVG charts, country maps/flags, illustrative tasting assets Canonical mapping, provenance/review, completeness rules, scale definitions and conflict handling
Brew/grind and bag size variant block (local handoff artifact), option renderer (local handoff artifact) Existing options represented as icon/card/pill controls, availability hooks, prices/unit prices Merchant-friendly option mapping across catalogs/locales, subscription eligibility and full variant/plan synchronization
Quick buy popover (local handoff artifact), helper (local handoff artifact), assets/component-quick-buy-popover.js Deferred body fetch, quantity controls, dialog lifecycle, single-variant direct-add branch Portable rendering route, own cart contract, provider selling-plan UI and external-theme cart adapter
Quiz quiz card (local handoff artifact), answer mapping (local handoff artifact), assets/component-quiz.js, result helpers Questions, progress, product or tag mappings, ranking, result cards, empty/error states Admin authoring, catalog-driven suggestions with review, explanation of fallback matches, versioned publishing and ongoing eligibility checks
Profile finder section (local handoff artifact), chart data (local handoff artifact), component-chart-filter.js, component-profile-finder.js Interactive axis controls, mood presets, active filters, exact/closest results and shared cards Guided axis mapping, complete-data eligibility, catalog-size handling, simple non-chart selection and app authoring
Brew guide methods (local handoff artifact), recipe (local handoff artifact), step (local handoff artifact) Method tabs, seven label/value recipe slots, descriptions and time-labelled steps Recipe data/review and product association; dedicated elapsed timer shown in Figma is additional work
Subscription builder Four supplied concept screenshots; cart plan-name rendering (local handoff artifact) Visual layout direction; existing card/option controls are useful ingredients. Cart can display a line's existing selling-plan name Builder configuration, eligible variants/plans, pricing, cart submission, provider integration or owned engine, lifecycle/portal, substitutions and recurring-stock responsibility
Import/review admin No Coffee Kit implementation found in inspected workspace Domain conventions and existing fields can seed the specification File processing, extraction, field-level source links, import queue, draft changes, retry, audit, read-back and conflict-aware undo
Loyalty and email No Coffee Kit implementation established Some generic theme forms/content may provide visual surfaces Choose provider/integration contract or build a ledger and lifecycle. Neither should be described as existing Coffee Kit functionality
Agency/backend-only use No Coffee Kit public API established Shopify data/rendering conventions Authenticated versioned configuration and matching APIs, documented contracts, exports and compatibility policy

“Implemented in source” and “verified live” remain separate. For example, a dialog's focus-handling code exists, but this study did not complete keyboard or assistive-technology testing.

Exact dependency map and portability implications

Shared presentation and commerce

The theme shell (local handoff artifact) renders head-variables, loads theme CSS and supplies shared assets. Head variables (local handoff artifact) supplies the product-form script registry entry, routes, settings, typography and CSS variables. Components call window.KROWN.loadScript or loadScripts. This is an actual runtime dependency.

Product card block
  -> content_for blocks (merchant composition)
  -> card snippet -> color tokens, language direction, image/video helpers
  -> product-card CSS + global typography/layout/token CSS
  -> child origin / notes / scale / chart / price / quick-buy blocks

Quick-buy block
  -> quick-buy-popover snippet
  -> component-quick-buy-popover.js (loaded once by theme.liquid)
  -> GET product URL ?section_id=helper-quick-buy
  -> helper-quick-buy -> product-variant-options
  -> product-variants + product-form + quantity-selector custom elements
  -> GET helper-product-variant when options change
  -> shared component-product-form.js
  -> Shopify cart endpoint + Krown cart refresh/drawer events

The quick-buy script (local handoff artifact) caches fetched helper bodies, preloads in-view cards under favorable connection conditions and loads shared scripts. It also uses Krown settings/events to show the cart sidebar. A single-variant product takes the direct form branch; a multi-variant product opens the helper-backed panel. Neither branch by itself selects a subscription plan.

The shared product-form source (local handoff artifact) serializes the form, posts to the configured cart URL and requests cart helper sections where appropriate. Variant changes use Krown events and helper rendering. Do not extract only the visible buttons and assume these behaviors travel with them.

Finder and quiz

Quiz section -> _quiz-card -> intro, progress, questions/answers, results view
  -> component-quiz.js
  -> tag route -> quiz-results-ids (first 50 products)
  -> ranked IDs -> search route -> quiz-results (first 24 results)
  -> quiz-product-card -> image, video, badges, price, card, quick-buy-popover
  -> quick-buy dependency chain above

Profile-finder section
  -> _profile-finder reads selected collection + numeric metafield keys
  -> radar-chart SVG + JSON product vectors
  -> component-chart-filter.js + component-profile-finder.js
  -> exact level matches, otherwise nearest profiles
  -> search route ?section_id=quiz-results&type=product&q=id:...
  -> quiz-product-card and quick-buy dependency chains

Source correction: the agent guide describes tag matching as AND across questions/OR within a question. Actual code supports both explicit product mappings and tags, configurable AND/OR behavior, and a closest-match fallback. In the ranking function (local handoff artifact), AND keeps the IDs matching the greatest number of questions; if no product matches every question, partial matches can remain. The UI must distinguish “matches all your choices” from “closest available.” Do not advertise strict filtering without reconciling this behavior.

The tag ID helper paginates by 50 (local handoff artifact); the result renderer paginates by 24 (local handoff artifact). This is a bounded candidate set, not proof of catalog-wide exhaustive ranking. Unknown-tag handling checks the tags Shopify actually applied so that an invalid tag does not silently become an unfiltered result.

The profile finder reads up to a 250-product page (local handoff artifact), requires at least three configured axes, skips a product missing any selected numeric axis, and clamps numbers to the configured range. It accepts direct namespace.key and one nested metaobject-field path. It does not create the source values. The JS tries exact categorical levels before distance fallback (local handoff artifact). Source has separate empty, error and closest-match UI. An import tool must not invent scores to make more products eligible.

Recipe presentation

Brew-guide section -> _brew-methods -> _brew-method -> _brew-step
  -> tabs component + tabs/brew-guide/timeline CSS
  -> theme typography, color tokens and icons

The methods parent (local handoff artifact) loads component-tabs. The step block prints the supplied time/title/text. No dedicated elapsed brew timer, pause/reset controller or automatic step progression was established in the inspected recipe code. Generic countdown blocks elsewhere do not prove that the Figma stopwatch exists.

Delivery decision

Proposal: retain two supported delivery modes behind one experience configuration: compatible Coffeetale reuses its native components through an explicit version/capability contract; another supported theme gets scoped Coffee Kit renderers and its own minimal runtime. The same coffee, matching rules and offer should survive a presentation change.

Theme app extensions provide blocks, embeds, snippets and assets. They do not package arbitrary theme helper sections as though they already existed in every host. Replacing every native product card is also a separate adapter problem. Use app-owned grids, quiz results and subscription-builder surfaces as the first reliable card placements. Shopify extension structure and constraints.

The current helper URL architecture needs deliberate replacement or a tested supported-theme dependency. Section Rendering renders existing theme sections and cannot receive arbitrary new setting values. A proposed portable renderer must specify where the markup comes from and how selected variant, availability, price and plan stay authoritative. Shopify Section Rendering API.

Actual data bindings to preserve

The agent guide describes standard attribute support; the checked demo templates demonstrate richer custom bindings. Do not collapse these into a single unverified schema.

Consumer Actual checked binding Consequence for migration
PDP origin custom.farm reference, then country, region; optional custom.secondary_farm Preserve blends/multiple origins. Do not force one farm per product.
Notes custom.coffee reference, then tasting_notes; passed through metafield_tag Preserve list/reference typing and displayed vocabulary.
Roast/character custom.coffee.roast_label, roast_attribute, character_label, profile_attribute through reference dereferencing A label and number are distinct fields. Do not infer precise numbers from labels.
Sensory axes custom.fruity, custom.floral, custom.sweet, custom.acidity, custom.body Current demo's first five axes use direct product numeric metafields.
Profile finder Same five keys, shape: 5, max_value: 100, collection handle coffee Axis labels/scale/order and eligible collection must be explicit shared configuration. Additional axis settings exist but are inactive at shape five.
Other specifications custom.coffee variety/process/story/harvest; farm washing station/altitude General content and coffee entities need mapping, not only charts.
Cost transparency custom.coffee.cost_breakdown nested reference; some homepage bindings name a coffee_cost_breakdown record directly Optional, source-backed transparency content. Never infer merchant margins or imply every merchant needs this model.

Direct examples: PDP template (local handoff artifact), profile-finder template (local handoff artifact), homepage card (local handoff artifact). These store-specific templates contain bindings even though the distribution guide says shipping presets should omit store bindings. Treat them as inspected demo configuration, not universal installation defaults.

Source renderers also support shopify.flavor and shopify.country through product-metafield-values. Audit existing definitions and offer “use existing,” “copy once,” or “managed mapping” with a conflict policy. The proposed coffee_kit namespace in the data study is not the existing Coffeetale schema. Refer to data/discoverability report for ownership and persistence decisions; data accessibility and continued operation of paid UI after uninstall are separate promises.

Viewed supplied visuals

The screenshots contain design comments and sample data. Use them for layout and design provenance, with captions. They are not evidence of subscriptions being charged or recipes/data being verified.

Original image What was visibly established Recommended use
Coffee specification Radar/profile, tasting illustrations, scales, origin and process in one band Reference for a rich coffee PDP and preview, with actual source-backed values
Other facts Farm/station/altitude/harvest and a cost-breakdown chart Optional deeper story module; illustrative cost data must stay labeled
Scales and profile Roast/character scales plus a numerical profile legend Compact facts module and source-review preview
Card front Notes/profile and separate quick-buy/subscribe actions Visual concept; use the live card to evidence current functionality
Card quick buy Grind and weight choices in a colored panel Purchase-panel direction; live panel has a different current treatment
Variant selector Icon grind cards, bag sizes, one-time/subscribe choice, quantity and total Proposed integrated purchase UI; subscription choice is not established in current source
Quiz question and results Taste tiles, progress, returned cards and quick buy Existing guided-discovery visual language
Profile finder Interactive-chart direction, mood shortcuts, active filters and cards Optional exploration route; live screenshots now also substantiate the mood interaction
Inline subscription Five choices and persistent image/summary Primary proposed shopper layout
Subscription step Five-step navigation and brew-method cards Progressive presentation for narrow/mobile contexts
Simple subscription A compact product/grind/quantity/frequency form Short path for someone who already knows their coffee
Split subscription A guided step with editorial box photography Marketing/education variant of the same configuration
Timed brew concept Elapsed timer, pause/reset and highlighted instruction Clearly label as proposed timer enhancement; current recipe tabs are reusable

Supplied roaster subscription references

These observations come from the supplied screenshots, not fresh tests of those brands. Exact originals are indexed in the screenshot manifest. Representative endpoints were viewed for all 14 supplied folders; intervening steps, backend providers and renewals were not audited.

Brand / screenshot evidence Visible pattern and implication
WatchHouse, 10.06.31 and 10.07.34 (local handoff artifact) Subscription begins in a side panel; final screen says “Your order, confirmed.” A persistent summary supports a guided configurator. The screenshot does not prove a payment occurred.
Wogan, 10.08.25 and 10.09.03 (local handoff artifact) “Monthly special,” “I know what I want,” and “Help me choose” distinguish different intentions before the basket. Preserve a direct route for repeat buyers.
Nomad, 10.09.13 and 10.09.32 (local handoff artifact) Classics versus Specials precedes a cart drawer. Curated club type can be the first decision instead of asking for an exact limited-lot SKU.
Coffee Collective, 10.10.31 (local handoff artifact) Compact subscription side panel combines the offer with preferences. Not every subscription needs a full-screen wizard.
Devoción, 10.10.58 (local handoff artifact) Product-first PDP with size, grind and one-time/subscription choices. Useful for fixed-coffee refill.
Red Rooster, 10.11.20 (local handoff artifact) Rotating Signature Blends presented as a product with options. A stable club identity can differ from its changing physical contents.
Blue Bottle, 10.11.39 (local handoff artifact) Subscription product/assortment, bag count and frequency in one page. Summary must distinguish amount per delivery from billing cadence.
Nordic Brew Lab, 10.12.01 and 10.12.05 (local handoff artifact) Reserve and Rare + Exclusive club cards lead to a subscription purchase form. Club comparison is a distinct step from frequency selection.
Assembly, 10.12.21 (local handoff artifact) Office subscription for an espresso blend. Buyer context can change quantity needs without requiring an unrelated onboarding survey.
Passenger, 10.13.30 and 10.13.33 (local handoff artifact) Reserve/education, foundational and individual-coffee routes; detail screen includes for me/office/gift and quantity. These are different offers, not just different UI skins.
Rose, 10.13.58 (local handoff artifact) Multiple named subscription products on a listing. A simple offer landing page remains necessary alongside a builder.
Tanat, 10.14.23 and 10.14.41 (local handoff artifact) Brew-method choice begins a numbered journey; final screen combines basket and totals. Keep choices editable before checkout.
Sey, 10.15.18 (local handoff artifact) Compact bag-count subscription form. Do not add discovery questions when the offer is already understood.
Backstage, 10.15.56 (local handoff artifact) Quantity choices include office/bag/weight options and a duration section. One file in this folder, 10.15.18 (2), shows a Coffeeday design window rather than Backstage subscription UI; exclude it as brand evidence.

Proposal: support a direct fixed-coffee route and a curated rotating-club route in the architecture. A mixed box, prepaid gift, office contract and personalized rotating selection require distinct offer/fulfillment rules. The existence of references does not mean all should be in the first release.

Mobbin references actually viewed

These are web screenshots used for structure only. They do not establish Shopify compatibility or coffee conversion performance. Canonical links and downloadable evidence are in the reference manifest (local handoff artifact).

Reference Visible evidence Coffee Kit application
Attio review values Upload → map columns → review values → preview import; left field list; raw/mapped values; needs-review count Import should expose field mapping and unresolved vocabulary before writing. A photo/PDF review also needs source page/region evidence beyond this reference.
Rox review mappings Mapping summary alongside record previews; invalid-column tab and previous/commit actions Review scope and affected records together. Use a full page for sustained coffee review rather than inheriting Rox's modal container.
Stripe product and pricing preview Named setup steps, recurring versus one-off pricing and right-side estimate Edit a coffee offer beside a shopper summary. Price behavior must come from the selected provider/plan, not a visual-only calculation.
Square create subscription plan Internal name, assigned catalog items, frequency options, discounts and save Separate offer identity, eligible coffees and cadence. Distinguish internal names from shopper-facing copy.
Square deactivate plan The dialog explicitly says existing subscriptions continue when the plan is deactivated Coffee Kit must distinguish stopping new sales from altering existing subscribers. Actual provider behavior needs verification.
HelloFresh upcoming delivery Dates, selected delivery, edit deadline, current contents and change action Make the next coffee delivery concrete: date, coffee/quantity, charge and latest edit time.
HelloFresh manage delivery Reschedule, change box size and skip actions in one panel Put common subscriber changes near the upcoming delivery. Only expose actions a supported provider can execute.
HelloFresh edit-window reminder A dated upcoming delivery and visible days-left reminder Show a real provider cutoff rather than implying changes remain available indefinitely.
HelloFresh address settings Address form with explicit date from which changes affect deliveries Every lifecycle change should say whether it affects the next order, later orders or the whole contract.

Initial broad Attio and HelloFresh searches returned onboarding/table/address screens. Those were viewed, but were insufficient evidence for import-review or upcoming-delivery behavior. Refined searches produced the precise screens cited above. Stripe simulation setup was also returned; it does not evidence a customer subscription builder and is excluded from the proposed reference set.

Proposed application IA and shared workflow

Preserve the founder's main areas while making each surface part of one system:

Navigation Job and first screen Detail surfaces
Overview Resume the next useful task and see operating status Setup checklist, source/import issues, experience health, provider sync, recent launches
Coffee data Manage coffee-specific facts and incoming source material Catalog list, source inbox, import review, mappings, coffee detail with Shopify product link
Design elements Publish coherent shopping experiences using the same catalog and offers Experience list, cards/grid, PDP facts, finder/quiz, brew guide, subscription-builder presentation, shared style profile
Subscriptions Define offers and handle subscription-related exceptions Offer list/editor, provider status, upcoming lot changes, subscriber/portal handoff, affected-contract review
Loyalty Configure the selected loyalty solution Integration/setup and program state; do not show an invented working ledger
Settings Shared operational configuration Data mappings, languages, integrations, theme capabilities, agency/API access, export and billing

“Design elements” must include purposeful experiences, not just a wall of blocks. A saved “Find my next coffee” experience owns its eligible catalog, rules and presentation. A saved “Filter club” offer owns commercial rules; the builder is one presentation of it. The same card and data model appear in discovery, product pages and subscription selection.

flowchart LR
  A[Existing product or supplier source] --> B[Review coffee facts and mappings]
  B --> C[Approved coffee catalog]
  C --> D[Offer: one time or recurring]
  C --> E[Discovery rules]
  D --> F[Experience preview]
  E --> F
  F --> G[Publish supported storefront placement]
  G --> H[Monitor new lots and exceptions]
  H --> B

This diagram describes a proposal. All backend states in it remain to be built. Initial onboarding should make the first approved coffee visibly useful, then let the merchant continue importing or configure an offer. A returning merchant should land on unfinished work and exceptions, not restart an install wizard.

Admin wireframe A: overview

Use real current Polaris 2 web components in the eventual interactive prototype. The parent researcher is handling detailed component/API validation. Official current App Home components and Polaris 2 guide are the authority. Legacy Polaris React 12 examples in older skills are not the target.

Coffee Kit / Overview                            [Add coffee]
Connected: shop • compatible theme • provider state

Continue setup: Review your first coffee → Preview → Publish
[resume action]                                  [dismiss]

Needs attention              Recent work
2 imports need review        Coffee approved / experience published
1 offer has no eligible lot  Source, owner, timestamp, next action

Your selling experiences
Coffee grid    Live / placement / preview
Coffee finder  Draft / eligible coffees / continue
Filter club    Provider not connected / set up

All numbers above are illustrative wireframe fixtures. After launch, metrics can include published coffees, completed import time and shopper actions. Zero data is “No activity yet,” not fabricated sales or uplift. Attributed orders must not be labeled incremental revenue.

Admin wireframe B: import review

Coffee data / Import 014               Draft • nothing published
Upload → Match products → Review facts → Preview changes

Sources                         Reviewed fields
PDF p2 or bag image              Field       Existing    Proposed
[page/region highlight]          Country     —           Ethiopia
[source excerpt]                 Process     Washed      conflict
                                Roast       —           unknown
Linked product                  Profile     —           needs assessment
Existing Ethiopia Guji
[Change match] [Open in Shopify] Each value: source / edit / keep existing

Target mapping                  Shopper preview
Existing custom.coffee fields   [Facts / card / PDP contexts]
Missing data stays hidden       Warnings describe actual omissions

[Save draft] [Next coffee]       [Apply selected reviewed changes]

A source label is untrusted evidence, not an instruction. Show extraction versus normalization versus merchant suggestion. For updates, show old/new values and resolve conflicting edits. For new products, show the proposed draft and require review of price, SKU/options and availability. Do not recreate the full Shopify product editor or silently publish commercial fields. An assisted onboarding operator should use this same review surface and leave an audit trail.

Admin wireframe C: subscription offer

Subscriptions / Filter club                     Draft [Save]
Steps: Offer → Coffees → Delivery & price → Experience → Test

Offer and provider                 Shopper summary
Internal name / public name        Filter club
Fixed coffee or rotating club      2 × 250 g • whole bean
Provider + capability status       Every 4 weeks
                                   €X per delivery, current plan price
Eligible coffees/variants          First order / subsequent charges
Included / excluded / why          Shipping and edit/cancel terms
Grind mapping / bag size

Cadence and pricing                Preview states
Read actual selling plans          Mobile / sold out / no plan
Show provider-controlled settings  Sparse data / unavailable grind

Existing subscribers: impact count and policy
New sales: on/off separately from existing contract operation
[Preview] [Run supported test] [Publish to selected placement]

The provider connection step must identify the operational owner: who bills, retries failed payment, handles skip/pause/cancel and sends mandatory messages. If Coffee Kit later owns the engine, the same IA needs real lifecycle screens. If it integrates a provider, supported operations should still feel coherent, with clear handoff only when required. This is an architectural choice for the synthesis, not a claim of provider interoperability.

Rotating clubs need a distinct lot-change review: current lot, candidate next lot, compatibility evidence, affected customers, price impact, deadline and stock responsibility. A common taste profile can suggest candidates; it does not authorize replacing a paid contract or prove equivalent taste. An empty club must block new subscription purchases and create an actionable exception. Roast logistics remains outside scope.

Admin wireframe D: experience builder

Three regions: configuration on the left; actual Coffeetale-style shopper rendering in the center; readiness/placement checks on the right. On smaller widths use a configuration tab and a preview tab. Native admin forms use Polaris; the preview uses the store's rendering and tokens.

Controls, in order: named purpose → eligible catalog/offer → content shown → purchase behavior → shared style → placement. Advanced per-element overrides remain secondary. Include a plain data/API presentation for agencies; do not fork commercial rules for a custom-designed frontend.

Status should distinguish Draft, Preview ready, Placement added and Live verified. Saving app configuration does not prove the theme block was placed or published. Each failure names what the merchant can do next. A transient toast can acknowledge a save; unresolved import/provider errors need persistent inline messages.

Shopper blueprint

Proposal: keep two entry routes, “I know my coffee” and “Help me choose.” Both resolve to the same catalog and offer; discovery should not be compulsory. Wogan and the supplied simple subscription concept support this structural choice.

  1. Choose an exact coffee or a defined rotating club. Explain whether the next delivery will contain this specific lot or a roaster selection.
  2. Choose brewing preference only when it affects eligible coffee or grind. Keep “whole bean, grind at home” distinct from a brewing method.
  3. Choose valid grind and bag/box quantity. Display grams per bag, number of bags and total delivered weight; do not conflate two 250 g bags with one 500 g SKU.
  4. Choose one-time or eligible subscription cadence. Display actual price per delivery and, where different, billing frequency, first charge and subsequent charge. Use plan allocations rather than applying a frontend-only percentage. Shopify selling-plan allocations.
  5. Review an editable summary with coffee/club, grind, amount, cadence, recurring terms, shipping treatment and first-delivery expectation. Submit the selected Shopify variant and eligible plan. For a multi-item box, persist all line choices consistently; a label alone does not model a bundle.
  6. After purchase, show the next delivery, exact edit cutoff, current contents and supported change/skip/pause/cancel actions. Provide the provider's customer portal where that is the operational owner. Do not invent a functioning Coffee Kit portal in the prototype.

Desktop should prefer the supplied inline form plus a sticky summary; mobile can present the same choices progressively with a persistent expandable total. A known-coffee path should preselect the product and avoid a redundant quiz. The profile chart remains an optional exploration tool with mood/text alternatives; dragging a radar vertex cannot be the only way to select a taste.

Design these states before polishing: one available coffee; sparse metadata; no exact taste match; sold-out lot; invalid grind/size combination; no eligible plan; loading/error; changed price after selection; rotating club without a next lot; expired edit window; partial import failure; theme placement not installed. User-facing language should state the reason and next action, not expose helper-section or API implementation details.

Exact visual direction, assets and tokens for Astra

Admin

Use current Polaris 2 web components, following the parent's current-documentation work. Use native page, section, table, badge, field, choice, drop-zone and action patterns after checking each component exists on the chosen App Home surface. Do not restyle merchant administration in espresso/orange or reproduce old React 12 screenshots. The storefront preview is the intentional branded region inside that admin shell.

Shopify's Polaris 2 guidance says web components adapt to the surrounding admin appearance through App Bridge. Load one Polaris bundle and match its TypeScript types; older React Polaris keeps its older appearance. The prototype must label any simulated Shopify frame, provider connection, publishing action or billing as a prototype. Polaris 2 guidance.

Coffeetale storefront and marketing examples

The design contract (local handoff artifact) defines an editorial specialty-coffee direction: warm light product surfaces, espresso text, fine dividers, square flat product cards, portrait packshots, an italic serif word in a large heading, and rounded action buttons. Tasting data supplies the detail. Use the current live captures to settle appearance where older Figma colors differ.

Purpose Existing token / setting vocabulary Usage
Surface/text --kt-color-background, --kt-color-text; section_background_color, section_text_color; palette primary_background, primary_text Warm off-white/espresso baseline; inherit from configured surface
Recessed cards --kt-card-background; card_bg_color; palette color1 Stone/latte surfaces; the live grid is flat and finely bordered
Actions/data Palette color2 is the design contract's action accent; color4 is a brighter chart accent Use actual runtime setting values; do not assert every screenshot's yellow/orange chart is the current default
Borders --kt-card-border-width, --kt-card-border-color, --kt-section-divider-width, --kt-section-divider-color Thin separators rather than shadows
Radius --kt-border-radius-none, --kt-border-radius-m, --kt-border-radius-full, --kt-button-radius Square product cards; pill actions; separate optional Cards section treatment
Type --kt-font-stack-headings, --kt-font-stack-body, --kt-font-stack-accent, --kt-font-stack-utility Read actual theme settings; the design contract names Manrope, DM Sans, Fraunces italic and a monospace utility role
Text scale kt-style--heading-1…heading-4, kt-style--body-1…body-4 Reuse this scale in previews rather than creating a parallel component scale
Spacing --kt-spacing-*, --kt-gutter-*, --kt-grid-gap, --kt-theme-max-width Shared rhythm across facts, cards and builder

The table names exact existing tokens, not proposed arbitrary hex values. Values come from head variables (local handoff artifact), settings data (local handoff artifact), and compiled CSS. Preserve settings-driven inheritance. On an external theme use a scoped adapter rather than assuming these tokens exist globally. No “zero extra assets” or “zero performance cost” claim is established.

Exact local demo settings for the website prototype: section background #f8f8f5; primary text #2a1b17; product card background #F0F1EC; border palette #e7e7e7; stone palette color1: #e9e2d9; action accent color2: #b83910; pale accent surface color3: #fff7f1; brighter data accent color4: #e95625; utility dark color5: #3e3a35. Primary background is #ffffff. Fonts are headings_font: manrope_n5, body_font: dm_sans_n4, accent_font: fraunces_i3, utility_font: mono. heading_1_font uses the body family; headings 2–4 use the heading family; bodies 3–4 use utility. Product-card radius is var(--kt-border-radius-none). These are values read from the checked local demo settings, not a promise that every store or future preset shares them. Use semantic CSS variables in a prototype rather than sprinkling those values into components.

Image and icon selection

Website/prototype need Preferred real artifact Caption/boundary
Hero showing the product's visual value Live collection capture, cropped to genuine cards, or supplied coffee-specification original “Coffeetale storefront foundation” until Coffee Kit itself works
Explain the shared catalog Supplied coffee specification + a proposed reviewed-field admin panel Source image is existing design; admin is proposed workflow
Show discovery Live selected-mood screenshot; actual quiz screenshot/result when available State the specific tested interaction; avoid uplift claims
Show purchase configuration Live quick-buy capture for current behavior; supplied subscription image for planned recurring configuration Label existing quick buy versus proposed subscriptions separately
Subscription concept 10.22.25 inline builder as primary; 10.22.48 compact alternative “Proposed subscription experience,” not a shipped engine
Brew guidance Live brew-guides capture Show recipe tabs; use Figma timer only with a concept caption
Tasting illustrations Actual build/assets/tasting-image-*.webp such as peach, chocolate, jasmine and blueberry where the named file exists Do not invent a note asset or imply that tasting notes are ingredients
Brew/origin icons snippets/icon-pack.liquid, tasting-icons.liquid, origin-flag.liquid, origin-shape.liquid Existing vectors are preferable to generated substitute icons
Product packshots Existing live screenshot or actual image URLs obtained from the live PDP Do not assume packshots exist in theme assets; they are normally Shopify product media
New imagined Coffee Kit frame Render a labeled prototype in current Coffeetale style with actual source assets No fake customer testimonials, app badges, revenue charts or availability claims

Before using an illustrative tasting file, check its exact filename: the source renderer falls back through uploaded file, built-in illustration and icon. Do not use contact sheets as the website's final imagery; they are inspection aids. Use original supplied files or retained live captures at their actual resolution. Mobbin images are reference evidence, not Coffee Kit marketing screenshots.

Website narrative and designer handoff

This is the UX contribution to the parent synthesis, not a request to implement or publish a website now. A compact Astra website handoff lists the exact assets, styling and screen requirements together.

  1. Show the connected outcome. A real Coffeetale card/PDP beside an honestly labeled proposed import review. Explain: coffee source material becomes reviewed facts that power how it is discovered and sold.
  2. Walk one coffee through the system. Source → review → presentation → purchase configuration → new-lot maintenance. Retain the same coffee and values across panels.
  3. Show recurring selling as a product workflow. Offer setup and shopper summary together; distinguish fixed coffee and rotating club. Do not use a UI screenshot to imply renewal or substitution infrastructure exists.
  4. Show current visual assets with their real status. Cards, facts, finder and recipe tabs have source evidence; selected interactions have live evidence; subscription layouts and stopwatch are proposed enhancements.
  5. Explain fit and migration. A coherent destination after assisted migration, theme/version compatibility, data ownership, supported provider and agency presentation options. “Works with every theme/provider” is not established.
  6. Use the synthesis's actual scope and commercial decision. Pricing and launch commitments remain the parent report's decision. Keep planned, prototype and available functionality distinct in every section.

Astra's first reviewable set should contain four admin screens (overview, import review, offer editor, experience builder), two shopper paths (known coffee and guided selection), a next-delivery concept tied to a clearly identified operational owner, and mobile layouts for the builder/review. Use real Polaris components for admin where possible; invented storefront screens must use current Coffeetale styling. Every sample number, source document, provider operation and sales result must be labeled as sample or proposed.

Acceptance checks before calling this a working Coffee Kit

Check Required evidence
Reviewed import Source facts, explicit omissions/conflicts, successful approved writes and read-back; later merchant edits protected
Same truth everywhere Card, PDP, finder and offer agree on coffee, axes, variant, money, availability and units
Subscription purchase Eligible variant/plan survives selection changes, cart and checkout with correct charge terms
Lifecycle ownership Tested renewals and supported customer changes, or verified provider handoff with truthful limitations
Limited lot Defined next-lot/stock policy; unavailable coffee creates a controlled exception; no silent price/contract replacement
Portable integration Supported Coffeetale version plus an actual external-theme test; no accidental dependence on missing helpers/global CSS
Usable interactions Keyboard, focus, touch alternatives, reduced motion, RTL, localized option vocabulary, mobile and no-results/error paths
Performance Disabled/minimal/full-feature mobile measurements and network dependency inspection; no inferred zero overhead
Clear status Prototype, source implementation, live verified and unverified operations distinguishable in the website and admin

Source: ux-assets-evidence.md The complete Markdown handoff and private datasets remain in the local project. This web edition includes selected supporting visuals and scenario downloads.