Take raw customer inputs — interview transcripts, survey responses, Slack quotes, support tickets, review excerpts — and generate a structured case study draft with problem/solution/result narrative, pull-quotes, metric callouts, and multi-format outputs (full case study, one-pager, social proof snippet, sales deck slide). Pure reasoning skill. Use when a product marketing team has customer signal but no time to write the story.
npx gooseworks install --all # then, in Claude Code, Cursor, or Codex: /gooseworks use the customer-story-builder skill
Turn raw customer signal into a polished case study — plus every derivative format you need. One input (messy transcript or quote), all outputs (case study, one-pager, social snippet, deck slide).
Core principle: The best customer stories already exist in your support tickets, Slack channels, and call recordings. You just need to extract and structure them.
From the raw inputs, identify and extract:
Pull the 3-5 strongest verbatim quotes from the raw input:
# [Headline: Outcome-driven, not product-driven]
*[Subhead: Customer name + one-line result]*
---
## About [Customer]
[2-3 sentences: company, industry, size, what they do]
## The Challenge
[2-3 paragraphs: What was the problem? Why did it matter? What had they tried?]
> "[Problem quote]"
> — [Name], [Title] at [Company]
## Why [Your Product]
[1-2 paragraphs: How did they find you? What made them choose you?]
## The Solution
[2-3 paragraphs: How did they use the product? Which capabilities mattered most?]
> "[Solution/experience quote]"
## The Results
[Results summary with metric callouts]
### Key Metrics
- **[Metric 1]:** [Number + context]
- **[Metric 2]:** [Number + context]
- **[Metric 3]:** [Number + context]
> "[Result quote]"
## What's Next
[1 paragraph: Future plans, expansion, what they're excited about]
---
**Industry:** [X] | **Company size:** [X] | **Use case:** [X] | **Product:** [X]# [Customer Name]: [Headline Result]
**Challenge:** [2 sentences]
**Solution:** [2 sentences — what they use and how]
**Results:**
- [Metric 1]
- [Metric 2]
- [Metric 3]
> "[Hero quote]"
> — [Name], [Title]
[CTA: Learn more / Request a demo]For website testimonial section:
"[Short, punchy quote — max 2 sentences]"
— [Name], [Title] at [Company]
[Result: X% improvement in Y]For LinkedIn post:
[Customer Name] just shared their results:
→ [Metric 1]
→ [Metric 2]
→ [Metric 3]
"[Quote]"
Here's their story: [link]For cold email insert:
[Company in their industry] saw [key metric] after switching to [Product].
"[Short quote about the result]" — [Name], [Title]Slide title: "[Customer] — [Key Result]"
Left side:
- Challenge: [1 line]
- Solution: [1 line]
- Result: [1 line with metric]
Right side:
> "[Hero quote]"
— [Name], [Title]
[Customer logo]For website or marketing collateral:
[BIG NUMBER]
[Label — e.g., "hours saved per week"]
— [Customer Name]Generate 2-3 of these from the strongest metrics.
Before finalizing, verify:
Save all assets to clients/<client-name>/product-marketing/customer-stories/[customer-slug]/:
case-study-full.md — Complete case studyone-pager.md — Sales leave-behindsocial-snippets.md — All social proof formatsslide-content.md — Deck slide contentraw-inputs.md — Original source material (for reference)| Component | Cost |
|---|---|
| All story generation | Free (LLM reasoning) |
| Total | Free |
None. Pure reasoning skill. Takes raw text input and produces structured outputs.
Assemble an expert/educator motion-graphic LISTICLE video ad from a config — a spoken authoritative voiceover carries a numbered listicle while N web-animated hyperframe beats (HTML plus the Web Animations API, one branded design system of alternating tiles, big hero numerals, and glass-pill callouts) are rendered frame-by-frame via Playwright and anchored to the VO's word-level timestamps, periodic color-graded B-roll windows give visual breath, and captions burn ONLY inside those B-roll windows (2-word chunks, ASS Format header carrying a Name field so none drop) with the VO mixed under a low music bed. This is the FREE deterministic assembly stage (Playwright beat render plus ffmpeg concat plus window-masked caption burn plus VO-and-music mix plus final composite) — the VO, the music bed, and the stock B-roll come from create-vo-elevenlabs, create-music-elevenlabs, and media-proxy. Use for the vo-anchored-motion-listicle format.
Assemble a stop-motion hand-swatch-cycle product-demo ad from a config — a sequence of still PLATES (one hand swiping a single-barrel cosmetic across a cream skin-patch, the barrel + swatch changing per plate while the hand, background, crop, and lighting stay locked) is PNG→mp4 loop-encoded at each plate's own stop-motion hold (fast motion frames 150–250ms, per-shade ~380ms, hero beats 1100–1800ms), concat-demuxed with HARD cuts into a silent master, closed on a Playwright HTML-rendered branded end card (serif tagline + sans subtitle + real logo SVG over a hero BG, never AI-rendered text), and muxed with a pre-sourced music track playing under the end card with a fade tail (no VO). This is the FREE deterministic assembly stage (loop-encode + concat-demux + end-card render + music mux); the master-anchor plate, shade plates, and end-card BG come from create-image-gpt-image-fal and the track from create-music-elevenlabs. Use for the stopmotion-hand-swatch-cycle format.
Assemble a split-screen creator ad from a config — a two-zone vertical composite where a supplied AI-creator lip-sync take fills the BOTTOM ~48% while real 16:9 product/demo clips run uncropped in the TOP ~52%, each top clip contain-fit with a darkened blurred cover-scale fill of the same clip (never black bars), a 3px brand-color divider between the zones, the creator slice cover-fit per the per-scene VO timing, scenes hard-concatenated with the body audio being the concatenated creator VO slices, an end card held on the last sharp frame ~3s, then the ASSEMBLED cut transcribed with local Whisper (not the raw VO — concat drops inter-scene silence) and word-level captions burned in the chosen style. This is the FREE deterministic assembly + caption stage (two-zone composite + blurred fill + divider + hard-concat + end card + captions); the VO comes from create-vo-elevenlabs, the anchor from create-image-gpt-image-fal, and the whole-VO lip-sync from a paid VEED Fabric 1.0 take (a no-atom upstream input). Use for the split-screen-creator format.