Home/Projects/Korjin
Case Study · Supplements · fermented Korean black ginseng · pre-launch, USA

Korjin

A pre-launch supplement brand with no reviews to show. So the storefront proves itself another way.

Korjin sells fermented Korean black ginseng — a nine-steamed liquid extract in daily sachets, plus a concentrated jar — and it has not launched yet. That is the whole problem. The Shopify store already looks good: bespoke moody photography, a committed oxblood palette, honest pre-order framing with a refundable deposit. What it cannot do is prove anything. Judge.me is installed and renders nowhere, the cart defers every cost to checkout while the banner promises free shipping, the product page is image-only, and the catalogue is down to one product — the concentrated extract's page 404s while the homepage still links to it. Our review scored 117 standards at a mean of 2.2 / 4, with the product page at 1.7 and the cart at 2.0. The proposed storefront answers all twelve prioritised changes and adds the thing a pre-launch brand actually needs: proof that doesn't depend on reviews — a batch COA reader, Geumsan provenance, the nine-steaming process shown rather than claimed, and an honest “No reviews yet — be the first” state instead of invented ones. The customer-stories rail takes the same position on video: the merchant asked for a testimonial section, and it ships as a designed invitation — three published promises beside the real 30-day course the first films will follow — rather than as invented people.

Track
Glow-Up+ Platform → Shopline
Stage
Design stage
Before
Shopify (Dawn V2) + Judge.me, Shop Pay, Shopify Inbox, Klaviyo, Omnisend
After
Shopline · storefront design proposed
Scope
Storefront redesignCRO / UX audit (117 Uplift standards)Shopify → Shopline migrationBrand system portPre-order & subscription merchandising
Status
Design proposed · awaiting the Shopline build
Audited
22 Aug 2026 (korjin.com, 117 Uplift standards) · prototype recaptured 27 Aug 2026 · desktop 1440 / mobile 390 · Lighthouse 12.8
Where this project stands today. This is a proposal. korjin.com is live on Shopify; nothing is built on Shopline yet. The design is a clickable 15-template prototype at korjin.powercommerce.com, built as a build spec — every component maps to a Shopline native or is flagged as custom development. The ground direction has since been decided: the storefront now opens dark-led, with cream-led still built and one toggle away. Two things remain shown as switchable rather than settled: both buy states (pre-order with a refundable deposit, and launched), and the customer-stories rail in both its launch and demo states — it ships with no customer content in it by default, and the sample-tile state exists only to show the merchant the mechanic. The review module works the same way, and currently opens on its demo. Pricing, supplement facts, COA batch values and the founder quote in the prototype are placeholder content logged in the build's placeholder register — 28 items that must be replaced or confirmed before launch. Nothing here invents a review, a rating or a testimonial as if it were real.
Homepage · first screen
korjin.com — Shopify Dawn on a dark oxblood ground, announcement bar rotating “Pre-Order Now (Ships October 2026)” and “Free Shipping Available” Proposed storefront, dark-led ground — a full-bleed root photograph, oxblood and gold over the brand guide's Neutral Black; the 30-day three-phase course organises everything below it
Before After · design
Before — korjin.com — Shopify Dawn on a dark oxblood ground, announcement bar rotating “Pre-Order Now (Ships October 2026)” and “Free Shipping Available”After — Proposed storefront, dark-led ground — a full-bleed root photograph, oxblood and gold over the brand guide's Neutral Black; the 30-day three-phase course organises everything below it
Measured, Not Estimated

The Numbers That Moved

281→28

The live homepage pulls 2,077 KB across 281 requests from 17 third-party hosts. The prototype loads the same page in 28 requests from its own origin plus Google Fonts — before any analytics, email or reviews app is added back at build time.

17→1

Shopify CDN and shop.app, Klaviyo ×3, Omnisend ×3, Google Tag Manager, Analytics, DoubleClick, Merchant Center, Facebook ×2 and Shopify telemetry ×2 on the live store — two email platforms loading side by side. The prototype's single host is Google Fonts.

2.0→0.5

Measured at 1440px in Chromium. The prototype serves the brand guide's photography as sized WebP at 400/800/1200/1800w rather than full-resolution originals, and loads no animation library at all.

8→15

Home, collection, product, cart, search, blog, article and page today. Fifteen in the proposal — including a second product page, a batch-COA reader, the ritual and process pages, and a designed 404.

CRO / UX Audit

The Audit at a Glance

Nine dimensions, scored 0–10. “Before” is korjin.com as captured on 22 August 2026. “After” scores the proposed design as it stands in the prototype, including the items still open — the ground direction, the licensed typefaces, and the content that is still placeholder. Scores will move when the Shopline build lands and real content replaces the register.

