Quitine
A nicotine replacement brand that outgrew its Shopify theme. The client brought the design; we built the headless store under it, and a way to run the whole site by asking Claude.
- Client
- Pharmacist-founded nicotine replacement brand
- Industry
- Health & ecommerce
- Shipped
- 2026
- Live at
- quitine.com
A theme can only do what a theme does.
Quitine sells pharmacist-led nicotine gum, lozenges and patches, with a 90-day plan behind them. The store ran on a Shopify theme, and the theme had become the ceiling. The client wanted to put out a landing page in an afternoon, control every element on every page, and ship things a theme does not allow: a quiz that builds a kit and goes straight to checkout, chromeless pages for ad traffic, A/B tests on whole pages.
The design came from the client's own team. Our job was everything underneath it: the store, the content system, and the way it gets edited.
The store, headless.
A SvelteKit storefront on Cloudflare Workers. Shopify keeps what it is good at: products, cart, checkout, customer accounts, subscriptions. Everything else moved to Sanity, including 177 articles brought across from the Shopify blog with their addresses redirected.
Pages are built from a system of 45 blocks in four layers: atoms into molecules into wrappers into sections, each one a Sanity schema and a Svelte component. The same blocks make a product page, a resource article, or a listicle: a chromeless landing page for ad traffic with an offer or a quiz that lands in checkout. The Quit Quiz scores answers into nine outcomes with discount tiers; the kit builder prices a bundle live as it is assembled. A/B tests run on whole pages: a variant document in Sanity, a flag in PostHog, and the split decided on the server before the page is sent.
Design by Quitine's team. We built what runs it.
Run by asking Claude.
The client did not want a CMS to learn. He wanted to say what he needed. So the editing layer is a Claude skill we wrote: what the site is made of, every block and every field, how a page is put together, how the quiz works, how tracking and A/B tests are wired. Installed in his own Claude, next to the Sanity MCP and a small MCP of ours that uploads images, it turns a request into the work. New landing page for a campaign. Duplicate this page and change the hero. Add three FAQs. Import this article with its images. Set up a test on the homepage.
The rules are in the skill: read before writing, drafts first, publish only when he confirms, never invent a field, ask before touching anything shared. It also says plainly when a request needs a developer, which is rare. When the content model changes, the skill is updated with it, so Claude never knows a version of the site that no longer exists.
The numbers.
Double
digit growth in sales
since the move off the theme, by the client's count
0
developers needed for a new landing page
the client asks Claude; it drafts first and publishes on confirmation
45
building blocks
10 atoms, 16 molecules, 6 wrappers and 13 sections, all editable by asking
177
articles moved off Shopify
into Sanity, with the old addresses redirected
0
code changes to run an A/B test
a variant page in Sanity and a PostHog flag, split on the server
The sales figure is the client's and is published as a range on purpose. Counts from the code, September 2026.
Theirs to keep.
Shopify, Sanity and Cloudflare are all Quitine's own accounts, and Claude runs on the client's own subscription. The skill is a folder in the repository, so the next person to work on the site inherits the same instructions the client uses.
- SvelteKit
the storefront, on Cloudflare Workers
- Shopify
products, cart, checkout, customer accounts, subscriptions
- Sanity
every page and article, with click-to-edit preview
- Claude
the editor, through our skill and the Sanity MCP
- PostHog
analytics and the A/B split
- Klaviyo
email, quiz results and cart recovery















