The Lunaire case study: personalised embroidery

Second print-on-demand case study. A brand called Lunaire, built around personalised embroidered apparel.

The brand

Astrology is an evergreen commercial category. Horoscopes, birth charts, and moon-phase products have kept moving through every new wave of media and every generation of consumer apps. The risk of the theme going out of fashion is lower than for most creative briefs.

Two products under the same rule set:

  • The personalised celestial hoodie. Birth data in, a generated embroidery pattern out. Each chart is unique by definition, so no edition cap: every piece is already one of one.
  • The numbered crewneck sweatshirt. Without the pattern. Lunaire stitched on the chest and a three-digit edition number the buyer picks at checkout. Limited to 999 numbered editions, each number sold exactly once.

The brand name Lunaire is French for lunar. It could be interpreted as celestial or associated with the French idiom c’est lunaire, used colloquially to call an idea absurd or far-fetched.

The blanks

From experience, I have decided that the blanks come from Stanley/Stella, a Belgian label running GOTS-certified organic cotton with factory audits through the Fair Wear Foundation. The celestial piece is a hoodie (boxy, dropped shoulder, 350 to 400 gsm). The numbered piece is a crewneck sweatshirt (cleaner cut, same weight range, same brand). Why two different garments rather than one, next section.

Choosing an eco blank over a generic one is part ethics, part aesthetic. Organic cotton drapes and ages differently. And the embroidered design only lasts as long as the garment underneath does, which is a cheaper argument for the nicer blank than the certifications are.

Hoodie or crewneck?

Running two different garments under the same brand comes from who actually buys astrology-themed apparel. In the US, 37% of women believe in astrology versus 20% of men; around 80% of Gen Z and younger millennials believe; the 20 to 40 age band does most of the buying. Lunaire’s buyer is female-leaning, split roughly into a Gen Z / young-millennial astrology core and an older, quiet-luxury-leaning 25 to 40 segment. The two segments want different things from their clothes.

HoodieCrewneck sweatshirt
Age skewGen Z dominant, 1.5× more likely to buy streetwear than millennialsBroader: older millennials, quiet-luxury adopters across ages
Street or fashionStreetwear canon, crossover with oversized luxury, reads casual and youthQuiet luxury's signature 2026 piece, clean lines, reads fashion and timeless
Fit and sizeStanley/Stella hoodies run boxy, oversized, dropped shoulder. The current dominant cut.Both fitted and boxy options available. More fit flexibility.
SeasonAutumn peak, summer dipYear-round staple
Embroidery canvasHood seam limits the top of the chestClean, no interruptions

The personalised celestial piece goes on the hoodie, targeting the Gen Z / young-millennial astrology core. Streetwear-adjacent, boxy, the birth-chart pattern as a statement. The numbered piece goes on the crewneck sweatshirt, targeting the older quiet-luxury buyer and the wider gift market. Timeless, clean, year-round. Same Stanley/Stella family, two different wearers.

Decide the direction first

Lunaire is a concept more than a shop. The app stack was built in 2023 and never put online. If you are reading this thinking of doing something similar, a few questions to settle before the first line of code:

  • Is personalisation worth the complexity? A personalised product needs a generator, a rendering pipeline, a way to pass the generated file to the printer, and a way to preview it before purchase. A static catalogue is a fraction of the work.

If those feel fine, the rest of this post is the concept.

The generator

Every personalised piece starts from three inputs: a birth date, a birth time, and a birthplace. The generator turns those into a square embroidery pattern: a field of stars whose density follows the latitude, and a grid of straight thread lines. One vertical thread for every zodiac sign that contains a planet at birth. One horizontal line for every astrological house that contains a planet. A chart with planets spread across many signs and houses draws a dense grid; a chart clustered into a stellium draws a sparse one. Each planet dot sits at the intersection of its sign thread and its house row. A planet in direct motion sits on its thread; a planet in retrograde sits slightly to the side. The pattern is ten centimetres by ten centimetres on the final hoodie, which is Printful’s standard center-chest embroidery area for the blanks used here. Nothing in the pattern uses transparency, because thread does not: brightness is encoded as dot size, not as alpha.