DimensionBeforeAfterWhat we measured
First impression & focusWhat loads, what's covered, what to click
6
8
Before: genuinely strong — bespoke photography, a committed palette, a static homepage rather than a slideshow of vital content, and an announcement carousel that does not auto-rotate. It is also where the free-shipping contradiction starts, and the thematic framing (“The Antidote to Burnout”) leads nowhere the shopper can browse. After: the same restraint, with the 30-day three-phase course as the organising idea, one H1 per page, and a first screen that names the product, the format and the pre-order terms.
Navigation & IACan a customer always keep browsing?
6
8
Before: every navigation heading resolves to a real page and the logo links home — the fundamentals are right — but the structure is a two-product store with a blog and three pages. After: shop, the product system, ritual, science, story and journal, with a search overlay that ranks products above page tiles and carries a symptom/benefit vocabulary. The header shell is a single component, so the nav cannot drift between templates.
Merchandising & discoverySelling one SKU like a range
4
9
Before: one card, one thumbnail, the 30-pack quantity legible only inside the title, default sort “Alphabetically, A–Z”, and Availability/Price filters over a catalogue of one. After: the packaging's three phases (I Awaken, II Rebuild, III Sustain) become the range — a bundle ladder, a subscription with intervals, a second SKU with genuine cross-sell, cards with 3–4 hover-swap images, a gold pack badge and a merchandising-led default sort.
Product page conversionThe buy box and what supports it
3
8
Before: the weakest surface in the review at 1.7 / 4 — 14 of 16 standards need work. The primary Add-to-Cart is an outlined button under a solid Shop Pay; the gallery is image-only with no video and no hover zoom; there is no delivery estimate near the buy actions, no dosage or storage guidance, and no supplement-facts panel. After: a full-width oxblood Add-to-Cart with express subordinate below it, an inline video slot and a 250ms external zoom pane, a delivery line inside the buy box in both buy states, and factual accordions with the persuasive copy isolated in its own labelled band.
Trust & social proofReasons to believe, with no reviews to show
3
8
Before: Judge.me's widget stylesheet and its jdgm-* class set are in the product page markup, and nothing renders on the product page or the collection card. A launching brand therefore shows no social-proof scaffolding at all. After: proof that does not depend on reviews — a batch COA reader, Geumsan provenance, the nine-steaming process shown step by step, and honest bitterness copy — plus a designed “No reviews yet — be the first” state on the PDP and every card, and a shoppable customer-stories rail that ships as an invitation — three published promises beside the real 30-day course — rather than as invented people. Capped at 7 because the COA values, supplement facts and the founder quote are still placeholder, and the lab is deliberately unnamed.
Mobile experience390px, thumbs, layout stability
5
8
Before: pinch-to-zoom is retained on the gallery and the filter control is unambiguous, but muted text on the dark ground falls below 4.5:1, load indicators on cart updates could not be confirmed, and the mobile page load measured 3,235ms. After: 45 responsive checks across 15 pages at 390/768/1440 with no horizontal overflow, and the 26 August pass added 360px and fixed the single-column stacks that were running up to 38px off-screen there. Both exceptions found in the 27 August run are closed: the mobile product page's 0.405 shift is now 0.000, and the ground-switch control that no longer cleared the 44px touch-target rule has moved into the mobile menu panel. Mobile Lighthouse accessibility is 100 on every template. The shop page's mobile shift, 0.161 two runs ago, is now 0.000.
Brand consistencyType, colour, components
6
8
Before: internally consistent and clearly deliberate — but it has drifted from the brand book. The live store runs a dark oxblood ground with a brick-red primary and Noto Sans; the guide specifies Hanji Cream, oxblood, gold, and Displace 2.0 with Brooklyn. After: the guide's palette and type scale as semantic tokens, with both ground directions resolving from the same token names so the choice is a setting rather than a rebuild. Held at 8 because the licensed faces are substituted with Marcellus and Jost until the licensing decision is made.
Speed & technical healthRequests, third parties, Core Web Vitals
3
8
Before: 281 requests and 2.0MB on the homepage from 17 third-party hosts, rising to 354 requests on the product page, plus three net::ERR_FAILED resources and a 403 in the console — broken tracking that stays invisible on a brand with no traffic yet. After: no animation library at all (GSAP, ScrollTrigger and Lenis were trialled and removed), sized WebP imagery, 28 requests and 470 KB on the homepage, and CLS at 0.000 on every mobile template measured. The exceptions are desktop-only — the shop page at 0.099 and the cart at 0.114 — and both are on the punch list. Lighthouse performance is not scored here — the prototype's runs were unthrottled.
AccessibilityLighthouse + manual checks
5
8
Before: theme-default gaps repeating across every template — two unlabelled inputs on both the homepage and the product page, two H1s on the cart, a truncated product title, and muted text below 4.5:1 on the dark ground. Images are better than the theme baseline suggests: every one carries an alt attribute, though six of eleven on the homepage are marked decorative. After: measured rather than asserted — Lighthouse accessibility 100 on every prototype template, mobile and desktop; 15 pages × 2 grounds contrast-audited with four failures found and fixed, keyboard/focus-trap/live-region behaviour verified by hand. Capped at 8 because the mobile touch target is an open regression, no real screen-reader pass has been run, and reduced motion was checked by rule inspection rather than under an actual OS setting.
OverallMean of 9 dimensions
4.6
8.1
3.6 points of measured improvement across the whole customer journey.
01 · Homepage

Keep the Photography. Give It Somewhere to Go.

The live homepage is not a redesign candidate for the usual reasons — it isn't cluttered, it doesn't auto-rotate vital content, and the imagery is bespoke and good. The problem is that everything it promises resolves nowhere: “The Antidote to Burnout” has no browsing path, “Free Shipping Available” contradicts what the cart says, and the packaging's own three-phase structure appears nowhere on the site. The proposal keeps the restraint and gives the promises a destination.

Before

  • Announcement carousel rotating “Pre-Order Now (Ships October 2026)”, “Free Shipping Available” and “The Antidote to Burnout™” — non-autorotating with visible controls, which the review explicitly flags as worth keeping.
  • Thematic framing around energy and burnout with no guided path: no product finder, no thematic navigation, no filter that maps a symptom to a product.
  • A site-provided “Questions” accordion, but no customer-generated Q&A anywhere.
  • 281 requests, 2.0MB, 17 third-party hosts on desktop; mobile page load measured 3,235ms.

After

  • The 30-day course as the spine — Phase I Awaken (days 1–10), II Rebuild (11–20), III Sustain (21–30). It is printed on the client's own packaging and used nowhere on the live site; here it gives a one-SKU catalogue a range, a bundle ladder and a reason to subscribe.
  • Free-shipping wording pulled from the same FREE_SHIP_THRESHOLD constant the cart uses, so the banner and the cart cannot contradict each other.
  • Proof modules the shopper can check — batch COA reader, Geumsan provenance, the nine-steaming process — reachable from the homepage rather than buried in a page called “How It's Made”.
  • 28 requests, 470 KB, one third-party host (Google Fonts) on desktop; mobile load event 637 ms, the median of three unthrottled runs. No analytics, email or reviews app is wired yet — those come back as Shopline natives at build time.
Full-page captures · scroll inside each frame · click to zoom
Beforekorjin.com
korjin.com
Before — korjin.com
Scroll · click to zoom

Captured as delivered, no overlays dismissed — the store has no pop-up on load, which is worth saying.

Afterkorjin.powercommerce.com
korjin.powercommerce.com
After · design — korjin.powercommerce.com
Scroll · click to zoom

Dark-led ground — what the storefront now opens on. Photography is extracted from the brand guide PDF; copy is drafted and subject to the placeholder register.

More pages from this section
Afterkorjin.powercommerce.com
korjin.powercommerce.com
After · cream ground — korjin.powercommerce.com
Scroll · click to zoom

The same page, same components, same tokens — switched to the cream-led direction. Both still ship and switch at runtime; the storefront now opens on the dark ground by the client's choice.

02 · Product page

The 1.7 / 4 Surface, Rebuilt First

Fourteen of sixteen product-page standards needed work — the lowest score anywhere in the review, and where five of the twelve prioritised changes land. It is also the surface most exposed by the migration: the solid button dominating the buy box today is Shop Pay, and Shop Pay does not exist on Shopline. The design does not work around that; it treats the native Add-to-Cart as the primary action from the start.

Before

  • Add to Cart is an outlined button above a solid purple “Buy with Shop Pay” — the accelerated checkout is the most dominant control on the page.
  • Gallery is image-only: no product video, no hover-activated zoom, no external zoom window. Pinch-to-zoom on mobile works and is worth keeping.
  • No delivery estimate near the buy actions — the only timing signal is “Ships October 2026” rotating in the announcement bar.
  • No star average or review count near the title, and no “no reviews yet” state, despite Judge.me loading in the DOM.
  • Persuasive copy interwoven with factual detail; no dosage or usage guidance, no storage instructions, no complete supplement-facts panel — on an ingestible product.
  • 354 requests, 2.4MB, 18 third-party hosts.

