Generates
Brand Crafter
Define a brand once — palette, type, voice — then generate every asset it needs: 38 types across image, video, copy, and code. Reach it from a browser, a CLI, an API, an MCP server, or an agent skill.
What it is
BrandCrafter turns one brand into everything it needs. You set the identity once — palette, type, voice — and it generates 38 kinds of on-brand asset: logos and the marks derived from them, social cards and posts, posters and thumbnails, website heroes and OG images, print and product mockups, short video, and the copy and code to match. Each is a named, typed workflow you invoke by name — from a browser PWA, a scriptable CLI, an HTTP API, an MCP server any AI host can call, or an installable agent skill.
Every generation degrades to a deterministic local fallback — a real SVG or text asset — when a key, quota, or model is unavailable, so a request always resolves to something usable. One Google API key is enough to generate; a second provider key brings OpenAI’s image models into the routing, and with no key at all it still runs entirely on the deterministic path.
A public demo runs at brandcrafter.app: a frontend-only build that replays the real onboarding and the real generation pipeline, spending nothing and holding no keys. The full app is not deployed yet — its target is Supabase, one Render web service, and Cloudflare in front.
How it works
One brand, every asset
Set the identity once; each asset is built on the canonical mark and palette, in dependency order.
A deterministic fallback
When a key, quota, or model is missing, generation degrades to a local SVG or text asset.
One core, every surface
The same generation core drives a PWA, a CLI, an HTTP API, an MCP server, and an agent skill.
What it generates
Watch it build a brand — in order
A replay of the product’s own demo, beat for beat: the create form fills itself in, a suggested palette is shuffled until it settles, the identity assembles, a suggested tagline is approved, then the logo is drawn — and every remaining asset is built on it, in dependency order.
Create your brand
The basics
Just enough to draft a real identity. You can refine everything later.
Not sure? Based on your basics, try:
Suggested color palette
Bolder
Shuffling for a better fit…
The brand identity
Vela
Small-batch coffee
“Unmistakably warm.”
Palette
Type
Fraunces · Inter
Voice
Suggested tagline
“|”
Added to your brand identity.
Identity marks




The pipeline · each asset builds on the last
Dependency-orderedEmber RoastSocial


Web & email



Print & product



Voice & copy
Vela is a small-batch roaster for people who treat the morning cup as a ritual, not a refuel. Every bag is roasted to order and traceable to a single farm — so the long way round always tastes better.
- Roasted to order — never warehoused.
- Single-origin, traceable to the farm.
- A ritual worth slowing down for.
Motion
Your complete brand.
15 assets, generated in dependency order — each one built on the last and checked before it joined the brand.
Everything here is the product's real output: this brand and its assets were generated end to end by BrandCrafter itself.
Answering the basics
the product's own demo · replayed
Features
Identity marks
One canonical logo, then favicon, app icon, avatar, and stickers derived from it — no drift.
Social & content
Social cards, Instagram posts, thumbnails, posters, and ad copy in your brand voice.
Motion & video
Animated hero loops and ambient background clips, cropped to seamless loops via Veo 3.1.
Web & app imagery
Website heroes, OG images, web banners, cover photos, and email headers.
Print & product
Business cards, flyers, letterhead, and your mark on real product mockups.
Code & copy
CSS themes, Tailwind config, and React snippets, plus bios, value props, and landing copy.
It never leaves you empty-handed.
Every asset type — image, video, copy, code — ends in a deterministic local fallback. If a model call can’t run, BrandCrafter still hands you a real, usable asset instead of an error. Your brand never gets stuck on a blank screen.
Built with
- Next.js 15
- React 19
- TypeScript
- tRPC
- TanStack Query
- Zod
- Tailwind CSS v4
- Radix UI
- Supabase
- Commander
- pkgroll
- sharp
- imagetracerjs
- Model Context Protocol
- Gemini 3 Pro Image
- Google Veo 3.1
- OpenAI gpt-image-2
- Vitest
- Playwright
Engineering
The deterministic seam
The AI sits behind a boundary that always has a backup. If a model call can’t run, BrandCrafter generates a real asset locally — so the app never returns an error in place of an asset.
Prompt templates and provider clients (Gemini 2.5 Flash text, Gemini 2.5 Flash Image / Gemini 3 Pro Image, Veo 3.1 Fast video, OpenAI gpt-image-2) sit behind Zod-validated boundaries; routing is per-asset-type and either provider covers the other on quota or failure, then the chain degrades to a deterministic local path — SVG marks vectorised with imagetracerjs, raster work matted with sharp — so every request resolves to a validated asset.
One core, every surface
The same engine powers the browser app, the command line, the API, AI hosts, and an agent skill — nothing is duplicated between them.
A Next.js 15 App Router + tRPC server drives the PWA; a Commander CLI compiled with pkgroll calls the same core in-process; an /api/v1 REST surface exposes bearer-authenticated per-brand keys, hashed at rest; `brandcrafter mcp` serves the same engine over the Model Context Protocol as typed tools; and an installable agent skill wraps the CLI.
A verified, dependency-ordered pipeline
Assets are generated in the right order and checked before they ship — the logo first, then everything built on it, each one passing a real quality check.
A 17-node DAG (validated acyclic; array order is a topological sort) drives generation; logos are verified flat (assessFlatness rejects drop-shadow/blur and degrades to SVG) and every palette-bearing surface renders from a WCAG-AA-checked palette computed in OKLCH.
Built to scale into SaaS
The multi-tenant groundwork — accounts, credits, plans, and usage tracking — is already built locally; going live is a matter of wiring the paid services.
Local-first account auth (scrypt + signed-cookie sessions, OAuth seams), a per-account credit economy with subscription plans and a trial, usage/cost telemetry, and a single spend gate are implemented behind a StorageAdapter seam so the local JSONL store swaps for Supabase without a rebuild; the deploy target is fixed — Supabase, one Render web service, Cloudflare in front — with Stripe, Supabase, OAuth, and social-posting keys as documented operator-wired gates.
Have a dream project?
Tell me your idea and I’ll send you a quote.
