All case studies

Case study · Our own venture

WovenQR and FormeQR

Two QR artwork brands where the pattern of the code itself forms a customer’s logo, initials or name. Both run on one generation engine we built, with their own storefronts, checkout and protected delivery.

Type
Our own venture, not client work
Sector
Digital products, sold online
Built
Engine, two storefronts, checkout and delivery
Status
Both sites live, October 2026

The brief

The logo is the code.

Most branded QR codes put a logo on top of a standard code. We wanted the pattern itself to form the logo, while still scanning reliably, and to sell it through two brands with different looks and audiences without building everything twice.

That meant a generator that tests every design it makes, a way to offer real choices, and a delivery path that hands over exactly the design that was chosen, long after the engine has moved on.

What we built

One engine, two storefronts, end to end.

  • A generation engine that checks its own work

    Native Go QR artwork generation inside a TypeScript service. It works the target artwork into the code’s modules, then reads every candidate back with a software decoder and throws out any that don’t return the right address.

  • Ranked choices, not one guess

    Candidates are scored on how closely they match the artwork, and the best are offered as choices. On the websites a browse batch gives five logo, three initials and five name attempts, and a fresh batch can be asked for.

  • Delivery that reproduces the exact design

    Every saved choice keeps its recipe, seed and artwork, so the paid files are the design the customer picked, even after the engine changes. Saved designs keep their original layout when a new one ships.

  • Protected previews, protected downloads

    Previews show the design while obscuring part of the usable code. Full files are released only once payment and download authorisation are confirmed.

  • Two brands on one core

    WovenQR is warm and editorial, aimed at makers who care about packaging. FormeQR is green, square and pixel-based, aimed at salons and booking cards. Each storefront is built separately on Cloudflare, sharing the engine and the purchasing logic.

  • Safe logo discovery and a marketplace service

    Enter a website and the service tries to find the logo, with strict limits on what it fetches and how. If a site blocks it, the customer uploads one instead. An assisted design service is prepared for Etsy alongside the websites.

The launch examples

Four made-up brands, 300 candidates each.

For each logo the engine searched three batches of 100 designs, kept five finalists that passed the software scan and picked the top-ranked one. Later batches added little, so the search stopped at 300.

  • QR code whose modules form a black flame-like logo for the made-up brand Pebblewick
    PebblewickMonochrome
  • QR code whose modules form a black crescent moon logo for the made-up brand Lunafold
    LunafoldMonochrome
  • QR code whose modules form a green two-leaf logo for the made-up brand Mossora
    MossoraGreen
  • QR code whose modules form a terracotta letter B for the made-up brand Brindle and Beam
    Brindle and BeamTerracotta

The brands and logos are fictional, made for demonstration. Each code opens the WovenQR Etsy shop.

By the numbers

What the build records show

  • 1,200

    candidate designs generated for the launch examples, 300 per logo

  • 3

    sizes every example was decoded at in software: 684, 342 and 228 pixels

  • 63

    automated engine checks, run on both local and Linux builds

  • 2 : 1

    two branded storefronts sharing one engine

Engineering figures, not sales results. The ranking score measures how closely a design matches its artwork; it isn’t a scan rate.

What we’d do again

Four decisions that carry over to client work

  1. 01

    Check with a decoder, not by eye.

    A design that looks right can still fail to scan. Every candidate is read back in software before anyone sees it, and software is the first check, not the last: a phone scan and a print at the real size come before anything goes to print in bulk.

  2. 02

    Freeze the recipe at the moment of choice.

    Improving the engine should never quietly change something a customer has already chosen.

  3. 03

    Share the engine, not the brand.

    One core keeps the hard logic in one place, while each storefront keeps its own look and audience.

  4. 04

    Measure paid orders, not likes.

    The launch plan tracks visits, previews, selections, paid orders, delivered files and refunds, with website and marketplace results kept apart.

Where it stands

Live, and now the commercial test.

Both storefronts are live, with free previews and one-off pricing. The next stage is proving the business, not the code: paid ordering and delivery checked end to end, phone and print tests at real sizes, and the first paying customers.

We’ll update this page with what we learn, including what doesn’t work.