After

  • A full-width oxblood Add-to-Cart with express checkout as a ghost button beneath it. Designed for Shopline, where the express button will not be Shop Pay.
  • Gallery with an inline autoplay video slot; tap or click opens the image full-screen. The hover zoom pane was built and then removed at the client’s request — mobile pinch-to-zoom is untouched.
  • A delivery line inside the buy box in both states: “Pre-order · refundable deposit · ships October 2026 · cancel anytime before shipment”, or a dated range once launched.
  • An empty-state star row near the title linking to a designed reviews section — “No reviews yet — be the first”, never a fabricated entry. Beside it, a working demo of the review app so its selection can be settled before the build.
  • Factual accordions (description, supplement facts, dosage and storage, shipping) with the persuasive copy isolated in a labelled “Why it works” band.
  • Purchase plans (one-time / subscribe & save) and a bundle ladder in the buy box, mapping to Shopline's subscription app and automatic discounts.
Full-page captures · scroll inside each frame · click to zoom
Beforekorjin.com/products/…extract-sticks
korjin.com/products/…extract-sticks
Before — korjin.com/products/…extract-sticks
Scroll · click to zoom

The hero SKU as it sells today.

Afterkorjin.powercommerce.com/product
korjin.powercommerce.com/product
After · design · pre-order — korjin.powercommerce.com/product
Scroll · click to zoom

The pre-order state — what is true today. Supplement facts, the ×8 Rg3 figure and dosage copy are placeholder pending lab verification and compliance review.

More pages from this section
Afterkorjin.powercommerce.com/product
korjin.powercommerce.com/product
After · design · launched — korjin.powercommerce.com/product
Scroll · click to zoom

The same page in the launched state: the delivery line becomes a dated range (“In stock · order today, delivered …”) rather than a shipping window.

Afterkorjin.powercommerce.com/product
korjin.powercommerce.com/product
After · cream ground — korjin.powercommerce.com/product
Scroll · click to zoom

Cream-led direction, same components.

03 · Cart & cost

Show the Whole Cost Before the Commitment

The cart scored 2.0 / 4 and its failures are all one failure: cost is deferred to checkout while the banner promises free shipping. Near the Checkout button the live cart shows “Estimated total $19.00 USD” and “Taxes, discounts and shipping calculated at checkout”, with no threshold, no progress and no qualifying conditions. The design puts the whole sum in front of the shopper and derives the free-shipping message from the same source the cart uses.

Before

  • “Estimated total $19.00 USD” next to the Checkout CTA, with shipping and tax entirely deferred — while the announcement bar separately advertises “Free Shipping Available”.
  • No free-shipping threshold, progress meter, or qualifying conditions reiterated anywhere in the cart.
  • No delivery estimate near Checkout.
  • Transaction-only: no save-for-later, no recently-viewed, no cross-sell. A shopper who isn't ready can remove the item or leave.
  • The added-to-cart drawer is a genuine strength — not an interstitial page, with a clear route to the cart — but it omits price, quantity, variant and savings.
  • Clean and ad-free, with a button-plus-field quantity stepper and a clear per-item remove control. Both worth carrying over.

After

  • A running sum in the drawer: subtotal, discount, shipping (“Free” or a flat rate), estimated tax, total — plus what you're saving, so the bundle and subscription maths is visible rather than implied.
  • A free-shipping meter driven by FREE_SHIP_THRESHOLD, the same constant the announcement bar reads. One number, one message, two places.
  • The pre-order terms line sits beside the Checkout button, not only in the banner.
  • Per-line save-for-later that persists for signed-out shoppers, and a recently-viewed strip — mapping to Shopline's native wishlist and recently-viewed.
  • A discount-code field with a designed error state for invalid codes.
  • The added-to-cart drawer keeps what works and adds thumbnail, name, price, quantity, plan, bundle discount and savings.
Full-page captures · scroll inside each frame · click to zoom
Beforekorjin.com/cart
korjin.com/cart
Before — korjin.com/cart
Scroll · click to zoom

The live cart with two units added, so it is a like-for-like comparison with the seeded prototype cart. “Estimated total $19.00 USD” and “Taxes, discounts and shipping calculated at checkout” is the whole cost story.

Afterkorjin.powercommerce.com/cart
korjin.powercommerce.com/cart
After · design — korjin.powercommerce.com/cart
Scroll · click to zoom

Cart seeded with two lines, a saved item and a discount code so the sums, the meter and the retention layer are all visible. Prices, threshold, flat rate and tax rate are placeholder figures pending the client's confirmed policy.

More pages from this section
Afterkorjin.powercommerce.com/product
korjin.powercommerce.com/product
After · drawer — korjin.powercommerce.com/product
Scroll · click to zoom

The added-to-cart drawer, opened from the product page — the same totals as the cart page, computed from one store module.

04 · Shop & search

A Discovery Layer Sized for the Catalogue It Will Have

The live store runs Dawn's full discovery apparatus over a collection page that lists a single product — Availability and Price filters, a default sort of “Alphabetically, A–Z”, and a search that competes the “How It's Made” page against the product at equal weight. The second SKU 404s outright, with the homepage still linking to it. For a brand that markets around symptoms — burnout, cold hands, fatigue — the search returning nothing for a symptom query is the expensive part.

Before

  • The collection lists one product, and the other one 404s. /collections/all reports “1 product”; /products/korean-black-ginseng-concentrated-extract returns 404 while the homepage still links to it (checked 23 August 2026).
  • One card, one thumbnail. The 30-pack quantity is legible only inside the title text; no rating, no “no ratings yet” indication.
  • Default sort “Alphabetically, A–Z”; filters limited to Availability and Price.
  • Search: the query persists in a labelled field with an explicit result count and non-product content is findable — the fundamentals are right.
  • But no related-searches row, no spelling correction or “showing results for…”, no designed no-results state, and the non-product “Page” tile ranks alongside the product.

After

  • Cards with 3–4 images that swap on pointer position with progress dots, a gold pack-quantity badge, and the review empty state carried onto every card.
  • Default sort “Featured”; filters for Pre-order, Subscription and Bundles — the axes that actually exist in this range.
  • A search overlay with a labelled “Related searches” row, products scored above page tiles, and misspelling correction (“ginsing” → ginseng) with a “showing results for” line.
  • A symptom and benefit vocabulary in the index so “burnout”, “fatigue” and “focus” reach the product. Flagged as custom development — Shopline's native search-autocomplete and faceted filtering cover the rest.
