Adam Shadi Independent AI builder Allyn, Washington

The model is capable. How far it gets is on me.

Three years in customer facing work, then a year of building. Four products live and usable right now, every one designed, built, shipped and supported by me. One turns a written description of a store into a complete Shopify theme, product photography included. Another reads a six hour stream and cuts the stories out of it. Here is the work, and the part of it that was actually difficult.

Live products
4 designed, built and run solo
Built and run by
1 design, build, deploy, support
Production pipelines
4 each making live model calls
Prior to this
3 yrs customer facing, at volume
Looking for
AI Operations, AI Enablement, Customer Success
Working
Remote, or on site around Puget Sound
Method
Direct the model well, and know what to ask for
Status
Available now
PLATE ONE

Themr

A Shopify theme generator. You describe the store, it returns a complete installable theme, including the copy and the product photography.

The premise is that most small merchants do not need a designer, they need a theme that already understands what they sell. The free tier builds a landing page for one product; paid unlocks a full store.

The thing it is trying to replace is a designer's invoice and a weekend of fighting templates.

What was hard

Two things. Getting a genuinely different theme every run, because a model left alone converges hard: ban the obvious defaults and every store comes back the same warm cream and serif. That was solved by deriving the palette and the structure from the merchant's own goods instead of prescribing either. Then getting all of it to survive the trip into Liquid, which is where a design that looks right stops rendering and a theme that installs still has to behave like a real storefront.

The Themr home page, with a generated storefront preview below the fold.
Fig. 1  themr.ai, with a generated storefront shown live on the page.
Role
Sole designer, engineer and operator
Output
Installable Shopify 2.0 theme, plus generated copy and product photography
Model work
Five stage generation, two stage validation, prompt caching
Stage
Live at themr.ai, free and paid tiers
Built with Next.js · Claude API · AI image generation · Shopify Liquid · Stripe · Supabase
PLATE TWO

POVSync

Reads a streamer's whole VOD, finds the storylines inside it, and cuts each one into its own clip.

Six hours of footage becomes a set of proposed cuts with timestamps, and the creator approves or rejects each one.

Most tools in this space default to handing you a finished cut. This one defaults to a queue.

What was hard

Getting the output good enough to actually use. A first pass will happily hand you six hours cut into nothing anybody would post. Making it usable meant working out what a watchable clip actually is, in terms the pipeline can act on: where a story starts, where the room reacts, where a cut can land without stepping on a sentence. That tuning was the work, and it took far longer than building the thing that does the cutting.

The POVSync landing page showing the storyline finder and clip review queue.
Fig. 2  povsync.com, showing the review queue rather than a finished cut.
Role
Sole designer, engineer and operator
Input
A full stream VOD, hours long, unedited
Model work
Transcript segmentation, storyline clustering, multi model orchestration
Stage
Live at povsync.com
Built with Node.js · multi model orchestration · FFmpeg · Vercel
PLATE THREE

BrandNamer

Names with the domain check already done, so you never fall for a name you cannot have.

The smallest of the four and the one with the most organic traffic, because it answers a question people already type into a search box.

What was hard

Nothing technical. It taught me that distribution is a product decision, not a marketing one, and that lesson cost me a month on the other three.

BrandNamer, showing the generator and live domain availability.
Fig. 3  brandnamer.io, with availability checked in real time.
Role
Sole designer, engineer and operator
Loop
Generate, check the domain live, discard anything unavailable before it is shown
Why it works
The demand already exists as a search query; the product did not have to create it
Stage
Live at brandnamer.io
Built with Next.js · Claude API · domain API · Stripe
PLATE FOUR

PrecisionPrompts

A prompt generator, fifteen curated packs and a browser extension carrying the same engine.

Free on the web, paid as downloadable packs, and available inside the tab you are already working in.

What was hard

Three delivery surfaces sharing one engine without three codebases. The extension is where that either holds or falls apart, and it took two rewrites.

PrecisionPrompts, showing the free generator on the landing page.
Fig. 4  precisionprompts.io, free tool on the surface, packs behind it.
Role
Sole designer, engineer and operator
Surfaces
Web app, downloadable packs, Chrome extension
Constraint
One engine behind all three, so a change ships everywhere at once
Stage
Live at precisionprompts.io
Built with Claude API · Stripe · Supabase · Chrome extension · Vercel

