For any brand, Reaction Lab:

  • Discovers competitors and scrapes their public Meta ads
  • Parses ad creative into structured attributes (hooks, CTAs, tone, visual style)
  • Generates synthetic consumer personas using three validated psychology frameworks: Big Five personality traits (OCEAN), VALS psychographic segmentation, and behavioral dimensions like price sensitivity and impulse tendency
  • Simulates audience reactions — each persona evaluates each ad across 8 dimensions including attention, credibility, relevance, and purchase intent
  • Synthesizes white space — identifies overused patterns, underserved segments, and neglected messaging angles
  • Proposes differentiated ad concepts targeting the specific gaps competitors are missing

How we built it

  • Frontend: React + Vite + Tailwind + GSAP animations, deployed on Railway
  • Backend: FastAPI + arq (async job queue) + PostgreSQL + Redis
  • Agentic pipeline: 7 specialized agents orchestrated in sequence, each with typed input/output schemas — no prompt soup
  • Persona engine: Research-backed persona generation using Big Five (OCEAN) traits, VALS psychographic types, and behavioral profiling. Based on the Deepsona framework (2024), PersonaLLM (ICLR 2025), and a 2024 meta-analysis of personality traits and ad response
  • LLM layer: Anthropic Claude (Sonnet/Opus) for simulation and synthesis, Haiku for parsing — provider-swappable to OpenAI
  • Ad scraping: Browser-based agents navigating the Meta Ad Library directly, no API keys required
  • Demo case study: AYBL (activewear brand) vs. Gymshark, Lululemon, Alo Yoga, Salomon — 12 real competitor ads scraped and analyzed

Research backing

  • Big Five personality traits predict advertising response (meta-analysis of 15 studies, Tandfonline 2024)
  • Multi-trait synthetic personas outperform simple role-playing (Deepsona, 2024)
  • Explicit OCEAN scores in prompts produce trait-consistent LLM behavior (PersonaLLM, ICLR 2025)
  • VALS psychographic framework validated since 1978 (SRI International)

Challenges we ran into

  • Meta Ad Library has no reliable public API — we solved this with browser-based scraping agents
  • Generic persona labels ("budget shopper") produce flat, predictable reactions — multi-trait cards with explicit OCEAN scores create real disagreement between personas
  • Balancing pipeline speed for live demo vs. depth of analysis — the scale knob (5 personas for demo, 12+ for production) solved this

What we learned

The key insight: disagreement between personas is where strategic insight lives. When all synthetic consumers react the same way, you learn nothing. When a Skeptical Researcher scores credibility at 3/10 while an Aspirational Adopter scores it at 8/10, that's actionable signal about which audiences you're reaching and which you're repelling.

Built With

Share this project:

Updates