Full-page captures · scroll inside each frame · click to zoom
Beforekorjin.com/collections/all
korjin.com/collections/all
Before · collection — korjin.com/collections/all
Scroll · click to zoom

The full catalogue as it lists today.

Afterkorjin.powercommerce.com/shop
korjin.powercommerce.com/shop
After · shop — korjin.powercommerce.com/shop
Scroll · click to zoom

Product ranking in the prototype is arbitrary placeholder merchandising, pending the client's real priority.

More pages from this section
Beforekorjin.com/search?q=ginseng
korjin.com/search?q=ginseng
Before · search — korjin.com/search?q=ginseng
Scroll · click to zoom

Stock Dawn results — two results and a Page tile at equal weight.

Afterkorjin.powercommerce.com
korjin.powercommerce.com
After · search overlay — korjin.powercommerce.com
Scroll · click to zoom

The overlay as it opens, with related searches offered before a query is typed.

05 · Proof

Proof for a Brand With Nothing to Cite Yet

The client's stated blocker was plain: pre-launch, no social proof, no reviews to convert the first sales. The wrong answer is to invent some. The design builds trust modules a shopper can check for themselves — a batch certificate of analysis, the province the root comes from, the nine steamings shown as a sequence, and copy that admits the product is bitter and explains why. The customer-stories rail, below, takes the same position on video.

Before

  • Judge.me installed, rendering nowhere. A store about to launch shows no social-proof scaffolding at all — not even an empty state.
  • The process story lives on a page called “How It's Made”, reachable from the nav but not present where the buying decision happens.
  • No customer Q&A, and no site-provided Q&A outside the homepage accordion.
  • Pre-order framing is honest and clear — refundable deposit, stated ship window, cancel before shipment — and is one of the store's real assets.

After

  • A batch COA reader — pick a batch, read the panel. The strongest trust asset precisely because it is checkable, which is why the prototype's values are labelled as representative and the lab reads “Independent lab — name pending” rather than naming a real testing company against invented numbers.
  • Geumsan provenance and the nine-steaming process as a pinned scroll sequence — CSS position: sticky and eight lines of scroll listener, no animation library.
  • “Honest bitterness” copy: the product tastes bitter, here is why that is the point.
  • A designed reviews empty state on the product page and every card, with a “Reserve first review” capture — social proof scaffolding that is ready on day one and truthful on day zero.
Full-page captures · scroll inside each frame · click to zoom
Beforekorjin.com/pages/how-its-made
korjin.com/pages/how-its-made
Before · how it's made — korjin.com/pages/how-its-made
Scroll · click to zoom

The existing process page — good material, far from the buy button.

Afterkorjin.powercommerce.com/science
korjin.powercommerce.com/science
After · science & COA — korjin.powercommerce.com/science
Scroll · click to zoom

Batch data shown here is representative placeholder, labelled as such in the interface. Real COAs replace it before launch.

More pages from this section
Afterkorjin.powercommerce.com/ritual
korjin.powercommerce.com/ritual
After · ritual — korjin.powercommerce.com/ritual
Scroll · click to zoom

The 30-day course as a page: three phases, ten sachets each. Effects-timeline claims are placeholder pending compliance approval.

Afterkorjin.powercommerce.com/story
korjin.powercommerce.com/story
After · story — korjin.powercommerce.com/story
Scroll · click to zoom

The founder pull quote on this page is placeholder copy written by us and attributed by name. It must be replaced with something the founder actually said, or cut, before this page is shown to anyone as final.

06 · Customer stories

The Section That Ships With No Customers In It

The merchant asked for a customer video section. Korjin has no customers — it has not launched. A filled rail would mean inventing people, which is the one move that would undo everything the rest of the storefront is built to earn. So the section ships with no customer content in it at all, and says so: three promises about what will go in it, beside the 30-day course the first films will follow. A designed statement rather than a gap waiting to be filled. A demo toggle exists only so the shoppable mechanic can be shown to the merchant.

Before

  • No customer-content surface exists on korjin.com — no video, no testimonials, no user photos, and no reviews rendering despite Judge.me being in the product-page markup.
  • The brand's own proof lives on a page called “How It's Made”, reachable from the nav but nowhere near the buying decision.
  • Nothing on the live store states how social proof will be collected or published — so there is no position to hold when the first testimonials arrive.

After

  • Launch state — what actually ships. “The first stories haven't been told yet”, the three promises, and a “What the films will follow” column showing the real course — Phase I Awaken, II Rebuild, III Sustain, with the actual box renders and day ranges — plus two CTAs into the founders circle and the ritual page.
  • Three promises published before there is anything to publish: every video comes from a verified order — no gifted posts, no actors; published unedited, and if someone says it tastes awful that stays in; filmed at day 30, not day 3, because that is when the course is done.
  • Demo state — merchant-facing only. Four sample tiles built from brand stills, each watermarked SAMPLE, named “Sample tile” rather than given an invented identity, and captioned “format demonstration only”. Both the tiles and the day-markers are logged in the placeholder register.
  • The mechanic the Shopline build has to reproduce: a 9:16 tile opens a modal player with the product tagged beside it and add-to-cart inside the video. Maps to a Shopline UGC / video-commerce app with product tagging.
Full-page captures · scroll inside each frame · click to zoom
Beforekorjin.com
korjin.com
Before — korjin.com
Scroll · click to zoom

The live homepage has no customer-content surface anywhere on it — no video, no testimonials, no user photos, and no reviews rendering despite Judge.me being in the product-page markup. Where the section below sits, the live page runs sourcing panels and an FAQ accordion.

Afterkorjin.powercommerce.com
korjin.powercommerce.com
After · stories, as it ships — korjin.powercommerce.com
Scroll · click to zoom

The homepage in its default state. The customer-stories section sits below the fold as an invitation — three published promises beside the 30-day course the first films will follow. No invented people, no borrowed testimonials.

More pages from this section
Afterkorjin.powercommerce.com
korjin.powercommerce.com
After · stories, demo state — korjin.powercommerce.com
Scroll · click to zoom

The filled state behind the demo toggle, for showing the merchant the mechanic. Every tile is watermarked SAMPLE, named “Sample tile”, and the rail carries a caption saying no real customer content exists yet. This state must not ship.

Afterkorjin.powercommerce.com
korjin.powercommerce.com
After · shoppable player — korjin.powercommerce.com
Scroll · click to zoom

The mechanic the build has to reproduce: 9:16 video, the product tagged beside it, and add-to-cart without leaving the video. Maps to a Shopline UGC / video-commerce app with product tagging.

Design Decisions

What Changes, and Why

The material changes between korjin.com and the proposed storefront — what changes, why, and which Uplift standards the reasoning draws on. Ten of these answer prioritised changes from the internal review; the last two are brand decisions the review did not ask for and, in one case, actively argued against.