The same model, asked two different ways.

Everyone has access to the same models. The gap between a generic answer and one you can ship is almost entirely in how the thing was asked. Here is what that difference actually looks like, on the five decisions that matter most. Screenshots do not transfer to your problem. This does.

 
The usual ask
What I ask for instead
Why the output changes
01

Frame the problem

“Build me a landing page for my store.”

Who is looking, what state they arrive in, what they must feel in two seconds, and what this category already looks like so we can decide whether to join it or break it.

The model stops guessing at an audience and starts designing for one. Most vague output is a vague brief handed straight back to you.

02

Constrain the right half

“Make it look modern and clean.”

Pin the things that have exactly one right answer: contrast floors, the fold, the phone width. Leave the palette and the structure open, and hand it the merchant's actual goods to derive from.

Pin everything and you get a template. Pin nothing and you get the model's default. Themr's themes stopped coming back identical when I moved that line.

03

Ask for more than one

Take the first answer and iterate on it.

Three candidates built to compete, from genuinely different angles, then the winner takes the best parts of the losers.

A first pass is the most likely answer, not the best one. This page was one of three, scored by a reader who was not told which was which.

04

Judge it against something real

“Looks good to me.”

Contrast ratios, colour vision simulation, the same page at 390 pixels, rendered aspect ratio against the file's own dimensions.

A page that looks finished and measures badly is the normal case, not the exception. A number ends the argument in a way an opinion cannot.

05

Give it a memory

Start tomorrow from whatever you remember.

Anything that costs more than fifteen minutes to work out becomes a written line, and the next session reads it before it starts.

The model remembers nothing of yesterday. Giving it a memory is the cheapest speed increase available, and it compounds.

The model is not the bottleneck

These models are already smarter than most people give them credit for. What decides whether the output is any good is the person driving. Give one a vague ask and you get a plausible, generic, slightly wrong answer. Give it a real brief and it will build the thing. Most of the distance between those two outcomes is skill, and it is a skill you can get better at.

So the work is knowing what to ask for. What context it needs before it starts, what to leave open because it will find a better answer than mine, what to pin down because there is only one right answer and guessing wastes a run. Where a job should be split so each part starts from its own brief rather than from a long conversation that has drifted. That is most of it, and it is why the same request that gets somebody else a toy gets me something I can ship.

The rest is ownership. Onboarding flows, help documentation, billing, support, deciding what is actually worth building: all mine. Things do go wrong and I catch them, but that is hygiene, not the headline. The interesting part is how far a good instruction gets you before anything needs catching at all.

Three years of support queues and sales floors is where that came from. A hundred tickets a day teaches you what a real complaint sounds like, and a delivery survey teaches you that the last five percent is the whole job. It is an unusual route into building software, and it is the reason these products get finished rather than demoed.

What I have been doing, counted rather than claimed.

Rebuilt daily from the repositories
This month
16,472source lines, across 3 projects
Commits
1,244in six months, all solo
Source lines
217,443written and kept
Live products
4shipped and maintained solo

Source only. Generated theme output, vendored code and research artifacts are excluded, which is why this says 217,443 and not the 441,287 a plain line count returns. The model writes most of these lines; deciding which ones survive is the job.

The working log, including the parts that do not flatter.

Appended, never rewritten
Aug 2026
themr

An 11.3 MB front door, down to 358 KB shipped

The landing page was shipping its own demo assets at full size to every visitor before they had asked for anything. Most of a first impression is how long it takes to arrive.

Aug 2026
themr

The image prompt was inventing features instead of preserving them

Asked to show a garment on a model, the model kept adding details the product did not have. The fix was not a better adjective. Negation turned out to be safe and asserting a feature is what breaks it, which is the opposite of the usual advice.

Aug 2026
themr

Stripe idempotency was silently disabled, not just unapplied

A retried payment could have been charged twice. Nothing logged, nothing failed, and no test covered it because the test also passed with the protection off.

Aug 2026
povsync

A streamer can clear his own queue from his own machine shipped

The desktop agent runs the pipeline locally, which was the only arrangement where the economics worked for a creator producing hours of footage a week.

