W×W
AUSTIN, TX --:--:-- CST
← ALL WORK

[ LIVE ] OCT 2026 One day

Number Zero

EcommerceShopify · fal.aiAI Photography
1 dayKickoff to live store
~$40AI image spend, first drop
0Photo shoots
The Number Zero homepage, with the logo in huge gold letters on forest green above a scoreboard strip reading Drop 000, 04 pieces, ships in 2 to 5 days, free US shipping
SHOP.NUMBERZERO.XYZ. DROP 000 IN ITS VARSITY PALETTE

Problem

Printful already handles printing, packing and shipping, and it ships blind, so the box says Number Zero, not Printful. Connected to Shopify, a product made in Printful shows up for sale instantly. That covers the logistics. Everything a customer actually sees was still missing.

The old store looked like what it was. Product descriptions were fabric specs. The products had no types or tags, the sizes listed out of order, and all five policy pages were empty. Photography, a look, copy and a pricing model each normally mean hiring someone or spending weeks on it.

So the question was whether one person could run a store that feels like a real company, with AI doing everything except the designs.

Before

The product photos were mostly Printful's mockups: clean and accurate, but a shirt floating on white, the same as every other Printful store. A few products also had a one-off AI shot made from the mockup, each with a different person in a different place, so nothing tied them together. There was no cast, no setting and no reason to believe these came from one brand.

Four Printful mockups on white: the Trustless Fade tee in Dark Heather Blue, the ARTWORK tee in Desert Dust, the ARTWORK tank in white, and the ART(WORK) dad hat in navy
BEFORE · PRINTFUL'S STOCK MOCKUPS

Approach

The rule was that AI does the work and I make the calls, with one exception: no AI model is the source of truth for a print. The customer has to get exactly what's in the photo, so the pixels of the print come from the real file every time.

I started with research instead of a theme. Five research tracks covered peer brands and pricing, ecommerce UX and conversion, the Shopify build, the AI photo options on fal.ai, and voice and copy. They were combined into a plan with eleven decisions, each with a recommendation. I approved most of them and changed a few.

Two of the recommendations changed the business, not just the look. I'd planned to list the products the normal way, and the research said to release them as numbered drops instead, starting at Drop 000, with an email signup for the next one. It also said my prices were low for the category. With free shipping, a $24 hat would have netted about $3. With tees at $45 and hats at $36, a tee still nets about $22.50 after Printful's base cost, fees and US shipping. I wasn't sure I could offer free shipping. The higher prices are what made free US shipping on every order possible.

Old store → Drop 000
PiecePrice
Trustless Fade Tee$40 → $45
Art(work) Collegiate Tee$40 → $45
Art(work) Collegiate Tank$25 → $36
Art(work) Dad Hat$24 → $36
US shippingCharged → free on every order

How the photo pipeline works

The pipeline is a set of Python commands that call image models through fal.ai, one API that gives access to many models. Every step that generates images ends at an HTML contact sheet, where I pick one.

  1. Pull from Printful. Variants, garment colors, print files, print placement and the official mockups come down from the Printful API.
  2. Cast. About six candidate faces per role. I pick one, and the pick gets a character sheet of about ten views.
  3. Base plates. Each catalog model wears each blank garment, in each color, with no print.
  4. Place. An image editor adds the print to the blank plate. Only its position, scale and perspective are kept.
  5. Paste. The real print file is warped into that spot and lit by the fabric underneath it.
  6. Check. The final is mapped back to the print file and scored for how closely it matches.
  7. Export. 2000×2500 JPEGs, named in gallery order, with alt text, pushed into Shopify.

What I shipped

A recurring cast

Five synthetic models: three for catalog shots and two for editorial. The catalog cast wears every product, so the same faces show up across the whole store. The editorial cast can change with each drop. Each model has a codename and a written description in the cast file. None has a listed height or size, because "model wears an L" would be an invented fact about a person who doesn't exist.

A contact sheet titled Cast candidates, with rows of six generated portraits per role, each person in a plain grey tee on a grey backdrop
CAST CANDIDATES. ONE PICK PER ROLE
A Cast sheets page: one catalog model shown in about ten views, including front, both three-quarters, profile, back of head, smile and full body, with the original pick outlined in gold
CHARACTER SHEETS. EVERY VIEW HAS TO BE THE SAME PERSON AS THE PICK

