Case Study · 01 / AI Marketing Platform

Tessa

An AI Marketing Platform That Learns A Brand From Its Website, Builds A Reusable Brand DNA, And Turns One Brief Into On-Brand Ad Creatives For Every Channel, In Minutes.

Product Design & Full-Stack Engineering ·

01 · Product
Tessa
02 · Category
AI MarTech
03 · Timeline
8 Weeks · 2026
04 · Scope
Design + Full-Stack
05 · Platforms
Web App · API
Tessa home dashboard with creative stats, recent ads and recent campaigns, screenshot of the Tessa product
Tessa home dashboard with creative stats, recent ads and recent campaigns. Screenshot of the live product.

01 · By The Numbers

The Build,
By The Numbers

Counted Straight From The Codebase And Git History. No Vanity Metrics, No Projections.

  • 29

    Ad Themes

    Product Hero To UGC Style

  • 6

    Creative Formats

    IG · FB · X · LinkedIn · Hero

  • 4

    Worker Queues

    Brand · Campaign · GPU · Default

  • 132

    Commits

    Feb → Apr 2026

02 · Overview

From One Brief
To Every Format

01  The Challenge

Brand Inputs Live Everywhere: Websites, Decks, Drives. Producing On-Brand Creative For Every Social Format Took Marketing Teams Days Of Back-And-Forth.

02  Our Approach

We Scrape The Site Into A Structured Brand DNA, Then Fan One Brief Out To Queued Gemini Workers That Write Copy, Pick Ad Themes And Render Each Format.

03  The Outcome

Marketers Go From A URL To A Library Of Brand-Consistent Ads, Then Refine Any Creative By Chat Or AI Image Edits, Metered By Simple Credits.

03 · What We Built

Five Engines,
One Brand DNA

Every Generation Reads From The Same Brand Profile, So Copy, Layout And Imagery Stay On-Brand Across Channels.

Brand DNA Extraction

BrowserBase Screenshots And Gemini Vision Distil Voice, Visuals, Logo And Products Into A Reusable Profile, Exportable As A Brand PDF.

  • BrowserBase
  • Playwright
  • Gemini Vision

Campaign Engine

One Brief Fans Out To Every Selected Format, With Copy, Theme And Layout Chosen Per Channel.

  • Celery
  • Prompt Engine

29 Ad Themes

From Product Hero And Social Proof To UGC And Meme-Style Layouts, Parsed Into Renderable Templates.

  • Ad Themes
  • Layout Parser

Chat & Image Editing

Refine Any Creative In Conversation Or Edit Imagery With AI, Every Change Kept In The Campaign Thread.

  • Gemini Image
  • Edit Chat

Credits & Billing

Usage-Based Credits For Scrapes, Formats And Edits, With Checkout, Webhooks And Product Analytics.

  • Dodo Payments
  • PostHog

04 · Architecture

Queue Everything,
Poll The Result

A FastAPI Core Hands Every Heavy Job To Celery Workers. Clients Poll Task Status While Gemini, BrowserBase And The Renderer Do The Work.

Tessa system architecture01 · ClientsDashboardNext.js 16 · React 19OnboardingBrand Setup FlowPublic APIPer-User API Keys02 · EdgeFastAPI~50 Routes · Rate LimitsAuthClerk · RLS Context03 · ServicesBrand WorkflowScrape · Vision · PDFCampaign WorkflowPrompt · Copy · ThemesRender ServiceLayouts · CairoSVGProduct CatalogPages · ReviewsCelery WorkersBrand · Campaign · GPU04 · DataPostgreSQL 1614 Tables · RLSRedis 7Broker · CacheAmazon S3Assets · LogosGeminiText · Vision · Image
  • Sync · REST / GraphQL
  • Async · Kafka Events
  • Service Node

~50 Endpoints · 4 Queues · AWS ECS Fargate

Read The Architecture As Text
Clients
Dashboard (Next.js 16 · React 19), Onboarding (Brand Setup Flow), Public API (Per-User API Keys)
Edge
FastAPI (~50 Routes · Rate Limits), Auth (Clerk · RLS Context)
Services
Brand Workflow (Scrape · Vision · PDF), Campaign Workflow (Prompt · Copy · Themes), Render Service (Layouts · CairoSVG), Product Catalog (Pages · Reviews), Celery Workers (Brand · Campaign · GPU)
Data
PostgreSQL 16 (14 Tables · RLS), Redis 7 (Broker · Cache), Amazon S3 (Assets · Logos), Gemini (Text · Vision · Image)

05 · Stack

The Stack,
And The Code

A Typed Next.js Front End Over A Python Pipeline, Picked So The GPU-Heavy Work Can Scale Independently Of The API.

01 Frontend
  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind v4
02 Growth
  • Clerk
  • PostHog
  • Dodo Payments
03 Backend
  • FastAPI
  • Python 3.12
  • Celery
  • Pydantic v2
04 Data
  • PostgreSQL 16
  • SQLAlchemy 2
  • Redis 7
  • Amazon S3
05 AI
  • Gemini 3 Flash
  • Gemini 3 Pro Image
  • BrowserBase
  • Playwright
06 Infra
  • AWS ECS Fargate
  • RDS
  • Docker
  • GitHub Actions
    async def generate_campaign(        user_id: str,        creative_types: List[str],        brief: str,        brand_dna: Optional[Dict] = None,        user_prompt: Optional[str] = None,        dna_id: Optional[str] = None,        selected_image_urls: Optional[List[str]] = None,        selected_product_context: Optional[Dict[str, Any]] = None,        layout_options: Optional[Dict[str, Any]] = None,        brand_owner_id: Optional[str] = None,    ) -> Dict[str, Any]:        """Runs the multi-asset marketing campaign generation pipeline."""        # Whoever owns the brand is the lookup owner; default to caller        effective_brand_owner = brand_owner_id or user_id        agent = MarketingAgent(user_id=user_id)         async with AsyncSessionLocal() as db:            await set_rls_context(db, user_id)
$ celery -A worker worker -Q campaign,gpu→ campaign + gpu queues consuming
Source excerpt from campaign_workflow.py (Python).

06 · PageSpeed

Fast, Accessible,
Found In Search

Google PageSpeed Insights Scores For tessa.so: Speed, Accessibility And SEO Engineered In From Day One.

  • 96Performance
  • 100Accessibility
  • 100Best Practices
  • 100SEO

Lighthouse · Google PageSpeed Insights · Run It Yourself ↗

Next Project  →

NandyAI

AI Society Management · 2026

View Project  →

Have A Product
In Mind?

Tell Us What You’re Building. We’ll Reply Within One Business Day With A Scoped Plan.