Skip to content

Overview

Consumr.ai is a consumer-intelligence and research platform that builds AI “twins” — LLM-powered personas grounded in real social-media and ad-platform audience signals — and uses them to run qualitative and quantitative research at speed and scale.

The key distinction from fully synthetic tools: Consumr.ai twins are not random responses. Each twin is compiled from three real-signal reports drawn from Meta audience data and social data, making it a credible representative of a defined cohort rather than a statistical hallucination.

📎 Evidence

Consumr.ai is a consumer-intelligence and research platformscratchpad/sdd/icp-findings.md:3-5 — positioning doc frames it as AI twins grounded in real audience signals; pw-enterprise/pyproject.toml:8 description is consumr.ai. ✅

Twins are LLM personas grounded in real signalsscratchpad/sdd/transcript-1.txt:92-94 (twins from intent/mentions/behavior reports of real cohorts) + pw-enterprise/ai_twin/respondents/respondent_prompt_composer.py:57-64 (prompt uses behavior_summary/intent_summary/mentions_summary). ✅

Not random — distinct from syntheticscratchpad/sdd/transcript-1.txt:186-234 (founder contrasts central-limit-theorem synthetic tools vs real social consumers) + scratchpad/sdd/icp-findings.md:6-7 (do NOT call it synthetic). ✅

Twin compiled from three reportsscratchpad/sdd/transcript-1.txt:92-94 (intent, mentions, behavior) + pw-enterprise/research_setup/FLOW.md:33-38 (create-twin enqueues Behavior, Intent, Mentions, Persona jobs). ✅

A twin is assembled from three report types plus persistent memory:

Report Source What it captures
Behavior Meta audience data Demographic and psychographic profile of the cohort
Intent Search keyword data What the cohort is actively looking for
Mentions Social commentary What the cohort is saying about topics, brands, and categories

A twin represents a cohort — it is not the cohort itself. It is a coherent AI persona that reflects the aggregate signals of millions of real people, not a fabricated character.

📎 Evidence

Behavior = Meta audience datascratchpad/sdd/transcript-1.txt:64-66 (build behavior report from Facebook lookalikes/uploaded data) + scratchpad/sdd/icp-findings.md:8-10 (behavior = demographic/psychographic from Meta) + pw-enterprise/model/models.py:688 intelligence column. ✅

Intent = search keyword datascratchpad/sdd/transcript-1.txt:74-76 (mentions and intent reports built using keywords) + pw-enterprise/api/intent_insights.py:1035-1037 (get_search_keywords_with_funnel_run pulls Google Trends). ✅

Mentions = social commentaryscratchpad/sdd/transcript-1.txt:74-76 (mentions built from keywords) + pw-enterprise/model/models.py:926-936 SocialReport with mention_type column + respondent_prompt_composer.py:10 --mentions report input. ✅

Twin has persistent memorypw-enterprise/model/models.py:1374 OrgUserPersona.user_memory column + scratchpad/sdd/transcript-2.txt:638 (twin carries memory summary across portfolio interactions). ✅

Representative of a cohort, not the cohortscratchpad/sdd/transcript-1.txt:134-135 (exact founder quote) + scratchpad/sdd/icp-findings.md:10. ✅

Three report typespw-enterprise/research_setup/FLOW.md:148-156 (global_run_report.intelligence = behavior, intent, mentions). ✅

The platform supports both modes of research:

  • Qualitative (Twins) — conversational research: focus groups, investigative interviews, open-ended probing. Uses full twins with depth and memory.
  • Quantitative (Respondents) — survey-scale research: brand-tracking, segmentation studies, concept testing, creative/ad testing, message prioritization, polls. Uses lighter “respondent” personas optimized for volume and consistency.

Research workflow: Research Setup → AI Twins → Workspace / Focus Groups → Insights — which in turn inform brand strategy, messaging, targeting, and creative decisions.

📎 Evidence

Qual = AI twins (focus groups, interviews)scratchpad/sdd/transcript-2.txt:455 (qual done by AI twins) + :592-594 (focus groups, custom, quick) + pw-enterprise/api/meetings.py:2230 objective_types incl. investigation. ✅