A bake-off before committing to a model

Image models change monthly, so the pipeline tested seven of them on my own prints before I picked one: three prints, three shot types, two candidates each, for about $12.70. Each result was scored for how closely the print matched the file and how far the garment color was from Printful's. Nano Banana 2.1 became the main editor and GPT Image 2.5 the backup. Every generative model spelled the lettering correctly. None got the print pixel-exact, which is why the paste step is mandatory.

The Model bake-off page: a grid with the Printful flat of the Trustless tee on the left and columns of on-model results from each candidate model, each labeled with a print-match score
THE BAKE-OFF. SAME PRINTS, SEVEN MODELS, SCORED SIDE BY SIDE

Base plates

A base plate is one catalog model in one blank garment and color, with nothing printed on it. There are twelve: three models in four blank and color combinations. Each one is scored for how far the shirt color is from Printful's, and I choose the one with the right face, a flat chest and the closest color. Plates get reused. Any future design printed on one of these blanks starts from a plate that's already approved, so the faces can't drift between products.

The Base plates page: rows for one model in a white tank and a desert-dust tee, each with Printful's garment reference and four generated candidates labeled with a color-difference score, the chosen one outlined in gold
BASE PLATES. BLANK GARMENTS, SCORED AGAINST PRINTFUL'S COLOR

The real print, lit by the photo

This is the step that makes the photos believable. The AI editor puts the print on the plate, but its version gets thrown away. The pipeline uses only where it put the print. It finds the AI's print in the image, aligns the image back onto the untouched plate, then warps the actual print file into that position. The ink is lit by the shirt underneath it, so folds and shadows run through the print the way they would on a real shirt, and the photo's grain goes over it so it isn't sharper than everything around it. The shirt color is nudged toward Printful's color, and the print is left alone.

Then the final is mapped back onto the print file and compared pixel by pixel. The tank below scored 0.974, where 1.0 is identical.

Hats are the exception. Embroidery can't be composited convincingly, so hat shots are generated with Printful's embroidery mockup as the reference and approved by eye, checking that the lettering reads exactly ART(WORK).

One row of the Composites page: the Printful mockup of the ARTWORK tank, the blank plate, two AI placements, and the final with the real print outlined in gold, labeled match 0.974
MOCKUP, BLANK PLATE, TWO AI PLACEMENTS, FINAL WITH THE REAL PRINT

Editorial scenes and the lookbook

The lifestyle shots use the same idea at a bigger scale. Scenes are generated with everyone in blank tops: a track, a ballfield fence, a locker room, a gym. Drop 000 has an athletic theme, so every location fits it. In group shots, prints are placed one person at a time, because the editors handle one print far more reliably than three. Then each real print is pasted in, lit by the scene. Models from the product shots end up together in group shots, which is a big part of why it reads as a real shoot.

Nine generated lookbook scenes with no prints yet: two people walking past a running track, a man in a cap at a ballfield fence, and two people in a green locker room, all in blank tops
LOOKBOOK SCENES, GENERATED WITH BLANK TOPS
The Drop 000 hero row: three candidate scenes of three people on stadium bleachers in blank tops, and the chosen final with the TRUSTLESS, ARTWORK tank and ARTWORK tee prints added
HOMEPAGE HERO. THREE BLANK CANDIDATES, THEN THE FINAL WITH ALL THREE REAL PRINTS
The In the wild section of the live homepage: four lookbook photos of the cast in Drop 000 pieces at a track, a gym and a field, above the line Shown on AI-generated models. The print and colour are exact.
AFTER · THE LOOKBOOK ON THE LIVE HOMEPAGE

The site says plainly that the models are AI-generated: "Shown on AI-generated models. The print and colour are exact." I didn't want anyone to feel misled, and the line points to the thing that matters to a buyer, which is that the shirt matches the photo.

Straight into Shopify

The export step builds each product's gallery in order, for example hero front, three-quarter, a close-up of the print, the flat, and an editorial shot. Drop 000 came out to 22 product images plus a homepage hero and six lookbook images. A content script then pushes everything into the store through Shopify's Admin API: new titles, prices, copy, SEO fields, the corrected size order, the photos with alt text, and redirects from every old URL. It runs as a dry run first and saves the store's before-state, so any change can be undone by hand.

