Live as of 2026-05-31 · Phase 3.1 wired

Social Intelligence
From TikTok to Cohort
in Seconds.

Every TikTok, every YouTube cooking demo, every Instagram Reel, every nutritionist talk — ingested through our parsing fleet, structured into recipes, products, ingredients, and health-claim evidence-quality grades. Wired straight into the knowledge graph so cohorts emerge and cold-start works before a shopper has bought a thing.

Gemini 2.5 Flash native video ~$0.004 per video ~30s end-to-end 11 of 12 succeeded on a real-world sample

What it extracts

Five structured tasks. One Gemini call per video. JSON out, ready for the graph.

🍳

recipe_extraction

Title · yield · ingredient lines (raw + parsed) · numbered steps · techniques · timestamps.

🏷️

product_mentions

Brand · product · variant · category · shown vs. verbally_mentioned vs. sponsored · timestamp.

🥑

ingredient_mentions

Name · raw_text · role (featured / mentioned / shown_only / compared_to) · claimed_attributes.

⚕️

health_claims

Claim · subject · evidence_quality (peer_reviewed_cited / expert_quoted / anecdotal / no_evidence / contested).

🎬

auto (default)

All four above, in one structured response. Video classification first, then the deep dive — one call, sub-30s.

The pipeline

Each step is its own container. Each runs on a different schedule. Everything writes to the same graph.

📱
Launch UX
Step 1

Social listener

TikTok / YouTube / Instagram API or yt-dlp fetcher. Pulls bytes + creator + post metadata.

Social Operations Admin Console
🧠
Live Demo
Step 2 — magic layer

parser-video (Gemini Flash)

Native multimodal: transcribes audio, watches frames, returns structured JSON via response_schema.

Shoppable Discovery Deep Dive
🔗
View Graph
Step 3

KG bridge

Upserts :Recipe, :Ingredient, :Product, :HealthClaim nodes + typed edges back to :ShoppableVideo. Idempotent.

Knowledge Graph Explorer
📊
Launch Studio
Step 4

Cohorts + signals

Daily Louvain → cohorts. Per-cohort signature aggregates top recipes / ingredients / brands / evidence-quality.

Persona Journey Studio

From this 29-second TikTok-style video…

Real run on 2026-05-31 — Emma's Goodies "How to Make The Perfect Pancake" on YouTube. HelloFresh-sponsored. Gemini 2.5 Flash. 19 seconds wall-clock.

Input

Raw video bytes

🥞
29s 1.5 MB YouTube
video_id: ziByVjPo2Vc
title: "How to Make The Perfect Pancake"
uploader: HelloFresh TV | UK
platform: YouTube
parser-video output (19s)

Structured ParseResults

recipe 0–29s
Savory Chickpea Pancake (Socca / Farinata)
techniques: pan-frying, visual doneness cue
ingredients: chickpea flour · black sesame seeds · olive oil · water
4 instructions captured incl. "small holes form and pop on the surface"
product_mention @ 0s sponsored
HelloFresh · meal kit service
mention_type: shown_and_mentioned · is_sponsored_content: true
ingredient_mentions ×3 with timestamps
chickpea flour role=featured @ 4s
black sesame seeds role=shown_only @ 10s
olive oil role=shown_only @ 12s
video_summary
video_kind: recipe_demo
language: English
tokens: 8,636 in / 1,391 out ≈ $0.005

A 12-video sample. 11/12 succeeded.

Phase 3 corpus: recipe demos · health talks · grocery hauls · cooking shorts. Real signal emerges in one run.

Recipes extracted
14
incl. 3 multi-recipe videos
Product mentions
34
15 distinct Trader Joe's products in one haul
Ingredient mentions
127
with timestamps + claimed_attributes
Health claims
11
9 no_evidence · 2 anecdotal · 0 cited

Recurring creators surface in a single run

After 12 videos. The CreatorSignature for Emma's Goodies is computable immediately.

Emma's Goodies
baking-focused recipe creator
8 recipes
4 videos · 39 ingredients · 13 products
Serious Eats
cooking education
2 recipes
1 video · 10 ingredients · 3 products
HelloFresh TV | UK
sponsored content
1 recipe
1 video · 4 ingredients · sponsor: HelloFresh
@AmyAreVideos
grocery hauls
0 recipes
1 video · 35 ingredients · 15 Trader Joe's products
unexpected signal

The claimed_attributes goldmine

Marketing-language → product-attribute mapping, verbatim from the speaker. This is the "which products do creators describe in health terms" advertiser signal.