Qual twins carry memorypw-enterprise/ai_twin/group/main.py:575 focus_group_recommended_ai_twins + :590 query filters user_memory IS NOT NULL on user_persona. ✅

Quant = lighter respondentsscratchpad/sdd/transcript-2.txt:455 (respondents are light/mini twins) + dedicated pw-enterprise/ai_twin/respondents/agents.py:1 module + pw-enterprise/api/respondents.py:22-23 separate blueprint. ✅

Quant survey typesscratchpad/sdd/transcript-2.txt:467-469 names brand-track, segmentation, media-consumption, polls, concept testing + pw-enterprise/api/survey.py:2160 _build_brand_track_mapping; but transcript lists ‘media consumption’ not ‘creative/ad testing’ or ‘message prioritization’ — those two doc items are not in the cited transcript lines (creative_evaluation objective exists in meetings.py:2230 as qual). ⚠️

Research workflow stagespw-enterprise/research_setup/FLOW.md:1-9 (Research Setup creates twins) + :22-26 (segments→brief→recommendations→create-twin) + pw-enterprise/api/meetings.py:1394 ai_twin_focused_group_execute_plan_func. ✅

Insights inform marketing decisionsscratchpad/sdd/icp-findings.md:20-21 (research insights inform strategy/messaging/targeting/creative, do not run/buy campaigns). ✅

Distinct from the research flow, the backend also contains a cross-channel campaign planning and optimization layer. This integrates the major ad platforms (Google, Meta, TikTok, and others) and includes:

  • DBO (Budget Optimization) allocates spend across channels
  • AO (Audience Optimization) — audience targeting refinement

Insights from the research flow inform these campaign decisions, but the twins do not plan or buy media directly.

📎 Evidence

Cross-channel campaign layerpw-enterprise/api/market_budget_optimiser.py:4543-4549 handles facebook/tiktok/pinterest/google_ads + pw-enterprise/app.py:136-137 registers both optimiser blueprints + pw-enterprise/.env:35 tiktok_client_id key present. ✅

DBO budget optimiserpw-enterprise/api/market_budget_optimiser.py:45-46 budget_optimiser blueprint + pw-enterprise/cron/budget_optimiser_cron.py:1-7 scheduled cross-platform job. ✅

AO audience optimiserpw-enterprise/api/market_audience_optimiser.py:66-67 audience_optimiser blueprint + dedicated cron pw-enterprise/cron/audience_optimiser_cron.py exists (finder snippet text wrong but file confirmed). ✅

Twins don’t buy mediascratchpad/sdd/icp-findings.md:20-25 (research product informs marketing, does not run/buy/optimize ad campaigns; campaign layer is separate). ✅

Primary buyers: in-house brand marketing, insights, and research teams at mid-to-large consumer brands that already think in audience cohorts and segments. These teams need a faster and more honest alternative to traditional primary research, without the cost and delay.

Example industries: financial services, insurance, FMCG/retail, automotive, consumer electronics.

Geography: US-primary; India is also an active market.

Secondary audience: media agencies. SMBs can use the platform but lack the segment sophistication that makes Consumr.ai most powerful.

📎 Evidence

Primary ICPscratchpad/sdd/icp-findings.md:28-29 (in-house brand marketing/insights/research teams at mid-to-large consumer brands thinking in cohorts/segments). ✅

Faster/honest vs traditional researchscratchpad/sdd/transcript-1.txt:223-228 (traditional research meets 2000-3000 people, six months, market moves on, black box). ✅

Industry verticalsscratchpad/sdd/icp-findings.md:30-32 (Amex, GEICO, Walmart, Mercedes, consumer electronics, gold loans) + scratchpad/sdd/transcript-2.txt:57-62 (GEICO insurance shown live). ✅

US-primary, India activescratchpad/sdd/icp-findings.md:33 + scratchpad/sdd/transcript-2.txt:501 (India also doing 10,000 respondents). ✅