Before — The primary action is the native Add-to-Cart
Before
After — The primary action is the native Add-to-Cart
After
Product page

The primary action is the native Add-to-Cart

A full-width solid oxblood Add-to-Cart becomes the single most dominant control in the buy box, with express checkout as a ghost button beneath it. The outlined Add-to-Cart under a solid Shop Pay is inverted.

Why. The hierarchy today points at the accelerated checkout. That is a CRO problem on Shopify and a migration problem on Shopline, where Shop Pay does not exist — designing around it would mean rebuilding the buy box twice.
CRODesignUPLIFT-0791
Before — A reviews layer that is honest on day zero
Before
After — A reviews layer that is honest on day zero
After
Product page

A reviews layer that is honest on day zero

Two states in one module. The launch state is an empty-state star row near the title linking to a designed reviews section reading “No reviews yet — be the first”, with a capture form; every collection card carries it too. The second is a working demo of a Judge.me / Yotpo-class widget — rating summary, star distribution, attribute scores, filters, photo reviews, merchant replies — on sample data, so the app decision can be made before the Shopline build rather than after.

Why. Judge.me is installed and renders nowhere, so a launching brand shows no social-proof scaffolding at all. The empty state is the answer a pre-launch supplement brand can actually ship — inventing entries is the one failure that would undo the whole trust argument. The demo exists because a review widget cannot be evaluated from an empty state, and it is bounded so it can never be mistaken for the real thing: a standing banner above the score, a Sample chip on every card, reviewers named “Reviewer A–G”, and every figure derived from the entries rather than authored.
CROBrandUPLIFT-1134 · UPLIFT-2284 · UPLIFT-1709
Before — A customer-video section for a brand with no customers
Before
After — A customer-video section for a brand with no customers
After
Homepage · social proof

A customer-video section for a brand with no customers

A shoppable customer-stories rail — 9:16 tile, modal player, the product tagged inside the video, add to cart without leaving it. It ships in its launch state: “The first stories haven't been told yet”, three stated promises — verified orders only, published unedited, filmed at day 30 — and the real 30-day course beside them as what the films will follow. A demo toggle swaps in sample tiles so the mechanic can be shown; those tiles are watermarked SAMPLE, named “Sample tile” rather than given invented identities, and captioned as format demonstration only.

Why. The merchant asked for a testimonial section. Korjin has no customers yet, so filling one would mean inventing people — the single move that would undo the trust argument the rest of the storefront rests on. Publishing the empty state as a designed, committed thing turns the gap into an argument: it says what the brand will and won't do before it has anything to show. The same discipline as the reviews empty state, applied to video.
BrandCRODesignUPLIFT-1709 · UPLIFT-0759
Before — The whole cost, before the commitment
Before
After — The whole cost, before the commitment
After
Cart

The whole cost, before the commitment

The order summary shows subtotal, discount, a shipping line (“Free” or the flat rate), an estimated tax line and the total — plus a free-shipping meter. The announcement bar reads the same threshold constant the cart does.

Why. Today the cart shows “Estimated total $19.00 USD” and defers everything to checkout while the banner promises free shipping with no stated conditions. The two messages contradict each other, and the shopper commits before seeing the number.
CROUPLIFT-0732 · UPLIFT-0825 · UPLIFT-0826 · UPLIFT-2320 · UPLIFT-0544
Before — A delivery promise where the decision is made
Before
After — A delivery promise where the decision is made
After
Product page & cart

A delivery promise where the decision is made

A delivery line sits inside the buy box and beside the Checkout button: the pre-order window with its refundable-deposit terms, or a dated range once launched.

Why. The only timing signal today is “Ships October 2026” rotating in the announcement bar, far from where the shopper decides. A date-based promise also survives the launch transition — a speed promise (“ships in 2 days”) does not.
CROUPLIFT-0543 · UPLIFT-0802
Before — Video, because the product is sensory
Before
After — Video, because the product is sensory
After
Product page

Video, because the product is sensory

An inline autoplay video slot in the main gallery, and a full-screen lightbox on tap or click. A hover-activated external zoom pane with a lens was built to answer the review, then removed at the client’s request; mobile pinch-to-zoom is left alone.

Why. A nine-steamed black ginseng extract is unfamiliar; process, scale and texture are what make it comprehensible. An image-only gallery with a lightbox under-serves that. Both are Shopline natives, so this is configuration rather than custom work.
CRODesignUPLIFT-0759 · UPLIFT-0781 · UPLIFT-2991
Before — Somewhere to put it down
Before
After — Somewhere to put it down
After
Cart

Somewhere to put it down

Per-line save-for-later that persists for signed-out shoppers, a recently-viewed strip, and an added-to-cart drawer showing thumbnail, name, price, quantity, plan and savings.

Why. The cart is transaction-only, so a shopper who isn't ready can only remove the item or leave. On a pre-order with an October ship window, “not ready yet” is the common case, not the edge case.
CROUPLIFT-0622 · UPLIFT-0827 · UPLIFT-1490
Before — A card that does some selling
Before
After — A card that does some selling
After
Collection

A card that does some selling

Three to four images per card with pointer-position hover-swap and progress dots, a gold badge for the pack quantity, the review empty state, a merchandising-led default sort, and Pre-order / Subscription / Bundles filters.

Why. One thumbnail, the pack size hidden in title text, an alphabetical default sort and Availability/Price filters is thin merchandising for one SKU and a liability the moment the catalogue grows.
CRODesignUPLIFT-2840 · UPLIFT-0445 · UPLIFT-0511 · UPLIFT-0417 · UPLIFT-1039
Before — Search that understands what the brand sells against
Before
After — Search that understands what the brand sells against
After
Search

Search that understands what the brand sells against

An overlay with a labelled related-searches row, products ranked above page tiles, misspelling correction with a “showing results for” line, and a designed no-results state that routes onward.

Why. The brand markets against symptoms — burnout, fatigue, cold hands — and the default engine maps none of them to a product. For a symptom-led brand, a search that returns nothing is a lost sale with intent attached.
CROUPLIFT-0358 · UPLIFT-0355 · UPLIFT-0338 · UPLIFT-1001
Before — Marketing in one block, facts in another
Before
After — Marketing in one block, facts in another
After
Product page

Marketing in one block, facts in another

Factual accordions — description, supplement facts, dosage and storage, shipping — with the persuasive copy isolated in a labelled “Why it works” band.

Why. Persuasive and factual copy are interwoven today, and there is no dosage guidance, storage instruction or complete supplement-facts panel. On an ingestible product that is a compliance exposure as much as a UX one.
CROBrandUPLIFT-1238 · UPLIFT-2862
Before — Measured, not asserted
Before
After — Measured, not asserted
After
Accessibility

Measured, not asserted

