Reel Topic Derivation
Work out what each competitor reel is actually about - with a promo filter at every exit.
Vertical: Analytics · Status: ✅ Live Back to Analytics · workflows index
Trigger
Per competitor refresh.
Flow
caption
|
stripPromoLines <- "follow for more" describes the account, not the reel
|
candidate topic: deterministic -> LLM -> hashtag
|
isPromoTopic rejection at EVERY exit
|
unresolved -> NO_TOPIC sentinel
|
NO_TOPIC only -> one cover-frame vision retry (capped, SSRF-guarded)
|
persist topic + summary
Why it is built this careful way
Three decisions worth not undoing:
NO_TOPICrather than a guess. An invented category is worse than an admitted gap.- Vision retry only for unresolved reels, capped per refresh - it is a paid
call at
detail: high. - Deliberately not the learning media pipeline, which downloads video and needs ffmpeg + Whisper - far too heavy per refresh.
The vision call also returns a 1-2 sentence summary that overwrites the deterministic one (which describes the caption's shape and reads as boilerplate). Both persist, so changing the prompt requires a refresh.
Agents involved
OpenAI vision for the retry path only.
Gaps
Topics stay read-only and are never selectable for generation - reels do not pass the compliance scan every news item gets.
Roadmap source
Page 3 - Competition Research — see roadmap_ref_extracted.md.