tomato basil marinara
organic low fat good source of potassium
egg
becomes rubbery when microwaved
cooking-technique signal
chicken breast
seasoned
indian spices
authentic
Phase 3.2 · just landed

Ingredient canonicalization — duplicates collapsed, noise filtered

Surface-form variants ("AP flour" / "all-purpose flour" / "flour") now collapse into one canonical :Ingredient node. Macronutrient concepts ("protein" the noun ≠ chicken breast) are filtered into a separate cohort-signal stream. Qualifiers like melted move from the name into the edge property where they belong.

Before — raw lowercased
30 distinct names · 74 mentions
protein7 · macronutrient ≠ ingredient
butter6
flour3 · split from "all-purpose flour"
all-purpose flour3 · duplicate of "flour"
chocolate chunks2 · split from "chocolate chips"
chocolate chips2 · duplicate of "chocolate chunks"
sugar3 · ambiguous (macro or ingredient?)
After — canonicalized + filtered
25 nodes · 64 kept · 10 filtered
butter qualifier: melted ×28
flour (merged AP + all-purpose)6
milk5
salt5
brown sugar (canonical)5
chocolate chips (merged chunks)4
baking powder4
protein, sugar, calories… (macronutrients, separate channel)10
How it works: Service in social/services/ingredient_canonicalizer.py with a hand-curated ~150-entry vocabulary in _ingredient_vocab.py. Resolution order: macronutrient check → prefix-qualifier stripping (fresh / organic / extra-virgin → moved to edge property) → plural→singular → alias lookup → unresolved fallback. Designed to graduate when a USDA FoodData Central / OpenFoodFacts taxonomy is loaded via ia.km_concept_tag — same interface, deeper coverage.
Phase 4 · just landed

Cohorts that surface themselves

Louvain community detection on the (Shopper)-(Creator)-(Video) graph. Each shopper gets a primary cohort + a topical signature aggregated across the videos cohort members actually engage with — weighted by cohort-attention so the signal isn't polluted by random discovery. Real output below from a 200-shopper synthetic run, 60 ms end-to-end, modularity 0.34.

baking_enthusiasts

54 members
follows cake-decorator · top ingredients: brown sugar, chocolate chips, milk, flour, egg
crt-cake-decorator44
crt-pastry-chef43
crt-emma-goodies41
sponsor saturation: 0%

deal_hunter_haul_followers

52 members
follows tj-haul-1 · top products: TJ Mini Chicken Tacos, HelloFresh meal kits, TJ Hashbrowns
crt-tj-haul-145
crt-costco-deals43
crt-grocery-budget42
sponsor saturation: 60% advertiser-receptive

international_cuisine_explorers

48 members
top ingredients: cardamom, lemongrass, coconut milk, ginger, saffron · top recipes: Pho, Pad Thai, Tikka Masala
crt-italian37
crt-indian37
crt-mexican35
sponsor saturation: 0% evidence: anecdotal-dominant

health_forward_evidence_seekers

46 members
top ingredients: chicken breast, kale, salmon, avocado, chickpeas
crt-nutritionist-238
crt-rd-protein36
crt-nutritionist-136
evidence: peer_reviewed-dominant sponsor saturation: 4%
cold-start in action
A new shopper signs up via Trader Joe's haul creator. 60 ms later:
cohort_id = "deal_hunter_haul_followers" · 52 members · modularity 0.34
→ recipes (none) — this cohort doesn't cook, they curate
→ ingredients tortilla chips, salsa, rotisserie chicken, frozen pizza
→ products TJ Mini Chicken Tacos · HelloFresh meal kit · TJ Hashbrowns · TJ Vegetable Masala Burger
→ feed bias sponsored deals OK (cohort is advertiser-receptive at 60%)
All before that shopper has bought a single thing from us.

What it unlocks

Four query surfaces — same graph, different audience.

Cold-start in 3 seconds

A shopper arrives via a Blinklink from creator X's video Y. Within 3 seconds we know: the recipe in Y, the ingredients featured, the creator's topical fingerprint, the cohort's signature, the trends currently spiking in that cohort — all from a single Memgraph traversal.

MATCH (referral_video:ShoppableVideo {video_id: $vid}) <-[:AUTHORED]-(creator:Creator) -[:DEMONSTRATES]->(recipe:Recipe) -[:USES]->(ing:Ingredient) RETURN ing.name, count(*) AS strength ORDER BY strength DESC LIMIT 10
👥

Cohort intelligence