Every input labelled, exactly one H1 per page, meaningful alt text rather than decorative defaults, secondary text at 4.5:1 in both grounds, aria-invalid plus aria-describedby on form errors, aria-live on cart updates, and 44px pointer targets in the header.

Why. The live gaps are theme defaults repeating across every template, which means they are cheap to fix once at the token and component layer and expensive to retrofit later. Measured on the live store: two unlabelled inputs each on the homepage and product page, and two H1s on the cart; zero of both on the prototype. Verified by a custom contrast auditor across 15 pages × 2 grounds — four failures found and fixed, including brand gold, which clears AA on the black band and fails on oxblood at 3.98:1. Lighthouse accessibility is 100 on every prototype template, mobile and desktop — including the two regressions this report carried on 27 August, an undersized ground-switch control and a footer link distinguished by colour alone, both since fixed.
A11yUPLIFT-1541 · UPLIFT-1545 · UPLIFT-1591 · UPLIFT-1594 · UPLIFT-1661
Before — The palette question, now decided
Before
After — The palette question, now decided
After
Brand system

The palette question, now decided

Both ground directions ship and switch at runtime, and the dark-led one is now what the storefront opens on. Cream-led follows the brand guide's Hanji Cream with oxblood and gold and stays one toggle away. Both resolve from the same semantic tokens — nothing was rebuilt to make the switch.

Why. Our own review said to port the live palette — the dark oxblood ground, brick-red primary and Noto Sans — because it is the store's biggest asset and the thing most easily lost on migration. The brand guide and the client's design survey both point the other way, and the live palette has drifted from the book. Rather than pick for the client, both directions are built so the decision is made by looking at real pages. This is Justin's call, and it is still open.
BrandDesignUPLIFT-0238 · UPLIFT-1707
Before — The packaging already had the range on it
Before
After — The packaging already had the range on it
After
Merchandising

The packaging already had the range on it

The 30-day course becomes the organising idea across the site: Phase I Awaken (days 1–10), II Rebuild (11–20), III Sustain (21–30), driving the bundle ladder, the subscription intervals and the story.

Why. No standard asked for this. The client's own packaging is already printed with a three-act structure that the live site never mentions — and it is the only thing that turns a one-SKU catalogue into something with a range, a reason to subscribe and a second thing to say.
BrandCRO
Technical Health

Every Figure, Side by Side

Measured in Chromium at desktop 1440px and mobile 390px. The korjin.com column was measured on 23 August 2026 and the live store has not changed since — the concentrated-extract page still 404s. The prototype column was re-measured on 27 August 2026, against the current deployment. The prototype serves the brand guide's photography as sized WebP rather than full-resolution originals, and carries no analytics, email or reviews apps: those arrive at build time as Shopline natives, so the request and third-party columns will rise before launch. Its one third-party host is Google Fonts; the Power Commerce review-comment widget it also loads is served from a powercommerce.com subdomain, so the same-origin measurement does not count it — it is stripped before the Shopline build either way.

MetricBefore · korjin.com (Shopify Dawn V2)After · storefront design (prototype)
Requests — homepage28128
Transfer — homepageDesktop 1440px. Mobile: 1,880 KB → 272 KB.2,077 KB470 KB
Third-party hosts — homepageBefore: Shopify CDN and shop.app, Klaviyo ×3, Omnisend ×3, Google Tag Manager, Google Analytics, DoubleClick, Merchant Center, Facebook ×2, Shopify telemetry ×2. After: Google Fonts.171
Requests — product pageThe heaviest template on the live store.35431
Transfer — product page2,458 KB311 KB
Requests — cart27522
Transfer — cart1,729 KB75 KB
DOM nodes — homepage1,632342
Load event — mobile homepageUnthrottled, median of three runs. The review separately measured a 3,235 ms mobile page load on the live store.1,563 ms637 ms
Load event — mobile product pageUnthrottled, median of three runs.1,670 ms819 ms
Email / marketing apps on the storefrontTwo email platforms load side by side on the live store. The prototype has a front-end-only capture; the real wiring is a build decision.Klaviyo + Omnisendnone yet
Typefaces loadedBoth prototype faces are Google Fonts stand-ins for the brand guide's licensed Displace 2.0 and Brooklyn. Licensing is an open decision.Noto Sans, Cormorant, GTStandard-M, ArialMarcellus, Jost
Unlabelled form inputs — homepage / product page2 / 20 / 0
H1s on the cart page21
Reviews layer visible on product page / cardJudge.me's widget stylesheet and jdgm-* classes are in the live product page markup and render on neither surface. The prototype ships an honest “No reviews yet — be the first” state on both — never a fabricated entry.none / noneempty state / empty state
Customer-video / testimonial surfaceThe live store has no customer-content surface at all. The design ships the rail in its launch state — the promises beside the real 30-day course, no customer content invented; the sample-tile demo state is a merchant-facing toggle, watermarked SAMPLE, and must not ship.noneinvitation + 3 promises
Cost lines shown in the cart before checkoutBefore: “Estimated total $19.00 USD”. After: subtotal, discount, shipping, estimated tax, total — plus a free-shipping meter and the savings line.15
Templates815
Failed resources in the consoleRecorded during the 22 August crawl of the live store.3 × net::ERR_FAILED + 1 × 4030
Lighthouse

Performance · Accessibility · Best Practices · SEO

Lighthouse 12, throttled mobile preset and desktop preset. The korjin.com runs are from 23 August 2026; the prototype was re-run on 28 August 2026 against the current deployment, and four things need saying plainly. The prototype's SEO score of 58–66 is deliberate — it is served with X-Robots-Tag: noindex so a design carrying placeholder supplement claims never reaches a search index, and Lighthouse scores that as a failure. Accessibility and Best Practices now read 100 on every prototype template, mobile and desktop: the review-comment widget's stale integrity hash and the header's undersized ground-switch control — both reported here on 27 August — are fixed, as is a footer link that was distinguished by colour alone. Layout shift is clean on mobile: 0.000 on the home, product and shop pages, against 0.405 on the product page a day earlier; the gallery column had no reserved height between first paint and its swipe track being built. What remains is desktop-only — the shop page at 0.099 and the cart at 0.114 — and both are on the punch list. The live store's Best Practices sits at 78–79 on every template, which is still the most consistent signal in the whole run.

Homepage mobile

Performance
Before66
Design98
Accessibility
Before96
Design96
Best Practices
Before79
Design96
SEO
Before100
Design66

Collection / shop mobile

Performance
Before80
Design98
Accessibility
Before100
Design96
Best Practices
Before79
Design96
SEO
Before92
Design66

Product page mobile

Performance
Before81
Design75
Accessibility
Before93
Design97
Best Practices
Before79
Design96
SEO
Before100
Design66

Cart mobile