Secondary media agencies / SMB gapscratchpad/sdd/icp-findings.md:34-35 (media agencies ‘implied, not primary’; SMBs lack segment sophistication) + transcript-2.txt:31 (SMBs lack dedicated marketing team, don’t know segments). Media agencies are inferred, not named in transcripts. ⚠️

Clients upload first-party data directly to Meta (a “walled garden”). Consumr.ai never holds or processes raw PII — the audience signals are derived from aggregated platform data, not individual records.

📎 Evidence

Privacy: upload to Meta, no raw PIIscratchpad/sdd/transcript-1.txt:67-70 (don’t take first-party data, upload to Facebook, compliant) + scratchpad/sdd/icp-findings.md:16-17 + pw-enterprise/.env:39 facebook_client_id key. ✅

Term Meaning
Twin An LLM persona grounded in real behavioral, intent, and social signals for a defined cohort.
Respondent A lighter twin variant used for quantitative surveys and polls.
Segment / Brief A defined audience group and the research question framing applied to it.
Focus group / meeting A structured session where twins answer research questions qualitatively.
Insight Analyzed output from a focus group: behavior patterns, intent signals, brand mentions, themes.
Portfolio The brand context a twin is evaluated against.
📎 Evidence

Twin definitionpw-enterprise/ai_twin/respondents/respondent_prompt_composer.py:57-64 (prompt grounded in behavior/intent/mentions summaries). ✅

Respondent definitionscratchpad/sdd/transcript-2.txt:455 (respondents = light twins for quant) + pw-enterprise/ai_twin/respondents/respondent_matrix_step2.py exists. ✅

Segment/Brief definitionpw-enterprise/research_setup/FLOW.md:104-121 (user_segment has segment, user_brief, detailed_brief columns) + research_setup/api/routes.py:47 segment_to_detailed_brief. ✅

Focus group/meeting definitionpw-enterprise/api/meetings.py:44-45 meetings blueprint + :1394 ai_twin_focused_group_execute_plan_func. ✅

Insight definitionpw-enterprise/api/meetings.py:3120 (day-in-the-life from focus-group transcript) + :3291 (word-cloud theme analysis from transcript). ✅

Portfolio definitionpw-enterprise/model/models.py:1527-1540 PortfolioActivityLog + scratchpad/sdd/transcript-1.txt:146-148 (portfolio = American Express brand context twin always speaks in). ✅

Repo Stack Role
pw-enterprise Flask / Python Backend: REST APIs, background jobs, AI agent orchestration, campaign optimization.
pw-enterprise-frontend React 19 / Vite+, hosted on Cloudflare Frontend: the single-page application users interact with.

These docs cover both repos. Individual sections will call out which side of the stack is relevant.

📎 Evidence

pw-enterprise = Flask/Python backendpw-enterprise/pyproject.toml:6-10,44 (name pw-enterprise, py>=3.12, flask>=3.1.2) + pw-enterprise/app.py:250-276 registers blueprints + pw-enterprise/CLAUDE.md:5-11 (Flask, Redis+RQ, LangGraph/CrewAI). ✅

Frontend = React 19 / Vite+ on Cloudflarepw-enterprise-frontend/package.json:108 react ^19.1.0, :168 vite via @voidzero-dev/vite-plus-core, :15 wrangler pages deploy + wrangler.toml:1-5 Cloudflare Pages config. ✅

~50 cron jobspw-enterprise/CLAUDE.md:30 (~50 files) + cron/ directory has 55 files including __init__.py (~54 actual jobs); approximation holds. Doc page does not state a count. ✅

60+ blueprints (overcount)pw-enterprise/CLAUDE.md:21 claims 60+, but pw-enterprise/app.py has only 52 register_blueprint calls (grep -c). Overview.mdx does not actually state a number, so doc is safe; the CLAUDE.md figure is inflated. ⚠️

Redis + RQpw-enterprise/requirements.txt:1143 rq==2.6.1 + :1067 redis==7.1.0 (via rq, flask-sse). ✅

LangChain/LangGraph/CrewAIpw-enterprise/requirements.txt:518 langchain==1.2.7, :563 langgraph==1.0.7, :154 crewai==1.6.1. ✅