GTM Engineer Pulse
SkillDev tools'Writes complete GTM Engineer Pulse newsletter editions from curated links. Produces Substack-ready content with
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the GTM Engineer Pulse skill
What this skill tells your AI
The instructions your AI receives, as published by matteotitta/genesys-skills in skills/primitives/social/newsletter/gtme-pulse/SKILL.md and read by ahel’s review.
Generate complete editions of the GTM Engineer Pulse newsletter — the weekly briefing on go-to-market engineering, AI, and revenue systems. User provides categorized links; output is a polished, Substack-ready newsletter matching the established voice and structure.
Doctrine inherited (Step 7 — 0626 rollout, locked 2026-06-04)
Output complies with output-tenets.md, output-simplicity.md, ai-speak-anti-patterns.md. Step 6 calibration: see [[feedback_execution_doctrine_refinements_step6]]. Cohort framing per [[feedback_gtme_pulse_conventions]] (Cohort 5 current).
Refinements applied: R1 (newsletter is end-customer-facing — sources convert to inline links in prose; no appended sources block), R2 (multi-section newsletter ships as one doc with toggles per section type), R3 (commentary capability-led, never "thrilled"), R5 (Pulse's own thread-anchor opens every section), R6 (cohort enrollment primary CTA per cohort-conventions memory), R9 (verb-led section headings).
When to invoke
Yes: "Create a new Pulse edition", "Write GTM Engineer Pulse #[X]", "Generate the Pulse newsletter", "Help me with the GTME Pulse", "/gtme-pulse"
No: general LinkedIn content → linkedin-content. Job board management only → handle directly. Edit existing edition → handle as direct edit task.
Full trigger detail + edge cases → the premium reference.
Inputs (minimum)
User must provide:
- Edition number, publication date
- Recent News (4-5 URLs), LinkedIn Hot Takes (5-7 URLs), GTME Jobs (5-10 URLs), Top GTMEs (4-5 LinkedIn profiles), Recommended Resources (5-8 URLs)
- Optional: theme, cohort CTA status (
active|waitlist|none), cohort number, cohort start month + enrollment deadline, cohort link, special announcement, spots remaining (only if Matteo gives a real current number — never inferred)
If counts are below minimum, ask for more before proceeding. Full table + format spec → the premium reference.
Process — three phases
Phase 1 — fetch
Parse input → categorize links → fetch LinkedIn posts via Apify (supreme_coder~linkedin-post) → fetch profiles via Apify (harvestapi~linkedin-profile-scraper) → fetch other URLs via WebFetch → supplement profiles with WebSearch for generalized bios.
API token: api-keys/.env → APIFY_API_TOKEN. Full curl commands + extraction-per-section spec → the premium reference.
Phase 2 — generate
Write intro (multiple paragraphs, each 2-3 sentences, casual, reference highlights) → Recent News (bold linked headline + body inline, ONE paragraph of 2-3 sentences, NO line breaks within the bullet) → LinkedIn Hot Takes (link on headline NOT author, same one-paragraph 2-3 sentence rule) → GTME Jobs (**[Role @ Company](url)** | salary | location — body of 2-3 sentences inline, NO line break between meta-line and body) → Top GTMEs (**[Name](url)** — Role @ Company. Bio sentence + last-30-days post activity sentence(s), 2-3 sentences total, ONE paragraph, NO "Follow for X" closer) → Recommended Resources (**[Title](url)** by Author (context). Body of 2-3 sentences inline, ONE paragraph).
Hard rules every section follows:
- Every bullet body is ONE paragraph of 2-3 sentences. No line breaks within a bullet. No indented sub-paragraphs. If a topic needs more depth, condense or split into a separate bullet.
- No
**(bold) inside the body paragraph. The bold-link headline at the start is fine; nothing else in the body gets bold for emphasis. Use italics with single*for quotes/titles only. - No "pairs with X" phrasing. If the pairing is real, state the parallel directly without the meta-commentary. Most of the time, just say the thing.
- Full conversational sentences, no abrupt sentence changes. Connect clauses with commas, em-dashes, or semicolons so the paragraph flows as one thought. No fragment punchlines.
- Sound like Matteo. Direct, operator-first, contractions ("you're", "it's", "won't"), em-dashes with spaces, sentence case headers. The 100 Posts Test is the final check.
Top GTMEs section — special rule: instead of a generic "Follow for X" closer, mention something from the person's last 30 days of LinkedIn activity if active; if inactive, pull a freshness angle from their profile (latest role change, headline, current company traction). The bio should ground in their lineage; the closer should ground in what they're doing NOW.
Per-section instructions → the premium reference. Templates with link rules → the premium reference. Voice rules → the premium reference. Section-level templates → the premium reference.
Phase 3 — assemble + polish
GDrive manifest line (auto, line 1) → sections (NO editor-notes HTML comment block — strip if present from prior edits) → closing ("Keep shipping, Matteo") → image suggestions (2-3, single-line each, no headshot grids unless the bullet has a real reason) → format polish (em dashes with spaces, bullets -, sentence case, link spans full title) → 2 Cialdini-powered CTAs (mid + end).
Detailed steps → the premium reference. Cialdini CTA templates → the premium reference. Output structure → the premium reference. Process flowchart → the premium reference.
Phase 4 — asset bundle (REQUIRED)
Download GTME Jobs company logos (logo.dev) + Top GTMEs LinkedIn headshots (Apify) for the edition. Output to ~/Downloads/pulse-{N}-assets/ with subfolders logos/ and headshots/, plus a manifest.md. Run before Phase 5 follow-ups so assets are ready when the GDoc / Substack publish step fires.
Coverage scope (narrow, deliberate):
- Logos: the 5 hiring companies in GTME Jobs only. NOT Recent News, NOT MCP-of-the-week, NOT Hot Take authors' employers, NOT Top GTMEs' employers, NOT Resources publications. The Jobs companies anchor a section the reader scans for visual recognition; everything else carries on link + headline alone.
- Headshots: the 4 Top GTMEs to Follow only. NOT the 5 Hot Take authors. Top GTMEs is the only section where the person IS the subject and a face accelerates recognition.
Hit rate from Pulse #30: 5/5 logos via logo.dev + 4/4 headshots via Apify apimaestro/linkedin-profile-batch-scraper-no-cookies-required ($0.02 total spend, under the apify-credits no-gate threshold).
Full procedure → the premium reference.
Critical guardrails (do not violate)
- Link matching — re-read original input, checklist every URL, match each to its section. Common miss: official blog links, podcast/Spotify, LinkedIn buried in long lists.
- Inline link formatting — link MUST span the ENTIRE title text.
**[Title](url)**not**Tit[le](url)**. Google Docs export breaks if partial. - Profile research — Apify alone is insufficient. Pair with WebSearch
"[Name]" [Company] backgroundfor generalized bios. Never write "in their latest post about…". - Job format —
**[Role @ Company](url)**| Salary | Location. Link spans full role-at-company text. - CTA requirements — exactly 2 Cialdini-powered CTAs (mid after Jobs header, end before "Keep shipping"). Each uses ≥2 of: social proof, authority, scarcity, concrete. Every lever must be TRUE — scarcity is the real deadline and cohort start date, never a spot count or percentage-filled nothing can source. A fabricated number is rule 7 + anti-hallucination #1, not persuasion.
- Hyphens
-for body list items — not•, not→. Applies to ALL body items including CTA action links and job board link. One carve-out: the LinkedIn promo block uses•(plain text, LinkedIn renders no markdown). - News source verification — never write a summary from fallback web search if the source URL failed to fetch. Flag the failed URL; never fabricate.
Plus 7 anti-hallucination rules: never invent metrics, fabricate quotes, guess salary, assume titles, invent expertise. Mark missing as [Not available]. Full guardrails + per-rule examples + pre-delivery quality checklist → the premium reference.
The GTM Engineer Pulse | #[X]
SEO title: [<60 chars] Meta description: [<155 chars]
[Intro paragraph]
Recent News [4-5 items]
LinkedIn Hot Takes [5-7 items]
GTME Jobs [Cohort CTA if active] [5-10 items] • Check our full job board: gtm-engineer-jobs.com
Top GTMEs to Follow [4-5 profiles]
Recommended Resources [5-8 items]
Keep shipping, Matteo
Recommended Images to Add [3-5 items]
Full structure with separators + formatting rules table → the premium reference. Section-level good/bad examples → the premium reference. Full reference editions → `examples/pulse-14-example.md`, `examples/pulse-15-reference.md`.
---
## Required follow-ups
After approval:
1. **LinkedIn promo post** — REQUIRED. Template + 12 rules → `examples/linkedin-promo-template.md`. Real reference → `examples/pulse-20-linkedin-promo.md`.
2. **Publish — Notion + Substack draft (default since #32)** — create the Notion page (sibling of previous edition, manifest line added to local md) and stage the Substack draft via Claude in Chrome: title `The GTM Engineer Pulse | #N`, subtitle = meta description, body via synthetic HTML paste into the Tiptap editor, then the 4 CTA elements (2 blockquoted cohort CTAs + 2 native `subscribeWidget` nodes). Full procedure → the premium reference. Legacy GDoc path: `create-pulse.mjs` (NOT `create-doc-unified.mjs`) → the premium reference.
3. **Self-improvement loop** — REQUIRED. Ask user the 4 capture questions (what worked, what to fix, new guardrails, new examples). Full prompt + auto-capture triggers + pattern detection → the premium reference.
Iteration prompts (refine / expand / quality) → the premium reference.
---
## Research substrate (Exa)
**Default:** Exa, per `.claude/rules/exa-protocol.md`. **Primary tools:** `web_search_exa` (date-filtered for "recent" claims) and the plugin `/search` slash command for parallel topic deep-dives. **Fallback:** WebSearch with data-gap flag.
Use case: weekly news sweep with date filter; profile background supplementation; resource fact-check. Plugin namespace `mcp__plugin_exa_exa__*` preferred; legacy `mcp__exa__*` still mounted. Citation: `[VERIFIED: exa_search, {url}, accessed {YYYY-MM-DD}]`. Quality gate: ≥3 sources per major claim, ≥50% `[VERIFIED]`, no silent WebSearch fallback.
Worked examples + full tool catalog → `.claude/skills/meta-skills/exa/`.
---
## MCP integration
| Source | What | Tool | When |
|--------|------|------|------|
| **Exa** | Newsletter topic research, profile background | `web_search_exa` | Always |
| **Apify** | LinkedIn posts + profiles | `atomus~linkedin-reactions-scraper-pro` (post-details mode), `harvestapi~linkedin-profile-posts` | When URLs are LinkedIn (`supreme_coder~linkedin-post` is BROKEN since ~June 2026) |
| **WebFetch** | Job boards, blogs, Substack, YouTube | built-in | Non-LinkedIn URLs |
**Fallback (no MCP):** WebSearch for GTM topics; user-provided topic list.
---
## Skill chain
| Skill | Relationship | Usage |
| ----- | ------------ | ----- |
| `linkedin-content` | Related | Standalone LinkedIn posts (not newsletter hot takes) |
| `outreach-emails` | Complementary | GTM Engineer School promotion emails |
| `aeo-content` | Complementary | Newsletter archive SEO optimization |
---
## Final ship gate
Run `/premortem --output` before ship. See [`/premortem` skill](../../../../meta/orchestration/premortem/SKILL.md) 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.
Then run `/voice-reviewer` — the content ship gate: voice + brand quality (pm-loop.md). The LinkedIn readability dimension is N/A for the Pulse body and fires on the promo post.
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](../../../../../rules/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-pulse- Source
- github.com/matteotitta/genesys-skills