I wanted to know what was actually working for five creators in my space. Not what they say works. What the numbers say.
So I had Claude Code pull every reel they posted in the last 30 days. 185 reels, 54.7 million plays. It found the 23 that did at least three times their creator's normal views, in under two minutes, for under a dollar. Then I handed every post to Jev, a model that doesn't write anything, it only judges. It made 1,480 judgments on those reels in 2.2 seconds, for less than a cent, and told me why the winners worked.
This guide is the exact setup. You don't need to code. Claude Code writes and runs everything; you paste the prompts.
What you need
- Claude Code on a paid Claude plan. This is the builder. It writes the scripts, runs them and reads the results.
- An Apify account. Apify runs the scraper that pulls public reels. The free plan includes $5 of credit a month, which covers roughly 2,000 reels.
- A TypeSafe account for Jev. Sign up at console.typesafe.ai and add a few dollars of credit. Jev is priced at about four cents per million tokens of input; my whole run of 1,480 judgments cost under a cent. (Already on Vercel? You can also reach Jev through Vercel AI Gateway. More on that in Step 4.)
- Three to five competitor handles. Public Instagram accounts only. Start with three. One clean run teaches you more than a big messy one.
How it works
| Step | Who does it | What happens |
|---|---|---|
| 1. Pull | Apify | Every reel each competitor posted in the last 30 days, with play counts |
| 2. Find outliers | Claude Code | Each reel compared to that creator's own median, flagged at 3x or more |
| 3. Judge | Jev | Typed verdicts on every reel: format, hook, call to action, how remixable it is for you |
| 4. Write | Claude | The winners turned into remix briefs for your own content |
The split matters. Jev judges, and it does it fast, cheap and the same way every time. Claude writes. Neither does the other's job well.
Step 1: Save your keys (once)
You need two keys. Get them here:
- Apify: in the Apify Console, go to Settings > API & Integrations and copy your personal API token.
- TypeSafe (Jev): in the TypeSafe console, open Keys (console.typesafe.ai/keys) and create one. Copy it straight away.
Never paste keys into a chat. Save them on your machine instead. On a Mac, open Terminal and run this line, paste the Apify token when asked (nothing shows as you paste) and press Enter:
read -s "APIFY_TOKEN?Paste Apify token: " && echo "export APIFY_TOKEN=$APIFY_TOKEN" >> ~/.zshrc && echo " saved"
Then the same for the TypeSafe key:
read -s "TYPESAFE_API_KEY?Paste TypeSafe key: " && echo "export TYPESAFE_API_KEY=$TYPESAFE_API_KEY" >> ~/.zshrc && echo " saved"
Close and reopen Terminal, then start Claude Code in an empty folder. Everything below happens in that folder.
Prefer not to handle a token at all? Apify has an official Claude Code plugin that signs you in through the browser instead. Their docs walk through it under Agents > Plugins. I used the token route, so that's the one this guide covers.
Step 2: Pull the reels
Paste this into Claude Code, with your own handles:
Build me a competitor content tracker in this folder. Step 1: pull the data.
Use Apify's Instagram Reel Scraper (actor apify/instagram-reel-scraper) through the Apify API. My token is in the APIFY_TOKEN environment variable. Never print it.
Competitors: @handle1, @handle2, @handle3
Settings:
- Reels from the last 30 days, up to 50 per account
- skipPinnedPosts: true
- skipTrialReels: true
Write a small script that starts the run, waits for it to finish, and saves the results to raw.json. Record how long it took and what it cost in run.json. Then tell me how many reels you got per account and the date range for each.
Two settings in there matter more than they look.
Skip pinned posts. Pinned reels are usually old hits. They're not this month's signal.
Skip trial reels. This is the one that quietly breaks everything. Instagram lets creators test a video on non-followers before showing it to their audience, and those tests get tiny view counts. Leave them in and they drag the account's median through the floor, so normal posts start looking like breakouts. On my first run, one creator's median came out at 3,000 plays. With trial reels skipped it was 133,000. Same account, same month.
If an account comes back with 50 reels squeezed into a few days, that's your sign something is off. Check the settings before you trust the numbers.
Step 3: Find the outliers
The rule is simple: a reel is an outlier when it gets three times its creator's own median plays.
Not raw views. A creator with five million followers will beat a creator with fifty thousand every time, and that tells you nothing. Comparing each reel to its own account tells you which ideas broke out.
Step 2: find the outliers in raw.json.
For each account:
- Ignore reels posted in the last 3 days. They haven't finished collecting plays.
- Work out the median videoPlayCount.
- Flag every reel with at least 3x that median.
- If a reel shows another username (a collab), count it toward the account I asked for.
Save the results to analysis.json. Then show me a table per account: reels pulled, median plays, outliers, and their best reel with its multiple. List every outlier with its caption, plays, multiple and link.
Read the list before going further. You'll start seeing patterns yourself, and that's the point.
Step 4: Let Jev judge every reel
This is the part that changes how fast you can do this.
Jev is a model from TypeSafe AI that can't write a single sentence. You give it some context and a set of questions where you define the possible answers, and it hands back the answer plus how confident it is. It's built for judgment, not conversation, so it's fast, very cheap, and it doesn't wander off.
Jev has three kinds of question:
| Type | You define | You get |
|---|---|---|
| Yes/no (TypeSafe calls it "noul") | The question | A probability, e.g. 0.93 |
| Choice | A list of named options | The pick, plus a probability for each option |
| Score | A scale, lowest to highest | A score, plus a probability for each level |
What Jev actually sees
Jev never watches the video. It reads a small packet of text about each reel and picks from answers you wrote. Here's a real one from my run:
account: @mavgpt
caption: "Comment "Plugin" and I'll send you 200 more codes..."
on-screen text: "Secret Codes for ChatGPT"
cover: "selfie talking head, caption-box hook"
duration: 30 seconds
That's the whole input. The on-screen text and cover lines come from Claude looking at the cover image, because Jev can only read text. Then Jev answers every question in one go.
And here's what came back for a different reel, Dan Martell's "when to quit your 9-5", which did 18 times his normal views:
format: stage / live Q&A clip 0.99
hook: question 1.00
cta: none 1.00
remixable: "adaptable with work" confidence 0.47
Every answer is one of the options you defined, with a probability attached. No sentences, nothing to tidy up, and the same reel gives the same answer every time.
The questions I asked
| Question | Type | The options | Across my 185 reels |
|---|---|---|---|
| Format | Choice | talking head + text hook / numbered daily series / stage or live Q&A / whiteboard or ranking / screen-record demo / b-roll + voiceover / reaction or skit | 92 talking heads, 37 stage clips, 29 daily series |
| Hook | Choice | secret / contrarian / question / how-to / result or money claim / story or series | Questions were the most common opener (46) |
| Call to action | Choice | comment a keyword / follow / link in bio / none | 89 asked for a comment keyword, 94 asked for nothing |
| About an AI tool? | Yes/no | 69 yes | |
| Remixable for my business | Score | not relevant / loosely related / adaptable / directly remixable | Average 2.3 of 3 |
| How specific is the promise | Score | vague / somewhat / specific / very specific | Average 1.8 of 3 |
| Still relevant in six months? | Yes/no | 87 yes | |
| Relies on the creator's fame? | Yes/no | 43 yes |
Once every reel has these labels, the insights are just counting. If Jev called 29 reels "numbered daily series" and 8 of them were outliers, that format has a 28% hit rate.
Why not just ask Claude?
You could. Claude would do a fine job on ten reels. On hundreds, Jev wins on the things that matter for a tracker:
- Speed. My 1,480 judgments took 2.2 seconds.
- Cost. Under one cent for the lot.
- Consistency. It can only answer with your options, and the same input gets the same answer.
- Honesty about doubt. Every answer carries a confidence score. In my run Jev flagged eight of its own calls as unsure, all on "Day 444" title cards that say almost nothing on screen. You can set a rule, say "trust anything above 0.8, show me the rest", and only look at the edge cases.
Claude does the parts Jev can't: reading images, writing the prompts and scripts, and turning the winners into your next videos. Jev makes the hundreds of small calls in between.
Run it
Step 3: judge every reel with Jev.
First, download each reel's cover image (displayUrl) and look at it. For each one, write down any text on screen and a one-line description of the shot, e.g. "selfie talking head in a bedroom" or "speaker on stage with audience".
Then call Jev for every reel through the TypeSafe API:
POST https://api.typesafe.ai/v1/systemone
Authorization: Bearer from the TYPESAFE_API_KEY environment variable (never print it)
model: jev-latest
(Yes/no questions use the type "noul". Choice and score questions use "choice" and "score".)
State for each reel: the account, caption, on-screen text, shot description, duration, plays, the account's median and the multiple.
Ask these questions in one call per reel:
- format (choice): talking head + text hook / numbered daily series / stage or podcast clip / whiteboard or ranking / screen-record demo / b-roll + voiceover / reaction or skit
- hook (choice): secret or insider / contrarian / question / how-to / result or money claim / story or series
- cta (choice): comment a keyword / follow / link in bio / none
- remixable (score): not relevant / loosely related / adaptable with work / directly remixable, for [describe your business and audience in one line]
- specific (score): vague / somewhat specific / specific / very specific with numbers or named tools
- evergreen (yes/no): would this still work in six months?
Run the calls in parallel. Save every answer to judged.json, and count the total judgments, how long they took and what they cost.
Then tell me, for the outliers only: which formats, hooks and calls to action win, and which reels Jev rates most remixable for me.
Using Vercel instead? Swap the endpoint for https://ai-gateway.vercel.sh/v1/evaluate, use your AI_GATEWAY_API_KEY, set the model to typesafe-ai/jev, and call yes/no questions "boolean". Everything else is the same.
Write the remixable question for your own business. That one line is what turns a list of other people's wins into a list of your next ideas.
Three things to know before you trust it
- It's judging a description, not the video. Format and hook come from the caption and the cover frame. Anything that happens after the first second, like what's actually said or how fast it's cut, is invisible to it. Want sharper hook calls? Turn on transcripts in the Apify scraper (it costs a little extra per minute of audio) and include them in the state.
- The categories are yours. Jev can only pick from the options you give it. If a winning format isn't on your list, it gets squeezed into the closest one. I didn't give it a "podcast clip" option, so podcast clips bounced between "stage clip" and "talking head". Read a handful of your outliers first and write options that fit what you see. That's the real skill here.
- Trust the confidence scores. I worried that showing Jev each reel's view count would bias it, so I tested it: same 185 reels, run again with the numbers hidden. 59 of the 1,480 labels changed, about 4%. Not one winner's format or call to action moved, and no hit rate shifted by more than two points. And every format, hook and specificity label that changed was one Jev had already marked as unsure, under 0.6 confidence. The labels it was confident about held.
So including the view numbers is fine. More useful: when Jev's confidence on an answer is under 0.6, treat it as a "look at this yourself" flag rather than a verdict. That's where every wobble in my test came from.
Step 5: Turn the winners into your scripts
Jev can't write, so this is Claude's job.
Step 4: take the 5 outliers Jev rated most remixable for me. For each one, write a remix brief:
- What made the original work, in one line (format, hook, call to action)
- My version: the hook line, three beats for the body, and the call to action
- What to keep the same and what to change so it's mine, not a copy
Keep my voice: [paste two or three lines you've written so it can match you].
Remix the idea, never the video. The format, the hook structure and the call to action are fair game. Their words and footage are theirs.
What I found
Here's my run, so you know what to expect:
| Accounts | 5 |
| Reels pulled | 185 |
| Plays read | 54.7 million |
| Outliers (3x+ their own median) | 23 |
| Jev judgments | 1,480 (8 per reel) |
| Jev speed and cost | 2.2 seconds, under one cent |
| Whole run | 109 seconds, 49 cents |
The useful part isn't which format wins most often. It's which format wins most often for how often it's used. Jev labelled every reel, winners and losers, so I could work out a hit rate: the share of each kind of reel that became an outlier.
- Numbered daily series ("Day 444") had a 28% hit rate. The most common format, a selfie talking head with a text hook, made the most winners but only hit 10% of the time. Volume isn't the same as a good bet.
- Asking people to comment a keyword roughly doubled the hit rate: 17% of those reels broke out, against 9% with no call to action. 15 of the 23 winners used it.
- Story and contrarian hooks beat questions and how-tos: 24% and 15%, against 7% and 8%.
- One creator reposted the same reel three times, and all three were outliers. If something works, post it again.
- Jev knew when it was guessing. It flagged eight of its own hook calls as low confidence, all on "Day N" title cards that don't say much on screen. When I re-ran everything with the view numbers hidden, the labels that changed were exactly the ones it had flagged as unsure.
Your competitors will look different. That's the point of running it.
Make it weekly
One run is a snapshot. The value is in the trend. Once your first run looks right, ask Claude Code:
Turn this into a weekly tracker. Every Monday, pull the last 7 days for the same accounts, judge the new reels with Jev, and write me a one-page summary: new outliers, what's changed since last week, and the top 3 ideas to remix. Keep a running history so I can see trends over time.
Claude Code can schedule this to run on its own. Ask it to set up the schedule, and check the first automated run before you rely on it.
What it costs
| Piece | Cost |
|---|---|
| Apify | About $2.60 per 1,000 reels on the free plan. $5 of free credit a month |
| Jev | Under a cent for my 1,480 judgments |
| Claude Code | Your existing Claude plan |
Where the DIY version stops
This tracker tells you what's working for other people. That's a big step up from guessing.
But it's still a tool you have to remember to run and read. The version that actually changes a business runs on its own, knows what your company sells and who it sells to, and doesn't stop at content. The same pattern, pull the data, let a judge model sort it, let Claude write the next move, works on sales calls, support tickets, proposals and inboxes.
That's what we build at Whitehorse. If you get this running and want the version that runs your whole operation, reply to the welcome email with audit and I'll tell you how we'd start.
Start here
- Save your two keys.
- Pick three competitors.
- Paste the Step 2 prompt and check the numbers make sense.
That's the first twenty minutes. Everything after it is just reading what your competitors already proved.
Built by Alex Sidhu, Whitehorse AI.