gtme-podcast

SkillDocs & knowledge

'Turns a GTM Engineer School podcast transcript into four artifacts bundled into one branded Notion page for review

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the gtme-podcast skill

What this skill tells your AI

The instructions your AI receives, as published by matteotitta/genesys-skills in skills/primitives/content/execution/gtme-podcast/SKILL.md and read by ahel’s review.

Research source (Exa)

Default: Exa, per .claude/rules/exa-protocol.md (auto-loaded for research, audit, competitor, ICP, AEO, content sourcing, sales prospecting work).

Primary Exa tools for this skill: web_search_exa, company_research_exa. Use case: pre-podcast guest + company research.

Citation: every Exa-derived claim uses [VERIFIED: exa_search, {url}, accessed {YYYY-MM-DD}] per .claude/rules/ontology.md. Quality gate: ≥3 sources per major claim, ≥50% [VERIFIED] confidence, date filter for any "recent / latest" claim, no fallback to WebSearch without flagging.


GTM Engineer School podcast

Turn a single podcast transcript into a complete amplification kit: the Substack post, Matteo's LinkedIn expert post, a guest-voice LinkedIn post (with a soft Cohort 4 CTA), and an outreach email bundling it all for the guest. Every quote traces verbatim to the transcript — no fabrication, no invented promo codes, no generic filler.


Doctrine inherited (Step 7 — 0626 rollout)

Output complies with:

Refinements applied to this skill:

CodeRefinementHow it lands in gtme-podcast
R1Source placement (three layers)Substack post + LinkedIn posts + guest email are end-customer-facing. No sources block. Transcript quotes appear inline with attribution to the guest — but no [VERIFIED:...] tags. Source transcript lives in working doc for QA only.
R3Product-update toneWhen the episode features GTME School cohort framing, frame as "Cohort 5 opens [date]" not "we are thrilled to announce Cohort 5." Per [[feedback_gtme_pulse_conventions]] cohort-naming rule.
R6CTA hierarchySubstack + LinkedIn posts → soft cohort enrollment as primary CTA, podcast subscribe as fallback. Guest email → reply-to-share primary, social-share as fallback. Cohort naming pulled from current cohort in [[feedback_gtme_pulse_conventions]].
R9Action-oriented section names"Why this episode matters / What [Guest] shipped / How to take [Guest's] approach further" — verb-led + entity-named.

Claude Code triggers

Invoke when user says:

  • "Write up episode S{N}E{M}" (e.g., "S2E1")
  • "GTME podcast Substack post"
  • "Podcast episode post"
  • "Create the episode kit"
  • "/gtme-podcast"
  • User pastes a podcast transcript and mentions GTM Engineer School

Do NOT invoke when:

  • User wants Pulse newsletter → use gtme-pulse
  • User wants raw transcript insights only → use transcript-analysis
  • User wants Matteo's expert post without the full episode kit → use linkedin-expert-posts directly
  • User wants a personal/story-style post → use linkedin-personal-posts

Input requirements

Required

InputDescriptionSource
TranscriptFull episode transcript text, file path, or YouTube URLUser provides
Season numberInteger (default 2 for current season)User provides or defaults
Episode numberInteger — episode-within-season, NOT cumulativeUser provides
Guest full namee.g., "Yash Tekriwal"User provides
Guest role + companye.g., "Head of Education, Clay"User provides
Guest LinkedIn URLUsed in Substack footer + emailUser provides

Episode numbering convention:

  • Season 1 used E{N} format on Substack (E1–E10, legacy).
  • Season 2+ uses S{S}E{E} format (S2E1, S2E2, …).
  • File naming ALWAYS uses s{S}e{E} (lowercase), e.g., s2e1.

Optional but strongly encouraged

InputHow it helps
episode_titleMain topic. If missing, derived from transcript themes.
guest_company_urlFor Substack footer "Where to find {guest}"
guest_emailRequired if user wants Gmail draft staged. Skip if email delivered as file only.
guest_promo_codeUnlocks secondary CTA in guest LinkedIn post AND partnership section in email. If missing → both omitted, skill flags omission.
spotify_url, youtube_url, apple_podcasts_urlPopulate email link block. If missing → _placeholder retained.
Release dateFor context line in email