Performance
Before84
Design89
Accessibility
Before96
Design96
Best Practices
Before79
Design96
SEO
Before92
Design66

Homepage · desktop desktop

Performance
Before97
Design99
Accessibility
Before96
Design100
Best Practices
Before78
Design96
SEO
Before100
Design66

Product page · desktop desktop

Performance
Before96
Design95
Accessibility
Before93
Design100
Best Practices
Before78
Design96
SEO
Before100
Design66
BeforeDesign
Findings Register

25 Findings, Each With Evidence and a Fix

Everything we found on the current site, what we changed, and where each item stands today. Filter by severity or area.

SeverityFindingWhat we didAreaStatus
high Accelerated checkout outranks the primary Add-to-Cart
The Add to Cart is a low-emphasis outlined button; the solid purple “Buy with Shop Pay” below it dominates the buy box.
Full-width solid oxblood Add-to-Cart as the single dominant control; express checkout as a ghost button beneath. Product page In the design
high Judge.me installed, rendering nowhere
Judge.me's widget stylesheet and its jdgm-* class set are present in the product page markup — 48 references — yet no star average, review count or “no reviews yet” indicator renders on the product page or the collection card.
Designed empty-state star row near the title linking to a reviews section, and the same state on every card — built on Shopline's native product reviews. Product page In the design
high Free-shipping message contradicts the cart
The announcement bar rotates “Free Shipping Available” while the cart states “shipping calculated at checkout” with no qualifying conditions shown.
Banner and cart both read one FREE_SHIP_THRESHOLD constant; the cart shows a shipping line and a progress meter. Cart In the design · needs client policy
high No total order cost estimate near Checkout
“Estimated total $19.00 USD” with taxes, discounts and shipping all deferred to checkout.
Subtotal, discount, shipping, estimated tax and total in the drawer and on the cart page, computed from one store module. Cart In the design
high No product video and no hover zoom
The gallery is image-only with a Dawn lightbox model; no magnifier trigger, no external zoom window, no inline video.
Inline autoplay video slot and a full-screen lightbox. The external zoom pane was built and then withdrawn at the client’s request, so the magnifier half of this finding is not answered by the design as it stands. Product page Partly in the design · zoom withdrawn, needs real product film
high No delivery estimate near the buy actions
The only timing signal is “Pre-Order Now (Ships October 2026)” rotating in the announcement bar.
Delivery line inside the buy box and beside Checkout, in both the pre-order and launched states. Product page In the design
high Cart is transaction-only
Line items offer quantity adjustment and remove; no save-for-later, no recently-viewed, no cross-sell.
Per-line save-for-later persisting signed-out, plus a recently-viewed strip — Shopline wishlist and recently-viewed natives. Cart In the design
high The second product 404s, and the homepage still links to it
Checked 23 August 2026: /products/korean-black-ginseng-concentrated-extract returns 404, and /collections/all reports “1 product”. The homepage markup still carries a link to that handle, so the store's own front page points at a dead page. The 22 August review was written while the product was reachable.
Both SKUs live in the shop, filterable, with the concentrate as a genuine cross-sell from the sticks PDP and in the cart drawer. Whatever the reason for the unpublish, the redirect map has to cover the handle so the link doesn't carry the 404 across the migration. Collection In the design
high One thumbnail, no rating, alphabetical default sort
The single card exposes one image; the 30-pack quantity is legible only inside the title; default sort is “Alphabetically, A–Z”; filters are Availability and Price only.
3–4 hover-swap images, gold pack badge, review empty state, merchandising-led default sort, Pre-order/Subscription/Bundles filters. Collection In the design
high No supplement facts, dosage or storage guidance
Persuasive copy is interwoven with factual detail; no usage/dosage instruction, no storage advice, no complete supplement-facts panel on an ingestible product.
Factual accordions with a complete supplement-facts table; persuasive copy isolated in a labelled band. Product page In the design · needs lab + compliance sign-off
Medium Symptom queries reach nothing
The brand markets around burnout and fatigue; the default engine maps no symptom terms to products, and the placeholder is a plain “Search”.
Symptom/benefit vocabulary in the search index, related-searches row, misspelling correction, designed no-results state. Search In the design · vocabulary is custom dev
Medium Non-product page tiles rank alongside the product
The results page shows the “How It's Made” page tile at equal weight with the two products, and no related-search suggestions.
Products scored above page tiles in the overlay; labelled related-searches row above results. Search In the design
Medium Theme-default accessibility gaps across every template
Measured on the live store: two unlabelled inputs on the homepage and two on the product page, two H1s on the cart page, and muted text below 4.5:1 on the dark ground. The review additionally flags a truncated PDP title and duplicate utility headings. Alt text is the exception — every image carries the attribute, though six of eleven on the homepage are marked decorative.
Fixed at the token and component layer: 15 pages × 2 grounds contrast-audited (4 failures fixed), Lighthouse accessibility 100 desktop and mobile, keyboard and live-region behaviour verified by hand. Accessibility In the design
Medium 281 requests and 2.0MB on the homepage, 354 on the product page
17–18 third-party hosts across templates; mobile page load measured 3,235ms.
Own-origin assets, sized WebP at 400/800/1200/1800w, and no animation library at all — GSAP, ScrollTrigger and Lenis were trialled and removed. Performance In the design
Medium Three failed resources and a 403 in the console
3× net::ERR_FAILED plus a 403 recorded during the crawl of the live store.
Identify and resolve or remove before migration — on a brand with no traffic yet, broken tracking is invisible until the data is needed. Technical Build · migration infrastructure
high No redirect or metadata map exists
Products, collections, pages and four blog articles are indexed under Shopify URLs; a platform change without 301s 404s them on day one.
A full 301 map plus product and breadcrumb structured data. The prototype ships Product JSON-LD on both product pages as a starting shape. Migration Build · out of prototype scope
high Shop Pay has no Shopline equivalent
The dominant control in the current buy box is a Shop Pay express button.
The design treats the native Add-to-Cart as primary and express as subordinate, so nothing depends on Shop Pay existing. Migration In the design
high Pre-order deposit mechanics will not carry across
The refundable-deposit model is Shopify app behaviour; the review flags it, localization, the Judge.me integration and Klaviyo wiring as things the store does quietly that migrate silently to nothing.
Scope the Shopline pre-order app early — the buy box design assumes refundable-deposit semantics. Migration Build · client decision
Medium The live palette has drifted from the brand book
korjin.com runs a dark oxblood ground with a brick-red primary and Noto Sans; the guide specifies Hanji Cream, oxblood, gold, Displace 2.0 and Brooklyn.
Both directions built and switchable from one token layer, so the client decides on real pages. Our review argued for preserving the live palette; the guide and the client survey argue the other way. Brand Client decision · open
Medium Mobile homepage LCP of 15.7s on the live store
Lighthouse 12, throttled mobile preset: performance 66, LCP 15.7s, TBT 240ms on korjin.com. Desktop is fine at 97 — the cost lands on mobile.
Own-origin sized WebP and no app payload in the critical path. The prototype's mobile homepage measures LCP 3.5s at performance 89, before analytics and email are wired back in. Performance In the design
Medium Best Practices at 78–79 on every live template
The most consistent signal in the Lighthouse run — identical across home, collection, product and cart, on both form factors. Third-party cookies and the failed resources are the likely drivers.
Audit the app payload during migration; the prototype scores 100 on every template, though it carries no apps yet. Technical Build · migration infrastructure
Medium Two prototype templates still shift on desktop — shop 0.099, cart 0.114
Re-measured on 28 August against the current deployment: shop 0.099 desktop (down from 0.199 on 23 August) and cart 0.114. Both are clean on mobile — 0.000 and 0.006 — and every other prototype template is under 0.01, so these two are the outliers.
The same fix as the other three: reserve the height of what JS injects. The shell, the review module and the mobile gallery all now do it; the shop card grid and the cart’s line list are what is left. Prototype Prototype punch list
low The mobile product page shift — fixed
Was 0.405 on 27 August and 0.293 on the first 28 August run, with mobile performance at 71–76. The gallery column had no height between first paint and the swipe track being built, so the buy panel was laid out 389px too high and then pushed down.
Reserved the track's own shape — a square slide plus the dot row — dropped by :has() the moment the track exists. Re-measured 28 August: CLS 0.000, mobile performance 91. Prototype Fixed 28 August
low Launched buy state doesn't propagate past the product page
With the launched state on, the product page reads “In stock · order today, delivered …” while the cart drawer, cart page and checkout still print the pre-order deposit line.
Read the buy state from one place, as the free-shipping threshold already is. Prototype-only — the demo switch does not ship to Shopline. Prototype Prototype punch list
low The customer-stories demo state must not reach launch
<korjin-stories> defaults to its launch state — an invitation, three promises, and the real 30-day course as what the films will follow. A demo toggle swaps in four sample tiles built from brand stills; they are watermarked SAMPLE, named “Sample tile” and captioned as format demonstration only, and both are logged in the placeholder register.
Ship the launch state. Replace the sample tiles with real verified customer video at day 30, and strip the demo toggle with the rest of the prototype scaffolding. Prototype Prototype punch list
Stated Plainly

