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 — 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:
- 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.
- 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
latestCompanyis misleading, this playbook is the override. - 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.
- 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:
- Speaker page is live and complete.
/speakers/<slug>/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. - Speaker appears on the event page. Their card is in
/europe/<year>or/usa/<year>under the "Confirmed speakers" grid, with the same headshot. - LinkedIn announcement asset. A 1200×630 share card (their photo + SaaStock pink "Speaking at SaaStock" lockup) lives at
/speakers/<slug>/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/<slug>/ page they can quote-tweet/repost. - 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.
- 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/<slug>/ page and vice-versa — the sponsor block carries a "Hear from <Name> 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/<year>/gallery/photos/ | MediaOps |
| Full talk video | Video team | YouTube, linked from registry | SpeakerOps |
| Quote (90 char) | Editorial | /recordings/?event=<slug> | SpeakerOps |
| LinkedIn clip | Social team | /agents/speakerops/data/clips/ | SpeakerOps |
The video team's deliverable is named <eventSlug>_<speaker-slug>.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:
- YouTube uploads. Every featured-speaker talk uploaded to the SaaStock YouTube channel, then added to
saastock-youtube-master.xlsx(SearchOps data asset). Re-runscripts/generate_speaker_registry.pyso the YouTube ID flows intoregistry.ts→ speaker page → /recordings/ hub automatically. - Featured-recordings refresh.
/recordings/?event=<slug>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. - 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.
- 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/<year>or/usa/<year>.
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.
- Page-level SEO/AEO conventions on /speakers/<slug>/. That's 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.
