Copy what already works.
Make it yours.
Paste a link. JEV reads the video into a typed structure — shots, lines, cast, timing — and the hypit engine composes your version of it. Two layers, and neither of them is a prompt.
Check the structure it read
Five shots, their lines and their cast. Edit a row and only that row is generated again.
- 0:00Hook · “I was about to throw these out.”Host · bathroomEditing
- 0:03Problem · “They went flat after one wash.”Host · close-up
- 0:09Reveal · “Then I tried this.”Host + product
- 0:16Proof · “Same towel. Thirty seconds.”Product · macro
Bound to this video
- Hostfounder.jpg
- Productsku-04.png
- Spokenes-MX
safe zoneThe first five seconds generate free, so the new hook is something you watch before you pay for the rest.
Every other AI video tool is a prompt box over a render. You describe an ad, get something adjacent, and re-roll until the budget runs out — and nothing in the middle is a thing you can open and correct. Meanwhile the ad that actually converts is already live on someone else’s account, and you can watch it.
copiecat is two readable layers instead. JEV reads that video into a typed structure — hook, beats, lines, cast, timing — where every field is a value with a confidence beside it. The hypit engine then composes your version from that same structure. You change what should be yours; what you leave alone is what was already doing the work.
A shot list, not a prompt box.
The reference comes back as rows you can edit: each shot with its time range, its line, and the people and objects in it. Change a row and only that row is regenerated — the rest of the cut stays exactly where it was. See the flow
- 0:00Hook · “I was about to throw these out.”Host · bathroomEdit
- 0:03Problem · “They went flat after one wash.”Host · close-up
- 0:09Reveal · “Then I tried this.”Host + product
- 0:16Proof · “Same towel. Thirty seconds.”Product · macro
- 0:24Call to action · “Link’s in my bio.”Host · wide
Your changes
- Cast → your founder, from one photo
- Product → your SKU, in every shot that held one
- Language → Spanish, lips and captions together
- Setting → kitchen counter, not bathroom
- Kept → the hook, the beat timing, the cut rhythm
Five seconds generate free, so you see the new hook before you pay for the rest.
Reads a link from any of these, or a file straight off your disk
- TikTok
- YouTube
- Instagram
- Douyin
- Bilibili
- Facebook
Read it, change it, ship it.
Nothing to prompt.
A typed reading of the reference, the changes you want, and a composition you can inspect field by field. No prompt engineering, no re-rolling until something lands.
- Rebuild this one for my brandtiktok.com/@somebody/video/7412
- Fetched0:31 · 1080p · 1.9 MB
- Transcribed42 words, timed
- Shots found5, with cut points
- Cast and props1 person, 2 objects
JEV reads the link. It fetches the video, transcribes it, finds the cuts and names who is on screen — as typed fields with a confidence on each one, not a paragraph of description.
- My founder, my SKU, in Spanish
Bound to this video
- Hostfounder.jpg
- Productsku-04.png
- Spokenes-MX
Kept from sourceHook · timing · rhythmSay what should be yours. Bind a face, a product or a language to the video. Everything you do not bind is kept exactly as the source had it.
- Every judgement, typed and scoredDecision logJEV
- shot_4.holds_producttrue0.97
- entity_1.kindperson0.99
- take_2.matches_rowfalse0.88
- caption.safe_areaok0.94
Answers are schema-bound, so none of these can come back as prosehypit composes it. The structure becomes a Script, prepared takes and a Timeline in hypit's open engine — so the cut is a document you can inspect, not a render you have to accept.
Change one axis,
or all of them.
- Face
- Voice
- Product
- Language
- Setting
- Wardrobe
- Hook
- Script
- Captions
- Pacing
- Cuts
- Ratio
- Music
- Mix
- Lighting
- Palette
- Framing
- Gesture
- Tone
- Offer
- CTA
- Overlay
- B-roll
- Speed
None of these are modes you pick at the start. They are fields on the shot list, so a remake can swap the face and keep the voice, or change the language and the offer and nothing else. Whatever you leave alone comes through exactly as the reference had it — including the timing, which is usually the part that was working.
Why copiecat
A video that works is not magic. It is a structure: a hook that lands in the first second, proof before the ask, a cut that breathes where the eye needs it to. Every tool before this one kept that structure inside the model, where you could not reach it. copiecat writes it down.
Your video goes in. Only your video comes out.
An unreleased product, a founder's face, a script nobody has heard yet. What you hand copiecat is used to make your cut and is not borrowed for anything else.
- Used for trainingNeverReference videoYour projectYour uploadsYour projectFinished cutYour project
Never training data. Your reference, your uploads and your finished cuts make your video and nothing else. They do not train any model.
- What is in the outputStructure read5 shotsFrames generatedAll of themSource footage used0 frames
Structure in, new frames out. The reference is read for timing and beats. No frame of it is composited into what you ship.
- Decision logBefore you payshot_2.keeps_hooktrueentity_1.bound_imagefounder.jpgtake_5.matches_rowfalse
Readable before it is billable. Every typed decision is logged, and the first five seconds generate free, so you judge the cut before you pay for it.
- Delete projectImmediateReference videoBound imagesGenerated shots
Delete means deleted. Removing a project removes its reference, its bound images and its renders. Nothing is kept back for later.
Read as values, composed as code.
One remake is a handful of generated shots and thousands of small judgements around them. Asking a language model to answer those in prose is slow, costly, and occasionally returns a paragraph where the code expected a boolean. JEV answers them as types, in one parallel pass, against a schema written in advance — so the answer cannot be malformed and the log is something you can read. See the decision log
- JEV, typed decision200×
- Frontier LLM, same question as text1×
A library of structures, not a folder of prompts.
The reference that worked is an asset. Keep it, re-cut it for the next product, and hand the whole structure to whoever picks up the account next.
- Find a format that already converts, then make it yours
- Swap only the hook and keep the beats that earned the watch time
- Ship a language variant without reshooting anything
See the hook before you pay for the cut.
Every project reads its reference and generates its first five seconds for nothing. After that you pay per run, at a price quoted from that run's own generation cost, shown before it starts.
Preview
For finding out whether the structure holds.
Free
every project, no card
Paste a link- Read any supported link into a shot list
- Edit the structure as much as you like
- First five seconds generated free
- Full decision log before you spend anything
Per cut
How it worksFor everything you actually ship.
Quoted
before the run starts
Start a project- Priced from what the run costs to generate
- Up to 60 seconds of finished video
- 9:16, 16:9 and 1:1 from one structure
- Re-generate a single shot, not the whole cut
- No subscription and no credits to burn down
Volume
For agencies and always-on creative.
Talk to us
Email us- Shared reference library across accounts
- Per-client reporting on spend and output
- Priority generation capacity
- A named engineer, not a ticket queue
Everything people ask before switching.
Something missing? Write to us and a human answers within a day.
Jev is TypeSafe's System One model, released in September 2026. It does not write text: you define a question and its permitted answers in advance, and it returns a typed answer with a probability. Making one video takes thousands of small judgements — is this the same person, does this shot hold the product, does this take match the row it was generated for — and those are exactly the judgements a language model answers slowly, expensively, and sometimes in prose you then have to parse. copiecat routes them to Jev instead, which is why the decision log is readable and why nothing in it can come back malformed.