Cohort-level config (auto-loaded)

The skill reads the premium reference for: cohort_name, cohort_url, student_discount, guest_commission, referral_dashboard_url. Update once per cohort — never pass per-episode.

Validation

Before proceeding: transcript provided (fetch via youtube-transcript MCP if URL); episode number provided; guest name + role + company + LinkedIn URL provided; cohort config loaded.

If guest_promo_code missing → ask: "No promo code passed — proceed without the Cohort 4 CTA? (yes / provide code / cancel)". Default to proceed without if user confirms.

If any required input missing → ask, don't invent.


Process flowchart

┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
│ INPUT │─▶│ PHASE 1│─▶│ PHASE │─▶│ PHASE 4│─▶│ PHASE 5│─▶│ PHASE 6│
│ VALID. │ │ INSIGHT│ │ 2–3 │ │ BUNDLE │ │ NOTION │ │ SUMMARY│
│ │ │ ANALYS.│ │ 4 ASSTS│ │ ASSEMB.│ │ PUSH │ │ TO USER│
└────────┘ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘
                                                     │
                                                     ▼
                                              Notion page URL
                                              (last mile — mandatory)

Process

The episode kit runs in 6 phases. Read the premium reference for the full step-by-step.

Phase summary:

  1. Phase 1 — Transcript analysis. Delegate to transcript-analysis; save SCQA insights with verbatim quotes + timestamps to insights.md (audit trail).
  2. Phase 2 — Substack post. 11-section structure following substack-template.md. 4 takeaways, 4 verbatim blockquotes, 15–20 timestamps, both co-hosts in footer.
  3. Phase 3a — Host LinkedIn post. Chain into linkedin-expert-posts with the most opinion-worthy POV from the episode + 2–3 verbatim quotes as proof.
  4. Phase 3b — Guest LinkedIn post (inline). Match the guest's voice (NOT Matteo's). Always marked [DRAFT — edit freely]. Conditional Cohort 4 P.S. iff guest_promo_code provided.
  5. Phase 3c — Guest outreach email. Specific-takeaway opener; 🎧 listen / 🧵 host posts / ✏️ embedded guest draft / 💸 conditional partnership block / closing.
  6. Phase 4 — Bundle assembly. Concatenate all 4 artifacts with ═══ SECTION N ═══ dividers into one bundle.md.
  7. Phase 5 — Notion push (mandatory). Resolve the GTME School podcast parent page via notion-search, then notion-create-pages with the bundle as body. Append the Notion sync-back manifest line (<!-- notion: pageId=... url=... published=... last_pulled=... -->) to the local bundle.md per .claude/rules/notion-protocol.md.
  8. Phase 6 — Delivery summary. Notion page URL + local file paths + promo-code status + unfilled placeholder warnings + next actions.

The Iron Law (inherited from transcript-analysis + extended)

  1. Every quote traces to transcript. Substack blockquotes, guest LinkedIn paraphrases, email takeaway line — all traceable.
  2. Core Takeaways reference specific SCQA insights from Phase 1. No invented takeaways.
  3. Guest bio facts marked inferred if sourced from WebSearch, not user input.
  4. Tools list contains only tools named in transcript. No "probably mentioned".
  5. Chapter descriptions correspond to transcript ranges. Rewritten for scannability, not fabricated.
  6. Guest LinkedIn post must not put words in their mouth. Always marked [DRAFT — edit freely before publishing].
  7. Guest email's specific-takeaway line references a real transcript moment. No generic filler.
  8. Never invent a promo code, discount, commission, or cohort URL. If guest_promo_code missing → omit both CTA blocks cleanly and flag in delivery summary. Routing real student signups to a fabricated code is a revenue-integrity failure.

Red flags (stop and verify)

🚩 About to write a Substack quote without a transcript match → STOP. Pull from insights.md verbatim.

🚩 About to render {guest_promo_code} as a literal string → STOP. Either a real code was passed, or the CTA block is absent entirely.

🚩 About to send / auto-stage email without URL placeholders filled → STOP. Always save as draft / file; Matteo fills URLs before sending.

🚩 About to omit Jared from the Substack "Where to Connect" footer → STOP. Template requires both co-hosts.

