2026-05-05 · by Manuel Zamora

Behind the Scenes: How Mani Actually Works hero image

Behind the Scenes: How Mani Actually Works

A technical deep-dive into how mani extracts Brand DNA from a URL, generates ads grounded in your brand, and runs a daily content queue. From the founder.

I get asked "how does mani actually work?" at least once a week. Usually by a founder who has tried three AI ad tools, been disappointed by all of them, and wants to understand why mani's output looks different before committing their time to another tool.

Fair question. Here is the honest, technical answer. I am going to walk through the three core systems that make mani work: Brand DNA extraction, ad generation grounded in that DNA, and the daily content queue that turns one scan into months of creative output.

System 1: Brand DNA extraction

When you paste your URL into mani, six things happen in parallel within 90 seconds. I call them the six extractors because that is literally what they are in the codebase.

Tone extractor. Reads your website copy and identifies your brand voice. Not just "formal vs casual" but the specific register: are you sardonic like Liquid Death? Educational like Notion? Aspirational like Glossier? The tone extractor produces a primary tone, secondary tone, and 3-5 adjectives that describe your voice. These adjectives become part of every prompt that generates your ad copy.

Audience extractor. Identifies who your brand is for. This is the hardest extraction because most websites do not say "we are for X audience" explicitly. We use a three-layer approach: explicit pattern matching ("built for teams"), domain signal inference (sprint, agile, backlog = dev teams), and an LLM critic that validates the proposed audience against the actual page content. The audience profile includes demographics, psychographics, and pain points.

Palette extractor. Pulls your brand colors from CSS custom properties, meta theme-color tags, inline styles, and class names. We extract primary, secondary, accent, text, and background colors. These become hard constraints in the image generation step: your ads will use YOUR colors, not whatever the AI model's default palette happens to be.

Products extractor. Catalogs what you sell. For Shopify stores, this is straightforward (product feed data). For SaaS and service businesses, we scan your navigation and feature sections for product/feature names. We filter out CTA labels ("Get Started", "Open App") using a shared filter with 50+ generic patterns and a verb-detection heuristic. The remaining names are your products.

Keywords extractor. Identifies 10-25 brand-relevant keywords from your content. These keywords feed into hashtag generation, SEO optimization, and copy grounding. They are ordered by relevance, not frequency.

Visual style extractor. Analyzes your website's design language: minimalist vs bold, photography-driven vs illustration-driven, dark-mode vs light, and the overall mood. This profile grounds the image generation so your ads match the aesthetic expectation your website sets.

All six extractors run in parallel. The first two (tone and audience) complete in under 30 seconds and produce a "partial DNA" that is enough to start generating. The remaining four complete in under 90 seconds. The result is a complete Brand DNA profile that persists across your account and grounds every generation you do from that point forward.

System 2: Grounded ad generation

Most AI ad tools generate from a blank slate. You type a prompt, the AI generates something. The problem is that "something" has no relationship to YOUR brand. It uses default fonts, default colors, default tone. It looks generic because it IS generic.

Mani generates from your Brand DNA. Every generation starts with your tone profile, your audience profile, your palette, your products, and your visual style as constraints. The AI does not get to choose these. They are fixed parameters extracted from your actual brand.

The generation pipeline works in stages. First, a copy writer (Claude Sonnet) generates headline, body, and CTA text grounded in your tone and audience. Each variation takes a different creative angle. Not just rewording. Different hooks, different emotional appeals, different structures. Second, an image generator (FairStack) produces visuals grounded in your palette and visual style, composited with your actual product photos where available. Third, the system assembles the copy and visuals into platform-specific formats: 1:1 for Instagram feed, 4:5 for Instagram portrait, 9:16 for stories/reels, 16:9 for YouTube, and the correct character limits per platform.

The key insight: the AI is not designing your ads. It is executing variations within the constraints your brand has already established. This is why the output looks like YOUR brand made it, not like a random AI generation.

System 3: The daily content queue

The feature that surprised me the most in terms of user impact is the content queue. It is not the flashiest feature. It does not have the "wow" factor of the Brand DNA scan or the instant generation. But it is what makes people stay.

The content queue takes your Brand DNA and automatically generates a set of ad variations every day. You wake up, open mani, and there are 3-5 fresh ads waiting for review. You swipe through them (approve or reject), export the ones you like, and you are done. Total time: 5 minutes. Total creative output: 3-5 brand-matched ads per day, 20-35 per week, 100+ per month.

The queue is smart about variety. It rotates through different ad formats (single image, carousel, story, UGC-style), different copy hooks (question, social proof, problem-solution, founder voice), and different product focuses. It also adapts based on what you approve and reject: if you consistently approve UGC-style ads and reject minimalist ones, the queue biases toward UGC. This learning loop means the queue gets better the more you use it.

What makes this technically hard

The honest answer: consistency. Generating one good ad is easy. Any AI tool can do it. Generating 100 good ads that all look like they came from the same brand is hard. The moment you scale past a handful of generations, brand drift becomes the main enemy. Colors shift. Tone wobbles. Product representation gets inconsistent.

We solved this by making the Brand DNA the immutable ground truth. Every generation, every day, every format reads from the same DNA profile. The AI has no latitude to deviate from your brand constraints. It has full creative latitude on the ANGLE (which hook, which composition, which emotional appeal), but zero latitude on the BRAND (your colors, your tone, your products).

This constraint-within-freedom architecture is what makes the daily queue possible. You can safely approve ads without scrutinizing every pixel because the brand constraints are baked into the pipeline, not applied as an afterthought.

The stack under the hood

For the technically curious: mani runs on a monorepo with separate apps for the API (Fastify + Drizzle + BullMQ), the web app (React + TanStack Query), the marketing site (Astro), and the admin panel. Infrastructure is Railway (API, web, worker, Postgres, Redis). Brand DNA extraction runs on Claude for structured extraction and FairStack for image generation. The worker process handles all async jobs (brand scans, ad generation, queue production) via BullMQ queues.

The entire generation pipeline from "user clicks generate" to "ad appears in their library" takes 15-90 seconds depending on the format. Brand DNA scans take 60-90 seconds. The daily queue runs at 3am and pre-generates the day's ads so they are ready when you log in.

What I would do differently

If I were starting mani from scratch today, I would invest more in the visual style extractor earlier. The first version of that extractor was too crude: it classified sites as "minimalist" or "bold" with nothing in between. The current version understands 12+ visual styles, but we lost 3 months of user feedback to a binary classifier that could not distinguish Glossier's minimalism from Apple's minimalism.

I would also build the daily queue from day one instead of adding it in month three. The queue changed our retention metrics more than any single feature. Before the queue, people tried mani once, generated 5 ads, and forgot about it. After the queue, people open mani every morning because there is always something new waiting. The habit loop is the product.

If you want to see this pipeline in action on your own brand, paste your URL into the free scanner below. The Brand DNA extraction is free, and you will see exactly what the six extractors find in your site.

See your Brand DNA in 90 seconds

Free. No signup. See exactly what mani extracts from your site.

Scan your brand

You might alsolike