Competitor Intel Pipeline — RBD Marketing Team Edition
Revised: 2026-06-01 (major scope revision after discovery questions) Priority: P1 Category: PREP
Executive Summary
Build a competitive intelligence system for the RBD marketing team, tuned to support the RBD 2026 digital marketing plan rollout. Tracks RBD against its actual peer set — other fabric manufacturers (Moda, Art Gallery, Robert Kaufman, FreeSpirit, etc.), not retailers. Covers four dimensions: collection launches & cadence, designer signings, consumer marketing presence, and trade/dealer/industry presence.
Delivery: monthly/quarterly PPTX deck — auto-generated from a template, Cole reviews and finalizes, RBD marketing team consumes in formal review meetings. Data collection runs continuously in the background; the deck is the human-facing surface.
Discovery Findings (2026-06-01)
Recorded for future plan reviewers:
| Question | Answer |
|---|---|
| Primary consumer | RBD marketing team |
| Dimensions in scope | Collection launches, designer signings, consumer marketing, trade/dealer presence (all four) |
| Driver | RBD 2026 digital marketing plan rollout |
| Delivery format | Presentation deck (monthly/quarterly) |
Key correction: Earlier draft of this plan scoped competitors as retailers (FQS, MSQC, Connecting Threads). That's wrong for RBD-the-wholesaler. RBD competes with other manufacturers. Retailer intel belongs to a separate FO/SHP/Sundance plan if Cole wants one later. See [[rbd-wholesale-competitive-set]] memory.
Research Phase
Current State (what's already built)
Shipped today (2026-06-01):
social_media_collector_v5.py— monthly run, IG/FB/Pin/YT follower counts for 12 fabric manufacturerscompetitive_scan_alerter.py— MoM follower-change alerts (>2% threshold) into Mission Control queueyoutube_deep_collector.py— per-channel deep stats: subs, views, video count, upload cadence, recent uploads with view/like/comment counts. 9/9 brands collected successfully on first run today.- Data lives at
data/competitor-intel/(canonical location, all scripts repointed)
Existing reports / context (manually researched):
quilting-fabric-social-competitive-landscape.{md,pdf,html}— Feb 2026 landscape analysisrbd-2026-digital-marketing-strategy.pdf— Feb 2026 strategic docrbd-2026-budget-allocation.{html,pdf}— Feb 20262026-05-21-competitor-research-fqs-msqc-connecting-threads.md— (retailer-focused, useful as a model for manufacturer version)
Broken (separate workstream):
competitor_ad_tracker.py— Meta Ad Library scraper. Was scoped to retailers (wrong). Will rescope to manufacturers in Phase 2.
What's missing for the RBD marketing team's needs
| Dimension | Have | Missing |
|---|---|---|
| Consumer marketing presence | ✅ social followers, ✅ YouTube deep | manufacturer email programs (Milled), Meta + Google active ad creative, Pinterest pin cadence, Instagram engagement |
| Collection launches & cadence | nothing automated | new collection releases on each manufacturer's site, monthly cadence per manufacturer, theme/trend tagging |
| Designer signings | nothing automated | designer roster per manufacturer, new signings detection |
| Trade / dealer / industry | nothing | Quilt Market booth/program intel (2x/yr), trade press coverage (Quilts Inc, etc.), dealer support programs |
Market context
Fabric/quilting is a slow-changing industry compared to fashion/DTC. Monthly cadence is enough for the marketing team's deck. Collection launches happen on roughly quarterly cycles tied to industry shows (Spring + Fall Quilt Market). Designer signings happen a few times per year per manufacturer.
This means: collect data weekly, but deliver monthly. Weekly data gives us proper MoM/QoQ context in the deck; monthly delivery matches the marketing team's review cadence.
Constraints
- Budget: Tier 1 free/near-free (≤$30/mo). Tier 2 paid sources (Apify, DataForSEO) only if Phase 1 proves out value.
- Effort: This is now a real product (deck consumed by a team), not a tool. Quality bar is higher.
- Coverage gaps are real: Trade press, designer signings, dealer programs don't have clean public data sources. Hybrid approach — automate what we can, Claude-assisted manual scan once a month for the rest.
- Data integrity (CLAUDE.md rule): No fabricated numbers. "N/A" when source fails — never estimate.
- No emails sent per project rule — deck is PREP only, Cole presents/forwards.
Options Considered
Option 1: Weekly Sheet + Slack alerts (the original plan, now rejected)
Approach: What I originally built toward. Weekly orchestrator → Google Sheet of record → Mission Control + Slack alerts.
Pros: Real-time-ish, lightweight to consume, Cole-friendly. Cons: Wrong format for a marketing team. They want polished narrative in meetings, not raw data they have to filter. Forces them to be analysts. Misses the strategic context that a presentation provides. Verdict: Wrong for the audience.
Option 2: Monthly auto-generated PPTX deck + continuous data collection (chosen)
Approach:
- Data collection runs weekly per signal type (existing micro-collectors + new ones).
- A monthly_analysis_engine.py crunches the previous month's data: MoM/QoQ deltas, identifies "movers," composes the narrative for each section.
- A deck_generator.py uses the
pptxskill to fill a brand-template PPTX with sections, charts, callouts, and narrative. - Cole reviews the draft deck, adds/edits narrative, finalizes.
- Marketing team consumes the final deck in their monthly review.
- Parallel: Cole gets Mission Control alerts on big moves (his personal awareness layer, doesn't reach the team unless he chooses).
Pros: Matches the team's consumption pattern. Polish-first. Cole still gets real-time signal personally. Reusable template — improvements compound over time. Cons: Higher build complexity — deck generation, narrative composition, template design. PPTX auto-fill is brittle to template changes. Verdict: Right shape, accept the complexity.
Option 3: Hybrid — Sheet + monthly deck (rejected as scope creep)
Approach: Both deliverables in parallel. Pros: Best of both. Cons: Twice the maintenance. The team explicitly chose deck format — no signal that a sheet is also needed. Build sheet only if marketing team later asks for self-serve data access. Verdict: Defer. Build deck first, add Sheet only on demand.
Chosen Approach
Decision: Option 2 — continuous weekly collection, monthly analysis + auto-generated PPTX deck.
Rationale:
- Matches the team's stated consumption format (deck) and cadence (monthly/quarterly).
- Decouples collection from delivery — data freshness is independent of deck production.
- PPTX is editable by the marketing team — they can add their own narrative, share within RBD, present in meetings.
- Reuses Cole's existing
pptxskill (already installed, proven). - Cole stays in the loop via Mission Control alerts on big competitor moves — but the team doesn't get noise.
Trade-offs accepted:
- Deck template design takes meaningful upfront work (one-time).
- Auto-fill is template-brittle — schema changes require template + code coordination.
- Some signals (designer signings, trade press) can't be fully automated — hybrid manual+automated step required before each deck.
Architecture
data sources (weekly) analysis + delivery (monthly)
───────────────────── ──────────────────────────
social_media_collector_v5.py ──┐
youtube_deep_collector.py ─────┤
collection_launch_monitor.py ──┤
manufacturer_email_intel.py ───┼──→ data/competitor-intel/*.{csv,jsonl}
meta_ad_collector.py (revived) ┤
google_ad_collector.py ────────┤
designer_roster_monitor.py ────┤
manual_intel_inbox.md ─────────┘ (Claude-assisted monthly scan for
trade press, Quilt Market, etc.)
│
▼
monthly_analysis_engine.py
(MoM/QoQ deltas, movers, narrative gen)
│
▼
deck_generator.py + pptx template
│
▼
reports/competitor-intel/decks/YYYY-MM-rbd-competitive-intel.pptx
│
Cole reviews + narrative edit
│
▼
RBD marketing team monthly review
Storage layout:
~/ai-projects-local/mission-control/
├── scripts/
│ ├── social_media_collector_v5.py ✅ exists
│ ├── competitive_scan_alerter.py ✅ exists
│ ├── youtube_deep_collector.py ✅ exists
│ ├── collection_launch_monitor.py ← Phase 1 new
│ ├── manufacturer_email_intel.py ← Phase 2 new
│ ├── meta_ad_collector.py ← Phase 2 revival (rescoped)
│ ├── google_ad_collector.py ← Phase 2 new
│ ├── designer_roster_monitor.py ← Phase 3 new
│ ├── monthly_analysis_engine.py ← Phase 4 new
│ └── deck_generator.py ← Phase 4 new
├── data/competitor-intel/
│ ├── follower-counts.csv ✅ exists
│ ├── youtube-deep.csv ✅ exists
│ ├── youtube-videos.jsonl ✅ exists
│ ├── collections.csv ← Phase 1
│ ├── collections-products.jsonl ← Phase 1
│ ├── email-cadence.csv ← Phase 2
│ ├── meta-ads.jsonl ← Phase 2
│ ├── google-ads.jsonl ← Phase 2
│ ├── designer-rosters.jsonl ← Phase 3
│ └── manual-intel/YYYY-MM.md ← Claude-assisted monthly scan notes
├── templates/competitor-intel/
│ └── rbd-competitive-intel-template.pptx ← Phase 4 (designed with marketing team)
└── reports/competitor-intel/
└── decks/YYYY-MM-rbd-competitive-intel.pptx ← Phase 4 output
Competitor Set
Manufacturer competitors (12 brands — same as social tracker):
Tier A — direct competitors, full tracking weekly:
- Riley Blake Designs (us, for benchmarking)
- Moda Fabrics
- Art Gallery Fabrics
- Robert Kaufman
- FreeSpirit Fabrics
Tier B — secondary, full tracking weekly:
- Michael Miller Fabrics
- Andover Fabrics
- RJR Fabrics
Tier C — peripheral, lighter tracking (monthly check):
- Wilmington Prints
- Benartex
- Northcott
- Maywood Studio
Tier C is mostly dormant on YouTube (we confirmed today) and likely on other channels too. Don't waste compute weekly; check monthly and demote to "appendix" sections of the deck.
Implementation Plan
Phase 0: Monthly recap enricher (THIS WEEK — ship to AA, internal validation only)
The critic-driven sequencing fix: ship value to AA immediately using existing data, validate the format internally for one month before exposing to Kelly. Avoids building months of scraper infrastructure on unconfirmed demand.
Workflow understanding (confirmed by Cole): Alpine Analytica produces the monthly recap, not Kelly's team. That means the enricher's output flows into AA's existing recap process — no handoff risk, no waiting on Kelly approval to start.
- ☐ P0-1. Build
monthly_recap_enricher.pyusing ONLY data already collected: data/competitor-intel/follower-counts.csv(Feb–Jun 2026, 12 brands across IG/FB/Pin/YT)data/competitor-intel/youtube-deep.csv(Jun 2026, 9 channels with full stats)data/competitor-intel/youtube-videos.jsonl(146 recent video records)- ☐ P0-2. Produces four callout blocks formatted for direct paste into the existing
RBD_Marketing_Recap_*.pptx: - IG vs Moda: "Moda current 277K · MoM +0.2% · gap closing/widening · projected month to close: [calc]"
- YouTube competitive position: "RBD 183K maintains #1 vs AGF 66.9K · best video this month: [title] · upload cadence 11/30d vs AGF 6/30d, Moda 9/30d"
- Facebook lead: "176,844 confirmed #1 · #2 Moda 152.7K · gap stable +24K"
- Content cadence intelligence: "[Most active competitor on YouTube this month] dropped [N] videos themed [X] — pillar context for editorial planning"
- ☐ P0-3. Output as markdown file + a JSON blob AA can ingest. Lives at
reports/competitor-intel/monthly-callouts/YYYY-MM.md. - ☐ P0-4. Run for May 2026 data (already have it) — AA reviews quality, gives feedback, iterates on format.
- ☐ P0-5. Run for June 2026 data when month closes (~July 1). Cole/AA reviews, integrates into the finalized June recap, ships to Kelly.
- ☐ P0-6. Kelly's feedback on July delivery gates Phase 4 (quarterly deck) — build only if she signals appetite.
Phase 1: Collection launches (the highest-signal missing piece)
Collection launches drive the entire fabric industry's marketing cycle. Knowing when Moda or AGF drops a new collection is the most directly actionable input to RBD marketing planning.
- ☐ P1-1. Reconnaissance: catalog each Tier A+B manufacturer's "new collections" or "/collections/all" URL. Identify scraping strategy per site (most are Shopify-like; some custom).
- ☐ P1-2. Build
collection_launch_monitor.py— weekly diff of each manufacturer's collections page. Detect new entries, tag with: collection name, designer (if listed), launch date, # products, thumbnail URL. - ☐ P1-3. Write to
collections.csv(one row per new collection detected) +collections-products.jsonl(full product list per collection). - ☐ P1-4. Manual baseline: backfill the last 6 months of collection launches across Tier A so we have history. Likely a one-time Claude-assisted scrape of archive/press pages.
- ☐ P1-5. Dry-run + first weekly run. Sanity check output.
Phase 2: Ads intel (rescoped per critic — drops Milled subject-line busy-work)
- ☐ P2-1. Revive
meta_ad_collector.py— rescope from retailers to manufacturers. Renew Meta Ad Library API token. Track active ads per manufacturer: creative, copy, run dates. - ☐ P2-2. Build
google_ad_collector.py— scrape adstransparency.google.com per manufacturer. - ☐ P2-3. Lead-gen ad tracking (new, per critic) — from Meta Ad Library data, filter for lead-gen ad type per competitor. Track count + frequency. Serves the 150K email goal: "Moda is running 15 lead-gen ads this month, RBD running 2" is actionable for Kelly.
- ~~[ ] P2-4. manufacturer_email_intel.py via Milled~~ — DROPPED. Subject-line scraping doesn't serve the 150K email goal; replaced by P2-3 lead-gen ad tracking.
Phase 3: Designer roster monitoring
- ☐ P3-1. Reconnaissance: each Tier A+B manufacturer's "Designers" / "Our Designers" / "Featured Designers" page URL.
- ☐ P3-2. Build
designer_roster_monitor.py— weekly snapshot of each roster. Diff vs prior week. Flag additions (new signings) and removals (departures). - ☐ P3-3. Write to
designer-rosters.jsonl(per-snapshot per-roster) +designer-changes.csv(only deltas).
Phase 4: Deliverables — TWO DECKS, NOT ONE
Reviewing the existing RBD_Marketing_Recap_May2026.pptx clarified the architecture: the existing monthly recap is RBD's internal performance reporting. Competitor intel should NOT replace it — it should:
- Enrich the monthly recap with competitive benchmark callouts (light touch)
- Live in its own quarterly deck for deeper competitive analysis (heavy lift)
Deliverable A: Monthly recap enrichment (light)
The existing RBD_Marketing_Recap_*.pptx template already has goal-tracking bars for IG/YouTube/Email. Inject competitor benchmark callouts next to each:
- IG goal "276K (beat Moda)" → add live "Moda current: 277K · MoM +0.2%" annotation
- YouTube goal "200K" → add "RBD vs #2 competitor (AGF 66.9K) — 116K lead maintained"
- FB "176,844 #1 in industry" → add "vs Moda 152.7K, AGF 105.5K — lead holding"
- Tactical content cadence callouts in "Coming Next Month" section (e.g. "Moda dropped 3 collections in May; Designer Collections pillar should respond")
Deliverable B: Quarterly competitive intel deck (heavy) Multi-slide PPTX, pillar-organized:
- Cover + Executive Summary (3 goals progress vs competitors)
- One slide per strategic pillar (Batiks, Confetti Cottons, Designer Collections, Machine Embroidery, People Behind RBD, Apparel Fabric) — RBD position vs relevant competitors in that pillar
- Channel-level competitive landscape (Meta ad activity, YouTube cadence, Pinterest pin volume)
- Designer pipeline competitive intel
- Trade/industry section (Quilt Market + press, manual-intel-driven)
- Recommendations slide (Claude-drafted, Cole-edited)
Tasks:
- ☐ P4-1. Extract design system from
RBD_Marketing_Recap_May2026.pptx— colors, fonts, layouts, RBD bird logo — into a brand asset bundle Cole can reuse. - ☐ P4-2. Build
monthly_recap_enricher.py— reads competitor data, generates the 4 competitive callout blocks for the monthly recap template. Cole copies into the recap manually for now (no auto-injection — template too custom). - ☐ P4-3. Build
quarterly_deck_generator.py— usespptxskill to produce Deliverable B from scratch each quarter. Pillar-organized structure. - ☐ P4-4. Build
quarterly_analysis_engine.py— reads all CSVs/JSONLs, computes the pillar-level competitive analysis, identifies "movers" per pillar. - ☐ P4-5. First quarterly deck: Q3 2026 (covers Jul–Sep). Generate early October. Cole + Kelly review.
- ☐ P4-6. Schedule: monthly recap enricher fires on 1st of each month (Cole gets Mission Control task with the 4 callout blocks ready to paste). Quarterly deck fires 1st of Jan/Apr/Jul/Oct.
Phase 5: Hybrid manual intel (trade + press + Quilt Market)
These signals can't be fully automated. Build the workflow:
- ☐ P5-1. Create
data/competitor-intel/manual-intel/YYYY-MM.mdtemplate — sections for trade press, Quilt Market (May/Oct only), dealer programs, other. - ☐ P5-2. Monthly Mission Control task: "Claude-assisted competitor intel scan for {month}" — Claude does WebSearch across Quilts Inc, designer LinkedIn announcements, industry blogs; writes findings into the manual-intel markdown.
- ☐ P5-3. Deck generator reads manual-intel markdown for the month and incorporates into the "Trade/Industry" section.
Phase 6: Cole's personal alerting layer (parallel, not for team)
- ☐ P6-1. Extend
competitive_scan_alerter.pyto fire Mission Control tasks on: new collection launches (P1), new designer signings (P3), Meta ad spend spikes (P2). Goes to Cole only. - ☐ P6-2. Tune alert thresholds with Cole after 4 weeks of data.
Acceptance Criteria
Must Have
- ☐ Monthly deck (PPTX) generated automatically, covering all four dimensions (launches, designers, consumer marketing, trade/industry)
- ☐ Deck is presentation-ready — RBD marketing team can present it without Cole rebuilding any slides
- ☐ All Tier A manufacturer data captured weekly with <5% missing data over a 4-week window
- ☐ MoM and QoQ comparisons present in every dimension where data history allows
- ☐ No fabricated numbers — failed sources show "N/A" with explanation
- ☐ Cole gets Mission Control alerts on material moves (so he's not blindsided by the team mentioning something he didn't know)
Should Have
- ☐ Designer signing detection works for at least Tier A (some manufacturers may not list designers publicly)
- ☐ Trade/industry section enriched via Claude-assisted monthly scan
- ☐ Deck template iterated with marketing team feedback after 2 monthly cycles
Nice to Have
- ☐ YoY comparisons (requires 12 months of data — earliest available July 2027)
- ☐ Self-serve Sheet for team members who want to drill in (only if requested)
- ☐ Quarterly executive summary deck (lighter, higher-level)
Verification Steps
- Each new collector ships with
--dry-runmode; verify schema before enabling LaunchAgent. - Run monthly_analysis_engine in isolation against existing data; sanity-check MoM math.
- First deck (June 2026 data, generated early July) reviewed by Cole + at least one RBD marketing team member before scheduling automation.
- Run through
~/ai-projects-local/mission-control/checklists/report-verification-checklist.mdfor the first 3 monthly decks.
Decision Rights
| Decision | Who | When |
|---|---|---|
| Final competitor set (Tier A/B/C) | Cole | Phase 1 kickoff |
| Deck template design + sections | Cole + (eventually) RBD marketing lead | Phase 4-1 |
| What constitutes "material move" worth alerting Cole | Claude (default), Cole tunes | Phase 6-2 |
| When data quality is good enough to share with the team | Cole | Phase 4-4 (first review) |
| Adding paid Tier 2 sources ($30–150/mo) | Cole | After 2 monthly cycles |
| Tier C demotion to monthly cadence | Claude (proposes based on signal-to-noise) | Phase 1 retrospective |
Open Questions Still Outstanding
~~1. Existing RBD digital marketing plan doc~~ — RESOLVED. Read 2026-06-01. Key findings folded into "Strategic Anchors" section below.
~~2. Marketing team contact~~ — RESOLVED. Kelly Morris. Memory saved at [[rbd-marketing-contacts]].
~~3. Existing deck design system~~ — RESOLVED. No RBD brand template; building our own using the visual system from the existing RBD_Marketing_Recap_May2026.pptx (navy + salmon-pink palette, RBD bird logo, clean serif/sans typography) as the starting point.
Strategic Anchors (from 2026 Digital Marketing Strategy)
This deck must ladder up to the three explicit competitive benchmarks RBD is actively tracking:
- YouTube: 200K subscribers goal (current: 183K → need +17K)
- Email list: 150K consumer subscribers goal
- Beat Moda on Instagram — Moda currently 277K, RBD 232K (gap: 45K)
Every competitive section in the deck should answer: "are we on track to hit one of these three goals, and what are competitors doing that could accelerate or threaten that?"
Six Strategic Pillars — the deck's competitive lens should be organized by these where data permits:
- Batiks (Moda Bali batiks = competitive set)
- Confetti Cottons (Kona by Robert Kaufman = #1 competitor; Bella by Moda)
- Designer Collections — RBD's stated moat ("this is what makes Riley Blake special")
- Machine Embroidery (lighter coverage — niche, ROI questionable per strategy)
- People Behind RBD (humans/UGC focus)
- Apparel Fabric (NEW for 2026 — growth frontier, who else is competing here?)
Marketing channel benchmarks (where competitor data should pair with RBD spend):
- Meta Ads ($40K/yr) — top priority, need active ad creative tracking on Moda + AGF
- YouTube ($30K/yr) — RBD already leads in subs, need to maintain
- Google Ads ($23K/yr) — brand terms only, less competitive intel needed
- Pinterest ($3.5K/yr) — awareness, light coverage
Execution Log
2026-06-01 10:35
Plan created. Phase 0 cleanup already done today: fixed stale iCloud path in alerter; updated v5 collector; merged today's 14 rows into historical CSV; alerter ran successfully (flagged Art Gallery FB +2.3%, RJR IG −2.2% MoM).
2026-06-01 10:45 — B-1 complete (retained from old plan)
Created data/competitor-intel/ directory. Moved tracker CSV → follower-counts.csv. Updated 7 scripts to point at new canonical location. Backup of pre-merge CSV at data/competitor-intel/follower-counts.csv.bak-2026-06-01.
2026-06-01 11:35 — B-2 SHIPPED (retained from old plan)
youtube_deep_collector.py shipped end-to-end. YouTube API key generated by Cole, encrypted into all 3 secrets files. 9/9 brands collected (after fixing FreeSpirit channel ID UCm5iIA_v2fXoAu5f8OxAXOQ). Dedup-on-(date,brand) safeguard added.
First-run findings:
- RBD dominates fabric YouTube (183K subs vs Moda 43.9K, AGF 66.9K)
- Tier C channels are dormant (Andover, Wilmington, Northcott, Maywood — last uploads 6+ months ago)
- Active competition concentrated in RBD + AGF + Moda
2026-06-01 11:50 — SCOPE PIVOT (B-3 cancelled, retailer-pricing scope rejected)
RBD is a wholesaler. Retailer pricing intel doesn't apply. Saved [[rbd-wholesale-competitive-set]] memory.
2026-06-01 12:10 — FULL PLAN REWRITE (this revision)
Discovery questions answered:
- Consumer: RBD marketing team
- Dimensions: all four (launches, designers, consumer marketing, trade)
- Driver: RBD 2026 digital marketing plan rollout
- Delivery: monthly/quarterly PPTX deck
Architecture inverted: weekly collection + monthly deck delivery. Six phases now. Awaiting Cole sign-off before executing Phase 1.
2026-06-01 13:50 — DASHBOARD INTEGRATION
Added /competitor-intel page to Mission Control dashboard (localhost:5050/competitor-intel):
- Lists all available callout months with tab switcher
- Renders the markdown with proper styling (matches existing dark theme)
- Per-month links to raw
.mdand.jsonfor copy/paste - Added nav link in sidebar (Operations section, under System Health)
- Auto-discovers new months — no code change needed when July callouts land
Dashboard service runs with debug=False, so file changes don't auto-reload — launchctl kickstart -k gui/$(id -u)/com.missioncontrol.dashboard to restart.
2026-06-01 13:20 — PHASE 0 AUTOMATED + LABELING FIX
- Created
~/bin/cron-monthly-recap-enricher.shwrapper (chains YT collector + enricher) - Created
~/Library/LaunchAgents/com.rileyblake.monthlyrecapenricher.plist— fires 1st of month at 3pm + 6pm backup - Loaded into launchctl; verified registered (state: idle, will fire next on July 1)
- Fixed labeling semantics: previously the file
2026-06.mdcovered May's growth (confusing). Now2026-05.mdis "May 2026 recap callouts" covering May's growth (May 1 → June 1). The growth-month-as-label convention matches AA's recap naming. - Default behavior: auto-selects previous calendar month (today June 1 → produces May 2026 callouts)
2026-06-01 13:00 — PHASE 0 SHIPPED
Built monthly_recap_enricher.py. Generates 4 competitive callout blocks from existing data:
- IG vs Moda gap & trend (with projection to "beat Moda" goal)
- YouTube competitive position + cadence comparison + top RBD video
- Facebook #1 lead vs runner-up
- Notable competitor movements across all platforms
Outputs at reports/competitor-intel/monthly-callouts/{YYYY-MM}.{md,json}.
Ran for both May 2026 and June 2026. Real signal surfaced:
- May 2026: Moda gained 1K on RBD (gap widened to 46K) · AGF jumped +5,374 on FB (+5.5%) — the standout May story
- June 2026: Moda dropped 2K, RBD dropped 1K — gap technically closing (-1K) but for the wrong reasons; "3+ years at current rate" is the honest projection if these trends hold
- YouTube: RBD 11 uploads/30d vs Moda 9, AGF 6, FreeSpirit 1 — RBD's cadence lead is the moat
- FB: RBD #1 confirmed, but Moda outgrew RBD by 201 in May (gap compression starting)
Deduped youtube-videos.jsonl (186 → 166 records) — smoke-test runs had created duplicates.
2026-06-01 12:45 — OPUS CRITIC PASS + REVISIONS
Spawned Opus critic agent. Verdict: ship with changes — three structural problems identified. Cole accepted top recommendations:
- Phase sequencing flipped — recap enricher moved to NEW Phase 0 (ship this week), scraper infrastructure deferred behind it. Validates the deliverable format with AA's existing recap workflow before committing months to scrapers.
- Workflow confirmed: Alpine Analytica owns monthly recap production (not Kelly's team). So enricher output flows naturally into AA's process; no handoff risk to external team.
- Validation cadence: Use May 2026 data internally first, ship to Kelly with finalized June recap in July.
- Email intel rescoped: Dropped Milled subject-line scraping (busy-work, doesn't serve 150K email goal). Added lead-gen ad tracking from Meta Ad Library (Phase 2-3) — actionable for Kelly's email acquisition push.
- Quarterly deck gated on Kelly's July feedback — don't build infrastructure for unconfirmed demand.
Deferred from critic recommendations:
- Retailer pull-through signal (when FQS/MSQC tag manufacturers in IG) — clever but requires IG tagging data, expensive; Tier 2.
Critic also flagged scrape feasibility risks on Moda/AGF sites — will be hard-gated by Phase 1 reconnaissance before committing collection-monitor architecture.
2026-06-01 12:30 — STRATEGY ALIGNMENT PASS
Read rbd-2026-digital-marketing-strategy.pdf (Feb 2026) + RBD_Marketing_Recap_May2026.pdf (current monthly format).
Key revelations:
- Three explicit goals to anchor the deck to: 200K YouTube subs, 150K email subs, beat Moda on IG (current Moda: 277K, RBD: 232K)
- Six strategic pillars structure the competitive lens: Batiks, Confetti Cottons, Designer Collections, Machine Embroidery, People Behind RBD, Apparel Fabric
- Existing monthly recap is a one-pager template — competitor intel should ENRICH it, not replace it
- Two deliverables, not one: - Monthly: light competitive callouts inserted into existing recap - Quarterly: full pillar-organized deck
Updated Phase 4 to reflect two-deck architecture. Kelly Morris confirmed as primary stakeholder.
Pending Cole sign-off: ready to start Phase 1 (collection_launch_monitor.py).
Lessons Learned (will fill after completion)
References
- Existing data:
~/ai-projects-local/mission-control/data/competitor-intel/ - Existing scripts:
~/ai-projects-local/mission-control/scripts/{social_media_collector_v5,competitive_scan_alerter,youtube_deep_collector,competitor_ad_tracker}.py - Related strategic docs:
~/ai-projects/Riley-Blake-Designs/Marketing-Reports-2026/rbd-2026-digital-marketing-strategy.pdf~/ai-projects/Riley-Blake-Designs/Marketing-Reports-2026/rbd-2026-budget-allocation.pdf~/ai-projects/Riley-Blake-Designs/Marketing-Reports-2026/quilting-fabric-social-competitive-landscape.md- Memory: [[rbd-wholesale-competitive-set]], [[rbd-ads-platforms]]
- External sources:
- YouTube Data API v3 (✅ configured)
- Meta Ad Library API (token to renew)
- Google Ad Transparency Center (https://adstransparency.google.com/)
- Milled email archive (https://milled.com/)
- Skills used:
pptxfor deck generation,frontend_slidesif HTML variant ever needed
~/ai-projects/mission-control/plans/competitor-intel-pipeline.md