What's Still in Progress

You should hear it from us rather than find it later. The punch list to launch, with owners.

1

Fix the last two desktop layout shifts

Shop 0.099 and cart 0.114 on desktop on 28 August, against under 0.01 on every other template and 0.000–0.006 on mobile. Both are the same cause as the three already fixed — a region built by JS with no height reserved for it — and both want doing before the design is presented as measured-and-clean.

Prototype punch list
2

Decide whether the review demo ships on the shared link

The product pages currently open on the review app demo rather than the launch state, so the first thing a visitor sees is a 4.4 average over seven sample reviews. It is banner-marked, chipped Sample on every card and the reviewers are unnamed, but it is one flag in the code to flip back to “No reviews yet — be the first”. Worth settling before the design is shown to anyone outside the project.

Client decision
3

Replace the founder pull-quote on the story page

The quote on the story page is placeholder copy we wrote to size the layout, and it is attributed to Justin by name. He never said it. It reads plausibly, which is exactly the problem. Replace it with his own words or cut the quote and keep the section as third-person copy — either way, before that page is shown as final.

Client decision
4

Ground direction — decided: dark-led

Both directions are still built and switch at runtime on every page. The storefront now opens dark-led; cream-led is one toggle away and still follows the brand guide and the survey’s “60% modern minimal”. Nothing was rebuilt to make that switch — both resolve from the same semantic tokens.

Settled
5

Plan how the first customer stories get captured

The rail publishes three promises — verified orders only, unedited, filmed at day 30. That is an operational commitment, not a design one: someone has to reach the founders circle at day 30 and collect vertical video. Worth agreeing before October, because the section is built to stay empty until it can be filled honestly.

Client decision
6

Typeface licensing

Displace 2.0 and Brooklyn are the brand guide's faces and are not bundled. The prototype substitutes Marcellus and Jost. Decide before the theme build — swapping later reflows every page.

Client decision
7

Confirm the free-shipping policy

The prototype states a $50 threshold and $6 flat rate everywhere from one constant. Those numbers are assumed. The audit's P1 cart finding cannot be closed until the real policy is confirmed; once it is, it changes in one place.

Client decision
8

Confirm retail pricing and the offer structure

$79 sticks / $96 concentrate, subscribe 15%, bundles 5–10%, and the discount codes are all prototype figures. Real pricing drives the bundle ladder and the free-shipping meter.

Client decision
9

Replace the placeholder content register

28 logged items — supplement facts, COA batch values and the lab name, dosage and storage copy, the ×8 Rg3 claim, journal article bodies, the gallery film, and the founder quote on the story page, which we wrote and attributed by name and which must be replaced or cut before that page is shown as final.

Client decision
10

Lab verification and compliance review

Supplement facts, the ginsenoside multipliers, dosage and contraindication copy, the 30-day guarantee and the FDA disclaimer wording all need verification and counsel review before they go near a live supplement product.

Client decision
11

Scope the Shopline pre-order app

The refundable-deposit model is the thing most likely to be lost silently in migration. The buy box design assumes deposit semantics, so this needs scoping before the product page is built.

Scheduled
12

Build the 301 redirect and metadata map

Every indexed Shopify URL — both products, the collection, three pages, four blog articles — mapped to its Shopline equivalent, with product and breadcrumb structured data. Before launch, not after.

Scheduled
13

Rebuild what the Shopify store does quietly

Judge.me → Shopline native reviews, localization and currency switching, Klaviyo wiring, and the Shopify Inbox chat kept customer-initiated and non-sticky on mobile. None of it carries across on its own.

Scheduled
14

Resolve the failed console resources

Three net::ERR_FAILED resources and a 403 on the live store. Identify and fix or remove them as part of the migration audit.

Scheduled
15

Build on Shopline

Token layer first, then the shell, then the product page — the weakest surface and where five of the twelve changes land. Cart and drawer next, then collection and the content templates. Every component is mapped to a Shopline native or flagged as custom development.

Scheduled
16

Verification still open

No real screen-reader pass has been run, reduced motion was checked by rule inspection rather than under an OS setting, viewport emulation is not a device, and the prototype's Lighthouse runs were unthrottled. Treat these as open, not passed.

Build
Your Store Next

Want Your Storefront on This Page?

We audit before we quote: a full CRO / UX read of your current store, page by page, with every figure measured — then the plan to fix it.