Overview
What is Consumr.ai?
Section titled “What is Consumr.ai?”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 platform — scratchpad/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 signals — scratchpad/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 synthetic — scratchpad/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 reports — scratchpad/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). ✅
How a twin is built
Section titled “How a twin is built”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 data — scratchpad/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 data — scratchpad/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 commentary — scratchpad/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 memory — pw-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 cohort — scratchpad/sdd/transcript-1.txt:134-135 (exact founder quote) + scratchpad/sdd/icp-findings.md:10. ✅
Three report types — pw-enterprise/research_setup/FLOW.md:148-156 (global_run_report.intelligence = behavior, intent, mentions). ✅
Research capabilities
Section titled “Research capabilities”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 memory — pw-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 respondents — scratchpad/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 types — scratchpad/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 stages — pw-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 decisions — scratchpad/sdd/icp-findings.md:20-21 (research insights inform strategy/messaging/targeting/creative, do not run/buy campaigns). ✅
Campaign planning (separate capability)
Section titled “Campaign planning (separate capability)”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 layer — pw-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 optimiser — pw-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 optimiser — pw-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 media — scratchpad/sdd/icp-findings.md:20-25 (research product informs marketing, does not run/buy/optimize ad campaigns; campaign layer is separate). ✅
Who it’s for (ICP)
Section titled “Who it’s for (ICP)”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 ICP — scratchpad/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 research — scratchpad/sdd/transcript-1.txt:223-228 (traditional research meets 2000-3000 people, six months, market moves on, black box). ✅
Industry verticals — scratchpad/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 active — scratchpad/sdd/icp-findings.md:33 + scratchpad/sdd/transcript-2.txt:501 (India also doing 10,000 respondents). ✅
Secondary media agencies / SMB gap — scratchpad/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. ⚠️
Privacy architecture
Section titled “Privacy architecture”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 PII — scratchpad/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. ✅
Key domain terms
Section titled “Key domain terms”| 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 definition — pw-enterprise/ai_twin/respondents/respondent_prompt_composer.py:57-64 (prompt grounded in behavior/intent/mentions summaries). ✅
Respondent definition — scratchpad/sdd/transcript-2.txt:455 (respondents = light twins for quant) + pw-enterprise/ai_twin/respondents/respondent_matrix_step2.py exists. ✅
Segment/Brief definition — pw-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 definition — pw-enterprise/api/meetings.py:44-45 meetings blueprint + :1394 ai_twin_focused_group_execute_plan_func. ✅
Insight definition — pw-enterprise/api/meetings.py:3120 (day-in-the-life from focus-group transcript) + :3291 (word-cloud theme analysis from transcript). ✅
Portfolio definition — pw-enterprise/model/models.py:1527-1540 PortfolioActivityLog + scratchpad/sdd/transcript-1.txt:146-148 (portfolio = American Express brand context twin always speaks in). ✅
The two repos
Section titled “The two repos”| 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 backend — pw-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 Cloudflare — pw-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 jobs — pw-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 + RQ — pw-enterprise/requirements.txt:1143 rq==2.6.1 + :1067 redis==7.1.0 (via rq, flask-sse). ✅
LangChain/LangGraph/CrewAI — pw-enterprise/requirements.txt:518 langchain==1.2.7, :563 langgraph==1.0.7, :154 crewai==1.6.1. ✅