# SaaStock — SpeakerOps Playbook The single reference for **which speakers we feature on saastock.com**, **how we promote them before each event**, and **how we follow up with them after**. SpeakerOps owns the curated featured-speaker list shown on the home page and is the home for every speaker-facing playbook (pre-event launch, on-site, post-event amplification, sponsor cross-promotion, future-edition outreach). This playbook extends [SearchOps](/agents/searchops/) — SearchOps governs the whole site's SEO/AEO/GEO stack; SpeakerOps governs the human side of which speakers we put in front of buyers, and when. --- ## 1. Who we feature (the "biggest names" rule) The home page "operators on the SaaStock stage" section is a **curated** list, not an auto-rank. The selection criteria, in order: 1. **Name recognition for B2B SaaS founders and operators.** The reader's reaction should be "of course they spoke at SaaStock." Recognition is a stronger signal than appearance count — a one-time keynote from a $4B founder beats five repeat appearances from a mid-stage operator. 2. **Company they're most associated with.** We feature the company the audience knows them for, even if their current title is different (e.g. Manny Medina shows Paid today, but the recognition is from Outreach). Where the registry's `latestCompany` is misleading, this playbook is the override. 3. **Spread across roles.** The featured set must include all four lanes: **Founders / CEOs**, **AI operators** (founders building AI-native B2B SaaS), **Investors**, and **Media**. Don't over-index on any single lane. 4. **Living people, still active.** No retired or off-the-circuit names. The list is hand-maintained in `apps/web/app/home/top-speakers.ts` as a static array of slugs (`FEATURED_SLUGS`). The shape returned (`name`, `company`, `title`, `appearances`, etc.) is hydrated from the canonical `apps/web/app/speakers/registry.ts`. Update the slug list to add or remove a featured speaker. If a name belongs on the list but the slug doesn't exist in the registry yet, **add the speaker to the registry first** (re-run `scripts/generate_speaker_registry.py` or hand-add) — never wire a slug that 404s. The enriched master CSV (CEO name, LinkedIn, talk title, YouTube link, talk page) lives in the **Data assets** section below and is the source of truth for outreach. --- ## 2. Pre-event: get the speakers to market For every confirmed speaker (≥ 90 days before the event), ship: 1. **Speaker page is live and complete.** `/speakers//` must render with: photo (or initials avatar), bio, current title + firm, links to every past talk (with YouTube embed), and an "Upcoming appearance" block pointing at the new edition's page. Missing photos block the publish — chase one before announcing. 2. **Speaker appears on the event page.** Their card is in `/europe/` or `/usa/` under the "Confirmed speakers" grid, with the same headshot. 3. **LinkedIn announcement asset.** A 1200×630 share card (their photo + SaaStock pink "Speaking at SaaStock" lockup) lives at `/speakers//announce.png`. Sent to them as a Slack/email DM with three things: (a) the LinkedIn post draft, (b) the share image, (c) the link to their /speakers// page they can quote-tweet/repost. 4. **Outreach for content.** 60–90 days out, ask: "Do you have a recent talk / podcast / essay we can feature?" If yes, embed on the speaker page under "Recent work" and link from the event page card. 5. **Sponsor cross-promo (if applicable).** If the speaker's company is also a sponsor, the event page's Sponsors section links to the same /speakers// page and vice-versa — the sponsor block carries a "Hear from on stage →" CTA. --- ## 3. On-site: capture the assets we need Every featured speaker generates four assets during the event: | Asset | Captured by | Filed under | Promo job | |------------------|---------------|--------------------------------------|-------------| | Mainstage photo | Photo team | `/europe//gallery/photos/` | MediaOps | | Full talk video | Video team | YouTube, linked from registry | SpeakerOps | | Quote (90 char) | Editorial | `/recordings/?event=` | SpeakerOps | | LinkedIn clip | Social team | `/agents/speakerops/data/clips/` | SpeakerOps | The video team's deliverable is named `_.mp4`. The slug must match `speakers/registry.ts` so the post-event automation can wire the YouTube ID to the right speaker without manual lookup. --- ## 4. Post-event: amplify and re-engage Within **14 days** of the event closing: 1. **YouTube uploads.** Every featured-speaker talk uploaded to the SaaStock YouTube channel, then added to `saastock-youtube-master.xlsx` (SearchOps data asset). Re-run `scripts/generate_speaker_registry.py` so the YouTube ID flows into `registry.ts` → speaker page → /recordings/ hub automatically. 2. **Featured-recordings refresh.** `/recordings/?event=` and the event page's "Featured recordings" block (top 6 by view count) update on the next build. No manual edit needed — driven by the master XLSX. 3. **Personal thank-you with their clip.** Each featured speaker gets a Slack/email DM with: (a) their LinkedIn-ready 30–60s clip, (b) the YouTube link, (c) one-line stat ("Your talk has 240 attendees in the room and is the #3 most-replayed of the event"). They almost always repost. This is the highest-leverage outreach we do. 4. **Quote in the post-event recap.** Pull one quote per featured speaker into the post-event blog (`/blog/`) and the event recap section on `/europe/` or `/usa/`. After **30 days**, run the **re-invite pass**: any featured speaker whose post performed well becomes a target for the next edition's pre-event outreach (Section 2). Performance signal: ≥ 200 YouTube views in 30 days OR ≥ 5,000 LinkedIn impressions on their clip. --- ## 5. Outreach playbooks (when, how, what to say) | Trigger | Playbook | Owner | SLA | |----------------------------------------|-----------------------|-------------|--------------| | 90 days pre-event, confirmed | Section 2 — to market | SpeakerOps | Within 7 days | | Speaker page missing photo | Photo chase | Editorial | Block publish | | 14 days post-event, talk live | Section 4 — amplify | SpeakerOps | Within 14 days | | 30 days post-event, ≥ 200 views | Re-invite for next ed.| SpeakerOps | Within 30 days | | Sponsor speaker page mismatch | Cross-link audit | SearchOps | On change | Templates for each outreach motion (LinkedIn DM, email, Slack) live in the Data assets section below. --- ## 6. What this agent does NOT own - **The speaker registry itself.** That's generated from the YouTube master XLSX by `scripts/generate_speaker_registry.py` (owned by SearchOps). SpeakerOps reads from it. - **Photo and video file naming, formats, and gallery schema.** That's [MediaOps](/agents/mediaops/). - **Page-level SEO/AEO conventions on /speakers//.** That's [SearchOps](/agents/searchops/). If you're editing the home page section, edit `top-speakers.ts` (the slug list). If you're editing speaker bios or YouTube IDs, edit the registry. If you're changing how the section renders, edit `app/page.tsx` and update this playbook.