This week's highlights: a near top-to-bottom rebuild of an LED skin therapy consultation tool

A woman relaxing in a sauna wrapped in soft towels, evoking the calm, considered self-care world that luxury skincare customers move through

TLDR: A near top-to-bottom rebuild of the guided skin consultation tool for a premium LED light therapy brand, a customer-account invoice and supplier-order portal for a speciality coffee roaster, flat-lay proportions tooling for a premium basics apparel brand, an alt-text and image optimisation suite for a clinical-grade skincare house, and a launch build for a countryside estate with exclusive-hire accommodation.

Every so often a fortnight lands where almost every project moves at the same time. This was one of those. The team pushed work across a luxury skincare quiz rebuild, a speciality coffee wholesaler's self-service portal, an apparel brand's flat-lay tooling, a countryside hospitality app, and a long list of smaller improvements that I am not even sure we will get to in this post.

There is a common thread running through most of it, if I squint. We spent less of this fortnight adding new features and more of it making existing features feel right. Layouts breathing properly. Buttons where thumbs actually land. Tokens passing through systems that did not want to pass them. The unglamorous middle of the product, in other words, which is usually where the difference between "it works" and "it feels good" gets made.

Here is what stood out.

This week's highlights: a near top-to-bottom rebuild of an LED skin therapy consultation tool

The headline work of the fortnight is a near top-to-bottom rebuild of the guided consultation tool for a premium LED light therapy skincare brand. The goal was to turn what had been a functional but unremarkable multi-step quiz into something that actually belongs next to the rest of their brand world, which trades heavily on cinematic product photography and a very particular sense of calm.

The reveal is a good place to start, because it is where most customers make up their minds. The old version produced a recommendation and a link. The new one opens up inline on completion, walks the customer through why this device is the right fit for their answers, shows the routine it slots into, surfaces other devices that would complement it, and then offers to email the plan or drop it straight into the calendar as a reminder. It reads more like a concierge recommendation and less like a form result, which was the whole point.

On the way there, we moved the full-page version of the quiz to a dedicated, memorable URL. We gave each question its own cinematic hero image that cycles as the customer moves through the flow. We added a video background to the intro screen so the first thing a customer sees feels like a campaign rather than a questionnaire. We also went back through every answer icon on mobile and re-seated the primary actions into the thumb zone. Testing showed people were bailing out at the question step rather than the results step, and that almost always comes down to reach.

Behind the scenes the logic model changed entirely. We pulled out the old leaf-map-plus-template approach and replaced it with per-answer device weighting, editable directly from the admin. That means the client's team can now tune which answers push toward which devices without us touching code, which matters enormously when their range evolves or a new device lands. We also swapped the last of the older product lookups for the modern Shopify Admin API, tidied up the Shopify admin component usage so the admin side feels native to Shopify, and wired up a small auto-republish step so deploys do not leave the quiz out of sync with the code that serves it.

Thirty-five commits in total landed on this project over the fortnight. It is the sort of piece of work that is very hard to summarise in a single sentence, which is usually a sign it was worth doing.

Under the hood: getting a signed token past an edge firewall for a speciality coffee wholesaler

The interesting engineering problem of the fortnight came from a speciality coffee roaster with a substantial B2B side. We built a customer-account extension so their wholesale buyers could download invoices and supplier order forms directly from their account area, without going through a support request. The feature itself is simple. Getting the request to the right place, however, turned into a small saga.

The problem was the signed session token. Shopify customer-account extensions run inside a Web Worker and pass a signed token forward to identify the customer. That token starts with three characters that every edge firewall on the planet also recognises as the signature of an encoded JSON header. The roaster's CDN was rewriting, redirecting, or outright blocking any request that carried one of those tokens in the expected places. Invoices appeared to exist, could be listed, and then refused to download. The worst class of bug, the one where the happy path looks healthy.

The fix, once we had chased it down, was to stop handing the token over in formats the edge layer was paid to distrust. We split the token into its three constituent parts and sent them as separate query parameters. We wrapped the whole thing in a second encoding layer on the wire so the recognisable signature never appeared in plain text. We routed the fetch through Shopify's App Proxy at the canonical domain, so the request never hit the redirect chain in the first place. And we opened up CORS to allow the Worker's origin. Only once all four of those were in place did the download go through cleanly.

Worth noting for anyone else building customer-account extensions. If you see a feature that works locally, works in a test storefront, and then quietly fails in production, check whether your CDN has an opinion about the shape of your auth tokens before you start doubting your own code. We burned half a day on diagnostic probes before we clocked that the edge layer was the adversary, not the app.

Other work this fortnight

Our internal client operations app gained a proper invoicing system this fortnight, which is embarrassingly overdue given how much we talk about invoicing with clients. Subscription clients now get a monthly invoice generated automatically. Standalone orders get both invoice and receipt PDFs on demand. The whole thing is now driven by an editable settings page for business name, bank details, presentment currency, and the rest. Small things, but the sort of small things that make the difference between running an agency and playing one on the internet.

A premium basics apparel brand picked up a proper proportions layer in its flat-lay utility, so the brand's product imagery can be processed in bulk at the correct relative sizing. A background job runner means nobody has to sit and watch a spinner. We also calibrated the targets against fifty real flat-lays from their catalogue, which saved us a lot of guesswork. A colour filter and multi-select on the page mean the team can work through a season in one sitting rather than in fifty clicks.

A clinical-grade skincare house picked up a substantial new infrastructure piece. We built a generator that writes meaningful alt text across every image source a Shopify store exposes (products, collections, content blocks, articles, files, custom-data file references), and paired it with an image optimiser that reports per-source savings and keeps safety backups of every original. The whole thing runs on durable background jobs with proper cancellation, which matters once you are processing thousands of images and somebody inevitably needs to stop the run halfway through.

A countryside estate with exclusive-hire accommodation went live with a brand new app this fortnight. It includes the booking widget, back-office booking management, a full seed system so the storefront can be rebuilt from a single document, and a pared-back three-item navigation to match how the client actually wants to present the property. First real traffic through the booking flow this week.

The quick wins

Plenty of smaller new capabilities landed alongside. A luxury fragrance house picked up a reusable journal article template and a new admin tool to import historical journal posts as structured content blocks, which unblocks years of archived editorial. A British barbecue brand's grill configurator gained an eagerly loaded welcome background that removes the black flash on first paint, plus richer stand and finish filtering for the configurator wizard. And our own website got a round of product page adjustments, which you will see shortly if you have not already.

It is genuinely difficult to pick a favourite out of that lot, which is a nicer problem to have than the alternative. Next fortnight looks lighter on feature work and heavier on polish and QA for a couple of launches, which will probably make for a quieter blog post. More next Tuesday.

Photo by Wco Global on Unsplash.

More from the blog

A child riding a tractor at a family farm attraction

How we built an experiences-commerce platform on Shopify for a busy farm attraction

Read →
Circular lounge with a central fireplace and red sofas, sophisticated members club interior

This week's highlights: a multi-brand reporting platform for a luxury beauty group

Read →
An ornate gold chandelier on a white coffered ceiling in a luxury hotel interior

This week's highlights: a multi-brand reporting platform for a luxury beauty group

Read →

Like what you've read?

Tell us about your project. A team member will reply within one business day.