Small businesses have a logo, a rough PDF and a few phone photos. AI tools need rules. Specs reads the messy files, writes them up as a brand kit an AI can follow, then art-directs Instagram posts that explain every choice they make.
My own product: live, open source, and free to try with three demo brands.
Most small businesses keep their brand in a logo file, an About page and the owner’s head. Even a proper guidelines PDF is made to be browsed. An AI can skim it, but it has to guess the rest, so the first draft comes out generic: right name, wrong everything else.
Specs asks a simple question. What if the brand were written down for machines, in small files with exact values and reasons, so an agent starts on brand by default?
Same brief, same model. The only difference below is whether the model could read the kit.


A Specs kit is a folder of small chunks, one idea each: positioning, voice, terminology, audience, visual system, layout, art direction, social rules and guardrails. Each is a few hundred words and starts by saying where it came from and how sure it is.
Every rule states its reason and leans on examples over adjectives. A model follows “Write like the tag: number, material, price” with a sample line far better than it follows “friendly”. The same goes for a freelancer.
chunk_id: voice-core
confidence: high
sources:
- upload: notes-batch-07.md
location: "the word I keep reaching for is plain"
1. Write like the tag. Number, material, price.
Facts are the warmth here, because they show
someone counted.
From Hollis Ware’s voice chunk, a fictional ceramics studio.
As files are read, the kit fills in on screen as a mood board, so the wait shows the brand taking shape. Every item links back to the upload it came from. When the owner is done, the kit downloads as a zip that works in any AI tool.
My first live run felt like a wall of questions. Every gap and conflict was asked about, with no sense of which ones mattered. So code now triages first: it asks only what changes a post, settles what the uploads already settle (with an Undo), and skips the rest. That’s five calls at most, and prices and dates are always asked.
Each call is a small interface component, not a chat message: a pair of prices, a photo picker, a palette. It sits beside a live post that changes as you answer. The model picks the component and writes one sentence, and the app checks that choice against a fixed catalog of ten before anything renders.
The first version filled six shared templates. Fonts and colors were exact, but every brand composed the same way, which undercut the whole “art director” idea. Now the model composes each post’s layout from the kit’s layout chunk, and code keeps it honest.
Code fills in the approved copy. CSS can reach colors and fonts only through the kit’s variables. A browser check catches clipped text, overlaps and low contrast, and a layout that fails twice falls back to a template. It’s HTML and CSS, not image generation, so fonts, prices and logos come out exact.
Tap Why this works on any post and numbered pins land on it. Each note says what was decided and which kit chunks it came from: why the price sits on a taped paper sign, why the only pink is the logo, why the headline says “3AM” and not “open late”.
That makes the posts reviewable. An owner can disagree with a rule instead of a vibe, and fix it once in the kit. Flip to Without kit and the same brief appears with nothing to go on.
The copy comes only from the kit and the brief. Specs never invents a price, a date or a location. When the uploads disagree, it asks the owner instead of picking one.
Every build phase had a pass-or-fail gate I wrote before building it. Because it’s free to try, the server owns every prompt, caps uploads and posts per visit, and stops all generation once the day’s spend limit is reached.
I built Specs the way it asks small businesses to work. I wrote the spec and the gates, made the calls on type, color and logos, and directed Claude through the build. I kept a dated journal of every decision and dead end.
The biggest lesson was the same for the model as for people: a rule without its reason gets over-applied. When the critic marked down a glowing pink price for “two pinks” next to the logo, the fix wasn’t a stricter rule. It was one more sentence saying why the rule exists.