Aug 2026
povsync

Stopped paying to move other people's video

Uploads were being buffered through our own infrastructure. A presigned PUT sends them straight to storage, so the bill stops scaling with somebody else's file size.

Aug 2026
povsync

A platform rejection, and the boring fix shipped

TikTok rejected the app over its legal pages. The cause was a missing app icon and favicon, not the policy text everyone assumes it is.

Aug 2026
povsync

Separated the local secret from the cloud session token

The agent had been using one credential for two jobs. They have different lifetimes and different blast radii, so they are now different secrets.

Aug 2026
themr

A design could be applied to a shop that had not generated it shipped

Ownership was being checked when a design was created and not when it was applied, so the boundary existed in the wrong place. Now a shop can only push designs that came out of its own wizard.

Jul 2026
themr

Switched the production model after an A and B run

Parity on output quality, two and a half times cheaper, roughly three times faster. Verified live at five minutes thirty six against about fifteen, not assumed from a benchmark table.

Jul 2026
method

Test generations moved off the paid API entirely

Every local and QA theme is now hand authored through a two stage harness at zero cost, while customer generations still run the real pipeline, so the thing under test is the thing that ships.

Jun 2026
povsync

Something I had called impossible turned out not to be

I had recorded that clip positions inside a VOD were unavailable. They were available on a different endpoint. Pulling a sixty second window out of a nine hour recording takes about eight seconds and no full download.

Jun 2026
themr

The free tier stopped calling the model at all shipped

Free became a deterministic single product landing page, which costs nothing to serve and is honest about what free means.

Aug 2026
portfolio

An assistant that answers from the record, not from vibes shipped

This site carries a chatbot grounded in a fixed corpus of real history. It is built to say "I do not know" rather than fill a gap, and the prompt lives on the server so the corpus is never served as a public file.

Aug 2026
povsync

Wrote down the design language so it stops being re-argued

Every session was relitigating spacing and type from scratch. A written rule set is cheaper than having the same argument monthly.

Aug 2026
prompts

One engine behind three delivery surfaces

A web app, downloadable packs and a browser extension sharing a single engine, so a change ships everywhere at once. The extension is where that either holds or falls apart, and it took two rewrites.

Jul 2026
brandnamer

Found out why the affiliate revenue was zero

Not a tracking bug and not the commission rate. One buy click in twenty eight days. The product was not asking, so the domain badges became clickable and the call to action started naming the thing it would do.

Mar 2026
ops

Three projects put on ice on the same day

Four things half built is worse than two things finished. This is the entry most portfolios leave out.

Apr 2026
brandnamer

Colourblind accessibility, for the obvious reason

Domain availability was carried by a green or red badge. I am colourblind, so I could not read my own product. Every badge carries an icon now, and no state anywhere is colour alone.

Mar 2026
brandnamer

Reverted an optimisation that was not one

Cut over generation from eighteen candidates to fourteen to save cost, measured the difference, found it negligible, and put it back. Names got worse for no saving.

The record

PeriodRoleWhat it produced
Jul 2025 – now Independent AI BuilderSelf directed Four products live and usable now, plus the five stage pipeline that builds them. Sole designer, engineer and operator on every one: brief, direction, build, validation, deploy and support. Shipped a Shopify app through review and got two API access exemptions granted. Cut generation cost 2.5x and time 3x by A and B testing the production model rather than trusting a benchmark.
Jul 2024 – Jul 2025 RV Sales AssociateCamping World, Silverdale WA Built internal AI tools for follow up and inventory. 13% close rate, 46% above team average.
Mar 2023 – Jul 2024 Sales ConsultantHaselwood Auto Group, Bremerton WA Top of store on the manufacturer's delivery satisfaction survey. Highest yearly gross per vehicle at $4,996.
Feb 2022 – Jul 2022 Customer Support AnalystCoinList, remote 100+ tickets a day at 95%+ CSAT. Three shipped features came out of feedback I synthesised, which is where the instinct for what breaks came from.

If you need someone who can do this, let's talk.

AI Operations, AI Enablement or Customer Success, fully remote. I also build sites and internal tools for companies who want this done rather than explained. Everything above is clickable, so you can check all of it before you reply.

Would rather interrogate it than read it?