Under the hood, at the back of the neck, the word lunaire is embroidered in the same black thread: a small brand mark visible only when the hood is lifted.

The thread is black on black organic cotton, tone-on-tone with the fabric. The piece is visible at the right angle and nearly invisible straight on. The preview below uses a boosted contrast so the pattern is readable on screen; the finished embroidery is more subtle. Download PNG exports the current pattern as a transparent-background PNG with pure black elements, which is the file a digitiser can turn into stitch paths.

The picker below runs the same generator logic as the concept app. Change the inputs and press Generate pattern to see how a different birth produces a different piece.

press generate to draw

The logic is deliberately a skeleton of real astrology, not the real thing: sun sign from date, a simplified moon and rising, seven visible bodies laid on a deterministic arc. A live product would sit on an ephemeris library for accurate positions. The visual signature, the vertical thread field and the scattered celestial bodies, is the part that survives across both.

Show the code

The numbered crewneck

Not every buyer wants their birth chart on their chest. The numbered crewneck is a Stanley/Stella sweatshirt in the same weight of black organic cotton as the hoodie, with a cleaner cut. The word lunaire is stitched in black thread on the chest. On the right sleeve, a three-digit edition number from #001 to #999, stitched with the hashtag in front. Both threads are tone-on-tone, black on black, visible at the right angle and invisible straight on.

The edition cap lives here, not on the hoodie. Each of 001 through 999 is sold exactly once, then that number is gone. Picking is optional: buyers who want a specific number choose at checkout, everyone else is assigned the next available one automatically. Early adopters who do pick get the full range of 999 to choose from. Angel numbers like #111, #222, and #777 will move fastest; quieter numbers like #417 or #853 will linger. The hoodie, by contrast, needs no cap because the birth-chart pattern is already one of one.

The two products, side by side

Personalised hoodieNumbered crewneck
PatternGenerated from birth dataChosen three-digit edition number
UniquenessOne of one by birth data, no cap needed999 numbered editions, each number sold once
EmbroideryBlack thread on black cotton, tone-on-toneBlack thread on black cotton, tone-on-tone
Price€89€69

The prices sit in the gift range rather than the premium-streetwear range. Context and the full rationale are in episode 8.

Personalisation and returns

Personalised goods sit outside the standard EU 14-day return window. The consumer regulations explicitly exempt goods “made to the consumer’s specifications or clearly personalised” from the right of withdrawal.

Both Lunaire pieces qualify. The hoodie is personalised by the buyer’s birth data, the jumper by the buyer’s chosen sleeve number. Each is stitched after the order, from inputs the buyer chose. No inventory, no returns, each order runs its own clean unit economics.

What to be aware of

  • Embroidery is slower and pricier than print. Each placement adds production time and cost. The celestial hoodie has two (the center-chest pattern and the inside-neck wordmark). For a short run this is fine; for a large catalogue, embroidered pieces are the format that pushes margin thinnest.
  • Every unique design is a fresh digitisation charge. Embroidery machines run on stitch paths, not on images. Converting an image into stitch paths is called digitisation, and most services charge per unique design (Printful’s fee is around three dollars at time of writing). For a shop selling the same logo thousands of times this is negligible. For Lunaire, where every birth chart is unique, every single order carries its own digitisation fee. Build it into the unit price or the margin disappears fast.
  • Embroidery always comes out slightly wider than the digital design. Thread has physical thickness. Thin lines come out thicker, small gaps close up, and the finished piece does not match the on-screen preview one-to-one. The fix is upstream: the generator has to shrink thin lines and widen gaps before the file goes to the printer, so the stitched result matches what the buyer saw on screen rather than a heavier version of it.
  • Birth data is personal data, but the generated image is not. The fix is to generate the pattern at checkout, save only the resulting embroidery file, and discard the raw birth date, time, and place. No personal data at rest, no regulatory weight.

What’s next in the series

  • A third case study from the same brand. The Lunaire phone case: a colour picker in place of the birth chart, a dye pattern underneath a fixed wordmark.
  • Comparing print-on-demand providers. With two case studies in, the framework in the next post picks between them.

Subscribe below for the next one.