The Shopify export page showing each product's gallery in order, such as the ARTWORK tank on-model front, three-quarter, close-up, flat and an editorial gym shot, each captioned with its alt text
EXPORT. EVERY GALLERY IN SHOPIFY ORDER, WITH ALT TEXT

A theme that changes with each drop

Before writing any Shopify code, I had three homepage directions built as static prototypes using the real logo and designs, then a fourth that combined the two I liked. The final theme is a fork of Horizon, Shopify's free theme, so it cost nothing instead of $300 or more for a premium theme, and it keeps working with the theme editor and Shopify's apps. Everything custom lives in its own files, so Shopify's updates to Horizon can still be merged in.

Four homepage prototypes in a grid: a powder-blue Sport Shop version with a 3D logo, a quiet Registry version with a large Start from zero headline, a Hybrid version with stacked fading headlines, and the combined version in forest green and gold
FOUR DIRECTIONS, PROTOTYPED BEFORE ANY THEME CODE

Each drop gets its own palette. That was my idea, and it shaped the build. The theme has a set of drop color roles in its settings, and changing them in the Shopify admin recolors the whole site. Drop 000 is Varsity, forest green and gold, to match the athletic theme. The next drop can look completely different without touching code.

The same homepage hero in four palettes: forest green and gold, cobalt with white, powder blue with navy, and orange with navy
THE PROTOTYPE'S PALETTE SWITCHER. ONE LAYOUT, FOUR DROP PALETTES

The theme lives in a GitHub repo connected to the store. Code changes go live when the repo updates, and edits made in the admin are committed back to the repo, so I can work either way.

The Drop 000 section of the live homepage: four product cards with N° catalog tabs, for the Trustless Fade Tee, Art(work) Collegiate Tee and Tank, and Art(work) Dad Hat, each on a recurring cast member
AFTER · DROP 000, FOUR PIECES WITH CATALOG NUMBERS

Product pages that read the label

Everything is 100% cotton, and the research said to make that a pillar instead of a footnote. Every product page has a "What's in it" placard listing the fabric, ink, stock and origin, and the homepage has a "Read the label" section built around it. The product pages also show a size guide built from Printful's real garment measurements, an estimated delivery date, and the free size exchange.

The Read the label section of the live homepage: a large headline next to a woven-label style placard listing 100% cotton fabric, water-based ink printed direct to garment, made to order with no stock, and Printful as the origin
AFTER · THE COTTON PILLAR AS A LABEL
The live Trustless Fade Tee product page: a gallery with the tee on two cast members, a print close-up and a flat, next to the series label, catalog number N°000.01, a fit note, color and size buttons, and Add to bag
AFTER · TRUSTLESS FADE TEE, N°000.01

The product copy comes from a fill-in template of facts and a reusable prompt with the voice rules. The prompt tells the model never to invent a spec and to write [MISSING] instead.

Two phone screenshots side by side: the Art(work) Collegiate Tee product page with a cast member in the tee, and the homepage hero with the gold scoreboard strip
AFTER · PRODUCT PAGE AND HOMEPAGE ON A PHONE

The next drop

The second drop is cheaper than the first. The cast, character sheets, base plates and theme already exist. I design the art, create the products in Printful, and pick a theme and a palette. The pipeline composites the prints onto the existing plates, generates themed lookbook scenes and exports the galleries, the copy system drafts the descriptions, and the content script pushes it all into Shopify. Planned time is an hour or two per product, mostly reviewing contact sheets. A new design on an existing blank costs about $1 to $2 in image generation, and a drop's hero and lookbook cost about $5.

Outcome

The whole rebuild happened on October 6, 2026. I started in the morning with research, the first image request went out at 3:48 p.m., and the new theme was published around 11 p.m. Drop 000 has four pieces, a full gallery for each, a homepage hero and a lookbook. Image generation for the whole day was 401 requests and 422 images, about $40, against a planned budget of $150 to $200. All 18 old URLs still resolve, and the old theme is kept as a rollback.

I haven't announced it yet, so there are no sales numbers to report. What's measurable now is the operation. Printful prints and ships, Shopify takes the orders, and the pipeline produces the photos and copy. The only work left for me is designing the shirts, plus the occasional exchange.