Content Operating System
Full stack: ideation → ranking → production → distribution. Every carousel and reel produced by this system. Every lead generated by the funnel below it.
System Overview
batch_runner.py, produces the reels. System handles everything else.Content Pillars
Every carousel and reel must map to one of three pillars. P2 gets the highest ranking priority — most direct revenue signal.
Proof Points (rotate across pillars)
| Client | Result | Best for |
|---|---|---|
| Riley | 47x ROI | P2 lead capture stories |
| Ashley | $717K closed revenue | P1 authority building |
| Valerie | $676K + 300+ appts / 90 days | P2 volume stories |
| Thrasher Crawl Space | $360K quarter | P3 data / scale stories |
| TWF | $45K in 30 days from Messenger alone | P2 speed stories |
Topics Bank
Single source of truth for all carousel and reel topics. 48 rows, versioned and scored.
File: Projects/StPierre/carousel-production/topics_bank.csv
| Column | Purpose | Values |
|---|---|---|
id | Unique topic ID | 1–48 |
pillar_code | Maps to P1/P2/P3 | P1, P2, P3 |
topic | Full topic string fed to generator | — |
hook_angle | Default hook framing | Platform reveal, Data reveal, etc. |
featured_result | Proof point to anchor the carousel | Riley 47x ROI, Ashley $717K, etc. |
keyword | ManyChat comment trigger (ALL CAPS) | AICAROUSEL, MESSENGER, etc. |
niche | Target niche for this topic | crawl space, waterproofing, both |
status | Lifecycle stage | pending, done, winner |
score | Ranker output (max 14 before multiplier) | Float |
ranking_notes | Score breakdown per dimension | proof=2|pillar=3|brain=1|age=1 |
Weekly Ranker
Scores all pending topics across 6 dimensions. Writes scores back to CSV. Returns top 10 + reserve 5 with diversity cap.
File: ranker.py · Run: python ranker.py or auto via weekly_brief.py
Scoring Dimensions (max 14 before multiplier)
| Dimension | Points | Logic |
|---|---|---|
| Proof strength | +2 | featured_result contains real $, %, or x figure |
| Pillar priority | P2=+3, P1/P3=+2 | P2 highest — most direct revenue signal |
| Brain match | >0.75 sim=+3 · >0.5=+1 | Semantic search vs video_notes — content you've studied |
| Winner multiplier | ×2 | Applied to entire score if status = 'winner' |
| Age bonus | +1 | Pending > 14 days without being ranked |
| Recency penalty | −2 | Same pillar produced in last 7 days |
Diversity Cap
Max 2 topics per pillar in the top 10. Prevents the brief from being dominated by a single pillar.
python ranker.py --dry-run to preview scores without writing to CSV. Brain semantic search is skipped in dry-run (fast mode).Content Standard — Agent KB
The binding knowledge base for all SP AI content generation. Every piece of content — reel, carousel, YouTube video — must conform to this standard.
The Rule of One
| Dimension | Answer |
|---|---|
| Avatar | Foundation repair + basement/crawl space waterproofing contractors — $1M+/yr |
| Problem | Inconsistent months — caused by demand capture marketing fighting over the finite 3% already price shopping |
| Solution | Demand generation — short-form video reaching the other 97% before they start shopping. Pre-qualified appointments. Pay per result. |
| Funnel | Organic only: IG Reel → YouTube ↔ Call Funnel |
| Focus | 1 year. Dominate organic social (FB/IG + YouTube). |
Core Positioning: Demand Gen vs. Demand Capture
This is the intellectual foundation of all content. Every pillar, hook, and case study connects back to this.
- Google, Angi, Thumbtack, HomeAdvisor, dealer networks
- Everyone fishing in the same pond — the 3% already price shopping
- Same lead sold to 4–5 contractors
- Finite pool, price wars, race to the bottom
- Dealer networks: high % fees, non-competes, can't touch your own site
- Short-form video in exact neighborhoods — before homeowners start searching
- Goes after the other 97% — effectively infinite pool
- Homeowner reaches out first, to you only
- Instant response → qualification → pre-qualified appointment
- Contractor stops competing and starts being chosen
Brand Voice — The Systems Consultant
What Akash is: A consultant who builds the marketing stack, data stack, tech stack, and sales infrastructure to grow contractor revenue predictably. Not a contractor who ran a foundation repair business. Lane: better leads, better systems, better data — not hiring/managing reps.
| Element | Rule |
|---|---|
| Tone | Casual, slightly profane, self-deprecating but authoritative. Reports findings from 150+ contractors. |
| Key phrases | "Inconsistent months" · "The 3% trap" · "Demand capture vs. demand generation" · "Quote-to-job gap" · "Pre-qualified appointments" |
| Address audience as | "Brother" or "Man" — never "Hey guys" or "folks" |
| Never | Open with "Hey" · Close with a hard CTA or engagement beg · Sound like a LinkedIn post · Over-explain |
| Angus Sewell formula | [Audience ID: "You might be like me where you..."] + [Credibility: "I manage ads for 150+ foundation repair businesses..."] + [Insight] + [Story] + [Casual close] |
The 9-Pillar Framework (3 Parents × 3 Sub-Pillars)
Every piece of content maps to one parent pillar and one sub-pillar. All pillars tie back to demand gen vs. demand capture.
Better Leads
| # | Sub-Pillar | What It Covers |
|---|---|---|
| 1 | AI Content | Short-form video formats, conversation campaigns, green screen system, carousel format, creating content that reaches the 97% |
| 2 | AI Inbox | Chatbot setup, qualification logic (project → zip → phone → urgency), filtering tire-kickers before the sales team |
| 3 | AI Targeting | FB page/campaign setup, Super Pixel, retargeting the 97%, $30–$50 CPL benchmarks, connecting data to Meta |
Better Systems
| # | Sub-Pillar | What It Covers |
|---|---|---|
| 4 | Speed-to-Lead | Instant response as #1 close-rate lever; what happens at >5 min; shared lead disadvantage |
| 5 | Pre-Appointment | Building trust before the rep shows up; confirmation sequences; authority content post-booking |
| 6 | Post-Appointment | Closing the quote-to-job gap; dead lead reactivation; follow-up automation |
Better Data
| # | Sub-Pillar | What It Covers |
|---|---|---|
| 7 | Dashboards | Managing by data not gut feel; true cost per booked job (not CPL); one-dashboard ROI view |
| 8 | Algorithmic Loop | Feeding closed-won sales data back to Meta via CAPI; training the algorithm on job value not lead volume |
| 9 | Backend Infra | Postgres/N8N as the digital foundation; Super Pixel data moat; proprietary audience across 10K+ appointments |
The Offer
| Tier | Price | What You Get | Guarantee |
|---|---|---|---|
| Main offer | $7,500 upfront | 50 leads / 6 weeks | 5 jobs or money back |
| Downsell | $4,500 upfront | 30 leads / 6 weeks | Lead delivery only |
| Ongoing | $150/lead, week-to-week | Client sets weekly volume | — |
| Metric | Number | How |
|---|---|---|
| Leads delivered | 50 | $7,500 ÷ $150/lead |
| Booked quotes (75%) | 37.5 | 50 × 75% |
| Closed jobs (15%) | 5.6 | 37.5 × 15% — guarantee covered ✓ |
| CAC | $1,500 | $7,500 ÷ 5 jobs |
| Avg job / GP @ 50% | $9,000 / $4,500 | Foundation repair / waterproofing |
| LTGP / CAC | 3x | $4,500 ÷ $1,500 |
Niche guarantees: Crawl space encapsulation / Foundation repair / Basement waterproofing = 10 new jobs in 90 days.
Exclusivity: One contractor per area. Working with you locks out your competitor.
Case Studies — Always Pair Number with Mechanism
| Client | Result | ROI | Mechanism |
|---|---|---|---|
| Riley — Custom Concrete Curb | $650K+ on <$14K spend | 47x | Demand gen + quote-to-job gap closed with AI follow-up |
| Ashley — Vesta Foundation Solutions | $717K / 12 months | 15x | AI inbox + one dashboard tracking every channel to booked job |
| Valerie — Redeemers Group | $676K / 12 months | 15x | 80% dead leads → 80% qualified via AI inbox reactivation |
| Thrasher Foundation Repair | $360K / 6 months | — | Authority content + automated lead transfer |
| TWF Construction (Virginia) | $45K / first 30 days | — | Owner never opened ChatGPT — full system ran without him |
| Fleet total | $14M+ | — | 150+ contractors · 10K+ appointments · Same system, different markets |
Weekly Brief (Auto-generated)
Every Monday at 9pm ET, weekly_brief.py scores the top 10 topics and posts to Slack #akash-notes with hook angles, contrarian takes, and Slide 1 drafts. Pick 3–5 topics, run batch_runner.py.
Carousel System
8-slide Instagram carousel. 1080×1350px portrait. Green screen zone lower 35% for talking head. Text/visuals upper 65%.
Generator: generator.py --topic-id N · Batch: batch_runner.py --topic-ids 1 5 12
8-Slide Structure (strict — do not deviate)
Copy Rules
- Headline: max 7 words, punchy
- Body: max 2 sentences, conversational
- Every slide has one visual prompt (Higgsfield / AI image gen)
- Every slide has one voiceover cue (spoken tone)
- CTA keyword = ALL CAPS (feeds ManyChat trigger)
- No corporate speak, no hedging, no "just wanted to check in"
- No AI-zesty enthusiasm or filler warmth
Generator Output
JSON file in outputs/<id>_<slug>.json — includes slides array, caption, hashtags, production notes. Status auto-updated to done in topics_bank.csv after generation.
Reel Format — @angus.sewell Model
Canonical video style for all St. Pierre AI reels. No exceptions. If it reads like LinkedIn, rewrite it.
Format Spec
Never Do
- Start with "Hey guys"
- End with "smash that like button" or any engagement beg
- Use music or b-roll (pure talking head only)
- Over-explain — trust the audience to keep up
- Sound scripted — read aloud test mandatory
Infrastructure
--topic-ids 1 5 12 after picking from the brief. Processes in sequence.AI Models Used
| Task | Model | Why |
|---|---|---|
| Carousel copy (8 slides) | GPT-4o | Full context, best instruction-following for structured JSON |
| Brief enrichment (hook / contrarian / slide 1) | GPT-4o-mini | Fast, cheap — 30–120 token outputs per call |
| Brain pattern matching | pgvector | Semantic search over brain.video_notes |
brain.video_notes — Knowledge Base
Transcripts and summaries from manually-submitted YouTube videos feed the ranker's brain match score. Richer brain = more differentiated topic scoring. Add new videos via youtube-summarizer skill in Claude.
Distribution Funnel
Every carousel and reel feeds this funnel. The CTA on every Slide 8 drives a comment. ManyChat handles the rest.
Content → Revenue Timeline
| Phase | Weeks | Focus | Expected closes |
|---|---|---|---|
| Warming | W20–W25 | Content streak, brand building, warm DM convos | 0 — funnel not warm yet |
| Pipeline seeding | W25–W28 | First qualified leads in DM pipeline | 1–2 prospects |
| First closes | W26+ | Akash closes from warm pipeline | 1–2 closes/mo target |
| 5 clients | By W52 | Compound — each client = case study = more proof | 5 by Dec 1, 2026 |
Weekly Cadence
| Day | Content Action | System Action |
|---|---|---|
| Mon (Creative day) | Review brief, pick 3–5 topics, plan week's reels | Weekly brief auto-posts to #akash-notes at 9pm |
| Tue | Run batch_runner, review carousel JSON outputs | Ranker scores written to topics_bank.csv |
| Wed–Thu | Film reels (green screen or selfie cam) | — |
| Fri | Edit + schedule posts. Set ManyChat keywords. | — |
| Daily | Reply to warm DMs, move convos toward call | — |
| Thu (auto) | Drop YouTube links for transcript ingestion | yt_discovery scheduled (disabled — manual only) |
Content KPIs
What "Working" Looks Like
- Monday brief in Slack every week without fail
- 3–5 carousel JSONs generated per week
- Every post has a keyword CTA → ManyChat wired
- At least 1 new video ingested to brain.video_notes per week
- Warm DM convos increasing week-over-week by W24
- Producing content without a ManyChat keyword wired (no conversion path)
- Going off-pillar (P1/P2/P3 only — no lifestyle, no EyeFly ops content)
- Skipping the brief — manual topic selection defeats the ranker system