Competitor Analysis
Track competitor accounts, refresh their content, and compare against your own profile.
Vertical: Analytics · Status: ✅ Live Back to Analytics · workflows index
Trigger
Daily cron sweep per modules.competitors.enabled tenant, plus on demand.
Flow
competitor list
|
refresh in batches of 3 (Apify scrape)
|
own-profile refresh if >6h old (Meta preferred, Apify fallback)
|- runs in PARALLEL, behind an 8s timeout
|
buildComparison
Two stores, bridged not merged
- Your own account lives in the learning store - connections, reels, metric snapshots, written by the Instagram Graph sync.
- Competitors live in
ops_ca_*.
The 8-second timeout on own-profile refresh is deliberate: a slow Instagram call can never blank the comparison.
Own-profile sync prefers the Meta provider and falls back to Apify only when Meta returns no follower count - i.e. a personal account.
Agents involved
Deterministic plus an LLM topic pass. The daily sweep does not await the refresh - it is a paid scrape that can run for minutes, and the module flag is the cost control.
Gaps
Insight synthesis across competitors is thin - the data is collected, the so what is left to the reader.
Roadmap source
Page 3 - Competition Research; page 6 - Scan competition to get insights -> ES — see roadmap_ref_extracted.md.