🚩 About to write the guest LinkedIn post with arrows, em-dash section setups, or Matteo's catchphrases → STOP. Voice must be the guest's, not Matteo's.


Anti-hallucination guardrails

  1. No invented promo codes, discounts, or commission rates.
  2. No invented URLs — placeholders stay as _placeholder strings until filled.
  3. No invented guest bio details — if guest input is thin, use WebSearch but mark inferred fields.
  4. No paraphrased "quotes" — if a blockquote appears, it's verbatim from transcript.
  5. No fabricated tool mentions — category rows skipped if no tools in that category were named.
  6. No attributing specific statements to the guest in the guest LinkedIn post unless they said it on the pod.

Quality

Per-artifact pre-delivery checklist (Substack / host LI / guest LI / guest email / all artifacts / bundle+GDoc): the premium reference.


Gotchas

  • Both hosts in the footer. The Substack template lists Jared Waxman AND Matteo Tittarelli as co-founders. Missing Jared is an obvious error — always verify against e8-reference.md.
  • Quotes have no attribution. E8/E10 both show clean blockquotes with no — Guest, [MM:SS] suffix. Attribution lives in insights.md, not the published Substack post.
  • Promo code is conditional, not defaulted. Missing code → both CTAs omitted cleanly. Do NOT fall back to a house code.
  • Cohort 4 has no referral dashboard yet. The Track signups: line in the email is omitted until cohort-config.md gets that URL.
  • Guest LinkedIn post uses guest voice, not Matteo. Single most common failure mode — read aloud and verify.
  • URL placeholders stay as placeholders. The Substack post isn't published when the email is drafted. Matteo swaps URLs after publishing.
  • Notion push is not optional. The delivery is the Notion page (changed from GDoc 2026-05-25). If push fails, surface the error — don't silently fall back to "here are the local files". The local bundle.md must carry a <!-- notion: pageId=... --> manifest line after a successful push so the ambient sync-back engine can pull edits back.
  • File naming is s{S}e{E}, not e{N}. Legacy e{N} was Season 1 only. Current and future episodes use s2e1, s2e2, etc. Mismatches break sort order.

Integration with other skills

SkillRelationshipUsage
transcript-analysisdepends_on (Phase 1)Extract SCQA insights + verbatim quotes
linkedin-expert-postsdepends_on (Phase 3a)Generate Matteo's LinkedIn post
gtme-pulseSiblingBoth publish to GTM Engineer School Substack. Share voice + footer conventions
voice-reviewervalidatesOptional gate before delivery — run on Substack + host LI
notion (MCP)feeds_intoMandatory Phase 5 — push bundle to branded Notion page under the GTME School podcast parent (changed from create-gdrive 2026-05-25; see .claude/rules/notion-protocol.md)

File locations (reference)

FilePurpose
the premium referenceFull 6-phase step-by-step
the premium referencePer-artifact pre-delivery checklist
the premium referenceCurrent cohort values — update per cohort
the premium referenceSubstack post template with placeholders
the premium referenceGuest-voice post template + voice calibration
the premium referenceOutreach email template + conditional rendering
the premium referenceGold-standard filled example (E8 — Nico Druelle, Season 1 legacy format)
the premium referenceOne-doc-all-assets layout for the Notion push (Phase 4 + 5)

Final ship gate

Run /premortem --output before ship. See /premortem skill for the 5 execution domains (will-it-resonate / will-it-convert / will-it-stay-on-brand / will-stakeholder-push-back / will-it-degrade-over-time) and output template.

Trivial-case escape: ## Premortem\nNo failure modes — trivial change satisfies the contract for genuinely trivial outputs.


Persuasion & stickiness pass

Output complies with persuasion-and-stickiness.md — Cialdini's 7 persuasion levers + Heath's SUCCESs. Deploy the 1-2 Cialdini levers that fit the reader's barrier (never all seven; every lever must be TRUE), run the SUCCESs diagnostic (Simple / Unexpected / Concrete / Credible / Emotional / Stories) over the near-final draft, then the rule's pre-ship gate.


Signals

GitHub stars
36
Forks
14
Last commit
Jul 2026
Advanced
Catalog kind
skill
Gateway key
gtme-podcast
Source
github.com/matteotitta/genesys-skills