Story Library Curation
Build and maintain a structured library of customer stories indexed by industry, use case, pain point, and outcome for demo narrative selection
npx gtm-skills add drill/story-library-curationWhat this drill teaches
Story Library Curation
This drill builds and maintains a structured customer story library optimized for demo narrative selection. Each story is a self-contained record with the challenge, solution approach, results, key quotes, and metadata tags that enable AI-powered story matching to prospects.
Input
- Access to existing customers in Attio
- Fireflies transcripts from customer calls, QBRs, or case study interviews
- Optional: existing case studies, testimonials, or success metrics
Steps
1. Identify story candidates
Query Attio for customers who meet story criteria using attio-lists:
- Active customer for 3+ months
- Has measurable results (usage metrics, reported outcomes, NPS 8+)
- Willing to be referenced (check
reference_statusattribute) - Represents a distinct segment (industry, use case, or pain point not already covered in the library)
For each candidate, check if a Fireflies transcript exists from any recent call (QBR, check-in, onboarding wrap-up). If yes, the story can be extracted without scheduling a new interview.
2. Extract story elements from transcripts
For each candidate with a Fireflies transcript, use fireflies-transcription to retrieve the full transcript. Send to Claude for structured extraction:
POST https://api.anthropic.com/v1/messages
Prompt: "Extract a customer story from this call transcript. Find the moments where the customer describes their situation before using the product, how they adopted it, and what changed.
Transcript:
{transcript_text}
Return JSON:
{
"company": "...",
"industry": "...",
"headcount": 0,
"story_title": "One-line story title (e.g., 'How Acme cut onboarding time by 80%')",
"challenge": {
"summary": "2-3 sentences describing the problem in the customer's language",
"pain_categories": ["onboarding", "churn", "manual-processes"],
"quantified_pain": "Specific numbers if mentioned (e.g., '3 weeks per customer')",
"emotional_context": "How the team felt about the problem"
},
"solution_approach": {
"summary": "2-3 sentences on what they did with your product",
"features_used": ["feature-1", "feature-2"],
"implementation_time": "How long to set up"
},
"results": {
"primary_metric": "Single most impressive result with number",
"secondary_metrics": ["Other measurable outcomes"],
"timeframe": "How long to achieve results",
"emotional_outcome": "How the team feels now"
},
"key_quotes": [
{"quote": "Exact customer words", "context": "What they were describing", "emotional_tone": "relief|excitement|pride|surprise"}
],
"story_tags": {
"industry": "...",
"company_size_bucket": "1-50|51-200|201-1000|1000+",
"pain_themes": ["theme1", "theme2"],
"use_case": "...",
"stakeholder_persona": "VP CS|CTO|CEO|..."
}
}"
3. Create story records in Attio
Set up custom attributes on a "Stories" object or use tagged notes on Company records with attio-custom-attributes:
Required fields per story:
story_id: unique slug (e.g.,acme-onboarding-speed)story_title: one-line titlecompany_name: customer companyindustry: industry tagheadcount_bucket: size categorypain_themes: array of pain categoriesuse_case: primary use caseprimary_metric: headline resultstory_status:draft|reviewed|approved|retiredlast_refreshed: date of last update
Store the full structured story as an Attio note using attio-notes.
4. Assess library coverage
Map stories against your ICP segments:
| Segment | Stories Available | Coverage | |---------|------------------|----------| | B2B SaaS, 50-200 employees | 3 | Strong | | Fintech, 200-1000 employees | 1 | Weak | | Healthcare, any size | 0 | Gap |
Flag gaps where you have active pipeline but no matching story. Feed gaps into the case-study-creation drill as priority candidates.
5. Schedule story refreshes
Stories decay in relevance. Set up a quarterly review:
- Stories older than 6 months: check if the customer still has strong results. Update metrics if improved.
- Stories where the customer has churned or downgraded: retire immediately. Set
story_status: retired. - Stories with outdated product references: update the solution approach to reflect current product capabilities.
6. Validate story library for matching
Run story-matching-scoring against 5 recent deals to test that the library returns good matches. If the top score is below 50 for any deal, the library has a coverage gap for that segment.
Output
- Structured story library in Attio with 5+ stories covering major ICP segments
- Each story has: challenge, solution, results, key quotes, metadata tags
- Coverage map showing strong segments and gaps
- Quarterly refresh schedule
- Story matching validated against recent deals
Triggers
- Run on initial setup to build the first library
- Run when a new case study is completed (add to library)
- Run quarterly to refresh and validate coverage
- Run when story matching returns low scores (coverage gap detected)