Daily Louvain over (Shopper)–(Creator)–(Video) gives each shopper a cohort. Per-cohort signature aggregates top recipes, top ingredients, dominant claim-evidence-quality. "Cohort 47 just spiked on cottage cheese (+340%) and contested seed-oils discourse (+220%)" — one query.

recipe-affinity ingredient-affinity brand-affinity claim-evidence-mix sponsor-saturation
💰

Advertiser intelligence

Closed-loop competitive signal — the kind retailers can't offer. Examples from the same graph:

  • "Your product was mentioned in 1,247 TikToks last week. 83 paid, 1,164 organic. Top 20 by reach →"
  • "Your competitor X's organic-mention velocity is +120% MoM; yours is flat. The gap is here →"
  • "12 creators have audiences overlapping >40% with your highest-LTV cohort. None are yours yet."
  • "Cohort 47 buys 3.4× more in your category than the platform average. LTV 2.8×."
🛡️

Safety + misinformation triage

Every health claim ships with an evidence-quality grade. contested_or_disputed + no_evidence claims flow straight to the safety module's review queue — we never show a "tip" that contradicts mainstream nutrition science without a flag.

0peer_reviewed_cited (highest trust)
0expert_quoted
2anecdotal ("I tried this…")
9no_evidence (bare assertion)
0contested_or_disputed
Numbers from the 11-video sample. The grader doesn't flatter speakers.

The economics

Effectively free intelligence relative to the data value.

Per video
$0.004
Gemini Flash · ~10K tokens total
1K videos/day
~$4
A single influencer's content + competitors
1M videos/day
~$3,800
Category-wide listening at full scale

Where we are

8-phase roadmap. Phases 0–3.1 live; 3.2–3.3 next; 4–8 follow.

DONE
Phase 0 · parser-video shipped + Cloud-Run-deployed on L4 GPU
DONE
Phase 1 · Catalog seed for 11 social-domain entity types
social_creator · social_post · social_community · social_followership · creator_signature · cohort · social_recipe · social_ingredient_mention · social_product_mention · social_health_claim · trend
DONE
Phase 2 · KnowledgeGraphBridge.ingest_parser_video_response interface locked
DONE
Phase 3 · First real connector — 11/12 YouTube videos through the full path
DONE
Phase 3.1 · Actual Memgraph node + edge writes wired
:Recipe / :Ingredient / :Product / :HealthClaim nodes + 5 new edge types in the social graph schema
JUST LANDED
Phase 3.2 · IngredientCanonicalizer — surface forms → canonical concepts
~150-entry vocabulary + qualifier stripping + plural→singular + macronutrient filter. Result on the same corpus: 30 → 25 ingredient nodes, 10 macronutrient mentions filtered, qualifier signals like "butter melted" surfacing.
JUST LANDED
Phase 3.3 · Gemini File API path for >20 MB videos
Long-form unlocked. Smoke on the same 23 MB / 8m42s nutritionist explainer that failed Phase 3: 77s wall-clock, 9 health claims graded (including 2 peer_reviewed_cited studies the speaker actually cited), 31 ingredient mentions. ~$0.013 for ~9 min of content.
NEXT
Phase 3.4 · Graduate canonicalizer to km_concept_tag
Swap hand-curated vocab for USDA FoodData Central / OpenFoodFacts taxonomy via ia.km_concept_tag; same canonicalizer interface, deeper coverage
JUST LANDED
Phase 4 · Cohort discovery worker (Louvain)
200 synthetic shoppers / 20 creators / 60 videos → 4 distinct cohorts in 60 ms, modularity 0.34 (good community structure). Each cohort gets a topical signature (top creators, ingredients, recipes, sponsor saturation, evidence-quality distribution) — see the call-out section above. Memgraph-MAGE write path scaffolded for production graph.
LATER
Phase 5 · Cohort signature aggregation (daily roll-ups)
LATER
Phase 6 · Cold-start service · /api/v1/shoppers/{id}/cold-start
LATER
Phase 7 · Advertiser intelligence surface (APIs + Console)
LATER
Phase 8 · Trend → cohort matchmaking + FlashAuction integration

Reference docs & code

design delectable/social/intake/INTELLIGENCE-LAYER.md
findingsdelectable/social/intake/INTELLIGENCE-LAYER-PHASE3-FINDINGS.md
connectordelectable/social/social/integrations/youtube_ingest.py
bridge delectable/social/social/integrations/knowledge_graph_bridge.py
parser parsing/parsers/video/
catalog infrastructure/src/infrastructure/catalog/seeds/social.py
deploy parser-video-prototypes-169050908164.us-central1.run.app