The pitch you win
A new business pitch as a film instead of a deck. Your agent researches the prospect, writes the argument, casts several voices, builds the campaign concepts as scenes and renders the whole thing on your Mac, then brings you a cut to mark up after every round.
Use /groundslate-pitch-film. We are <<YOUR AGENCY>> pitching <<THE PROSPECT>>. The ask is <<WHAT YOU WANT THEM TO AGREE TO>>. It will be watched by <<WHO IS IN THE ROOM>>. Our brand is <<WHERE YOUR BRAND LIVES>>. Bring me a cut.
Works with
- Your agent's own skills
- Research, analysis and writing. GroundSlate renders web pages itself now, capture_page for stills and record_page for footage, so the pictures come from the app; the reading, the judgement and any account that needs a sign-in still arrive through your agent.
- Claude Design, or any design tool that outputs HTML
- Designs the page and holds the brand. GroundSlate renders the page to video and can keep it as a named kit. What it ships is tooling: a ruler for placing marks against text, a browser library of transition moves, puppet engines for 2D and 3D characters, and a console kit that holds a video to what a classic games console could draw. It stores no brand and designs nothing itself.
- ElevenLabs, or any voice or music model
- Generates the audio, outside GroundSlate. Your agent generates it through its own connection to the provider, an MCP server or an API key, and hands the file back. It stores the voice id against a character and mixes, ducks and lays whatever your agent brings back. Most work needs no provider at all: GroundSlate speaks scripts locally in a designed or stock voice, and writes instrumental beds and sound effects locally too. A provider is for a specific voice you own, or a catalogue track you want by name.
A pitch deck gets read in four minutes by someone scrolling, and the best idea in it is a bullet on slide nineteen. The same argument as a film gets watched to the end in the room, forwarded to whoever missed the meeting, and remembered as a point of view rather than a list of services.
This skill makes your agent the whole production for a new business pitch. An audit or a competitive brief diagnoses a problem. A pitch argues forward: here is what we see, what we would do, and what it is worth. Diagnosis is only the setup.
Everything in <<double brackets>> is yours. The ask matters most. Without it the film wanders and the close has nothing to land on.
Install it
Copy or download SKILL.md above.
For Claude Code, save it as ~/.claude/skills/groundslate-pitch-film/SKILL.md.
For claude.ai and the Claude desktop app, put it in a folder named groundslate-pitch-film, zip the folder, and upload it under Settings, Capabilities, Skills.
The skill
---
name: groundslate-pitch-film
description: Turn a new business pitch into a narrated film. The agent researches the prospect, writes the argument, casts several local voices, builds campaign concepts as designed scenes, renders deterministically on your Mac and brings the human a cut to mark up after every round. Use when somebody is pitching a prospect, presenting a point of view, or wants a deck to become a film.
---
# The pitch, delivered as a film
You run the production. Research, script, casting, design, render, mix and
delivery. The human answers three questions at the start and marks up a cut
at the end of every round. Between those, work on the defaults and your own
judgement.
## A pitch is not an audit
This is the failure to avoid, and it is the most common one. The research
turns up problems, problems are concrete and easy to narrate, and forty
minutes later the film is a list of things the prospect is doing wrong. That
film loses. Nobody hires the agency that made them feel stupid.
- The diagnosis is the SETUP. It earns the right to the idea, and it is over
inside the first third.
- The film is about what you would DO, and what it is worth. Campaign
concepts, the plan, the year, the ask.
- Caveats do not belong on screen. Every qualifier you add to protect
yourself reads as doubt about your own idea. Say the thing.
- Never write a line about being honest, trustworthy or transparent. People
assume it until you raise it, and raising it makes them wonder why this is
the one honest part.
- Pitch the whole business, not the slice you were shown. If the brief is a
website, the website is where the argument starts, not where it ends.
## Three questions up front
1. Who is pitching whom, and whose logo goes where. Get both marks before you
author a scene.
2. The ask. One sentence: what do you want them to agree to when the lights
come up. A retainer, a project, a next meeting, a year.
3. Who is in the room. A founder, a marketing team and a procurement panel
need three different films.
Then state the defaults once and proceed: 1920x1080 at 30fps, several
distinct local voices, music across the whole film ducked beneath every
spoken line, and a cut in front of them at the end of every round.
## Preflight, before any promise
- `get_context` and confirm the PROFILE by name. Everything lands in the
active profile and the human can switch it at any moment. Pass `profile=`
on every library call after that.
- `composition_doctor` proves the render path now rather than at scene twelve.
- `voice_status` for the narration engine. Relay its fix sentence verbatim.
- `list_fonts` for the families the font library resolves, then `check_fonts`
on each page once it is written: it preflights a page, not a family.
`render_html` refuses a missing font rather than substituting it.
- `create_project` named for the prospect and the quarter, and hold the `prj_`
id. Everything binds to it. See the source of truth section: this is the
part that decides whether anyone can pick the work up after you.
## Research the prospect, then capture them
Your own research skills do the reading. GroundSlate does the pictures, and
for a pitch the pictures are mostly the prospect's own estate.
- `capture_page` for stills and `record_page(scroll=True)` for footage of
their site, their booking flow, their menu, their locations, their
competitors. A film about a business should contain that business.
- `consent="reject"` so a cookie banner is never in your plate.
- Capture answers to the human's site policy. `browser_policy` reads it,
`request_browser_site` asks with your reason, and only they can grant it.
- `fetch_asset` with the project id for images that already exist on the web,
so they download, index, bind and carry a source receipt in one call. Leave
`recognize` off: enrolling a prospect's staff as identities in this profile
is not something a pitch should do on its way past.
- Harvest wide. A pitch that reuses one photograph six times looks like it was
made from one photograph. Count how many times each asset reaches the
screen and fix the ones that repeat.
Then distill to a spine you can say out loud in four sentences. If you cannot,
the film does not have an argument yet and no amount of design will hide it.
## Cast several voices
One voice for thirteen minutes is a lecture. Cast the film.
- `list_voices` in the profile that holds them, which may not be the profile
the film is in. `preview_voice` before you commit.
- Give the roles different jobs: the argument, the evidence, the client's own
world, the close. A roll of place names or product names in many voices is
a cheap and very effective texture.
- `synthesize_speech` takes `lines` as a LIST OF PLAIN STRINGS. Pass a dict
and it is stringified and spoken aloud, punctuation and all.
- A cloned voice inherits its source recording. A dull recording produces a
voice that drops word final consonants, so plurals vanish and "machines"
becomes "machine". Measure the acoustics rather than trusting a transcript,
and if a voice fails this way the real fix is a brighter reference, not
another take. Synthesis is deterministic: the same text in the same voice
returns the same audio, so re-recording without changing the words is a
no-op.
- Write to fit. If a line has to be time compressed to reach its slot the read
gets denser toward the end and a listener hears it as rushing. Cut words
instead.
## Campaign concepts are scenes, not bullets
The creative is the reason they hire you, so it gets the most screen time and
the best design.
- One concept per scene block, named, with the idea stated in a single line
set large, then shown rather than described.
- Show the artefact. A campaign concept as a headline plus a body paragraph is
a slide. As a poster, a phone screen, a door, a room, a page, it is an idea.
- Reuse one visual system across the concepts so they read as a body of work
from one agency rather than four unrelated ideas.
- Vary composition between scenes and never inside one.
## The scene rules that survive contact
- One statement per scene, set large enough to read from the back of a room.
A line that will not cut is two scenes.
- Small type is only ever verbatim evidence. A sentence set small is the
narration leaking onto the picture.
- Motion is how a thing arrives and leaves, not a state it lives in. Type
enters, settles, holds still while it is being read.
- The layout is fixed from t=0. Nothing already on screen moves because
something new arrived.
- Fill the frame. Half an empty frame is type set too small.
## The close is the ask, and it should be cut to the music
The last thirty seconds are the only part everyone remembers.
- `audio_beats` the bed you are closing on and get its real tempo. Do not
trust a single reading: verify it against a click of known tempo, because
a beat tracker can report 117.5 for a track that is exactly 120.
- Lift the bed to a round tempo with `atempo` if it is close, then build the
close on the bar. At 120 BPM a bar is 2.000 seconds, which at 30fps is
exactly 60 frames.
- Cut the close on bar lines with HARD CUTS. A dissolve smears a downbeat.
- Prove the lock by measuring: the error between each cut and its bar line
should be CONSTANT. A constant offset is a locked tempo; a growing one is
drift, and drift means the tempo is wrong.
- End on the ask, then the mark, held.
## Everything happens inside GroundSlate
The tools run on the human's Mac, in the background, on a queue. They are
faster than you and they cost none of your context.
- `write_composition` writes an authored page where the renderers can open it.
Never reach for a filesystem bridge outside GroundSlate.
- `render_sequence` assembles N clips and N-1 seams in one call and encodes
every frame exactly once. `author_film` expresses scenes and seams as one
composition.
- `mix_audio` IS the ducking. Pass voice and music, take the `ffmpeg_argv` it
returns, bake it with `render_ffmpeg`. Its `threshold` is a linear amplitude
and not decibels, which is the one parameter people get wrong.
- `list_transitions` catalogs both engines and `transition_motion` explains a
move. Choose on the measured `seam_seconds`, not the `cost` tier.
- `generate_video` for AI plates. Keep clips short, blur them before use, and
author the camera move yourself from `t` rather than asking the model for
one: a model's move is whatever it decided and cannot be dialled down
without another render.
Do not bake early. A film that exists only as a finished file has to be
rebuilt in full for a one word change.
## Timing is frames
- A transition overlaps its two shots and never adds time. A cut runs
`sum(clip frames) - sum(seam frames)`.
- Declare durations that land on whole frames. 18.15 seconds at 30fps is
544.5 frames and floors to 544, and nothing warns you.
- Once audio is placed against scene starts, a duration change moves every
scene after it. Freeze durations before you place a cue.
- Verify frame counts with ffprobe on the delivered file. A shared queue can
lose a job without writing a file and without a terminal state.
- Keep one pixel format and one colour range across the whole film.
## Motion has a floor
- A drift under about 0.3 px per frame emits identical frames, and a ground
crushed to near black cannot register motion at all. Clear 8 px per second
on a ground you can see.
- Text over a moving plate is not a moving scene. If you paused the plate,
would the scene still be moving? Measure the type and graphic layers
separately from the background.
## An instrument that cannot fail is not evidence
- Prove the red before you trust the green.
- Whisper restores plurals its language model expects, so a transcript will
tell you a word was spoken when the audio does not contain it. Never use a
transcript as evidence for anything acoustic.
- Beware a default that is indistinguishable from a real answer.
- Look at the thing. Looking settles cases measurement cannot.
## Never invent a fact about the prospect
- Numbers only they have stay as visible placeholders. A price you guessed
will be the one thing they notice.
- If a claim needs a source you do not have, cut the claim.
- A generated answer, screenshot or quote presented as real is the fastest way
to lose a pitch and the account.
## The project is the source of truth
The test is concrete: a DIFFERENT agent, tomorrow, given only the profile and
the project id, must be able to pick this up and continue. If they cannot, the
production failed however good the film is.
- `write_project_file` for the spine, the script, the cue tables, the note map
from every review round, the voice ids and the measurements that surprised
you.
- `add_project_note` for a decision AND its reason. The reason is the part a
later agent cannot reconstruct.
- Bind media as it arrives. `commit_to_library` the finals with the project.
- Nothing important lives only in the conversation or in a scratch directory.
## Show them, every round
- End every round with `request_review(source, ask, agent=, profile=)`.
ALWAYS pass an `ask`: with one the window carries a verdict bar, without one
it is a show that accepts notes and gives no way to submit them. ALWAYS pass
`agent=`, or you are recorded as the human and the raise skips your review.
- Read `placed` back and say what it says: `opened`, `waiting` (running but
not frontmost, so the Dock icon is bouncing), or `saved` (app is shut).
- `review_status` for the notes. Each carries an anchor with a time and
sometimes a drawn region. Work from the anchor, not your reading of the
sentence.
- `withdraw_review` takes back a superseded question of your own. It refuses
one that has been answered or commented on, which is correct.
- Report per note: DONE, NOT DONE or PARTIAL, with evidence. A claim is not
evidence. Never report a note done that you did not verify.
## Report like a producer
- Keep working while renders run. Never make somebody watch a progress bar.
- Say what resolved and what did not after every batch step.
- End with where the film is, what it is called, the ask it closes on, and
anything you could not verify.