← All case files

Case file 006Competitor intelligence

The problem

“I spend hours scrolling competitors’ reels. I see individual videos, not patterns.”

Solved

For
Content creators who study their niche
Built
NicheLens: scraper + transcriber + analyzer + SaaS dashboard
Stack
Python (Apify, Groq) · Next.js · Hono · Inngest · Neon
Runs for
About $5 a month
Before: rival reels until midnight, and nothing written down3D pixel film · made by me

01 · The pain

Eight reels. One reel at a time.

You open competitor accounts and scroll. One reel, then another. Notes in your phone. Did this one have hook-first delivery or demo-first? Was it a contrarian claim or a data shock? You don't have a system, so you don't know if you're seeing the pattern or just the algorithm that day.

Reels logged

0 / 8

Time spent

0min

Patterns found

—

02 · The fix

One command. A dashboard of patterns.

A live lab with sample reels: import, score, break into hooks and beats, filter by relevance. This is what the real dashboard shows — every time you run the scraper, a fresh snapshot of what’s working in your niche.

03 · How it works

Three stages, and bilingual analysis that holds meaning.

  1. Scrape the competitor accounts

    Apify walks the Instagram reels from 3–7 competitors you choose. For each reel it saves the URL, caption, view count, and a link to the video.

  2. Transcribe with Groq

    Each video is sent to Groq's Whisper API for transcription. If a reel is music-only, the caption alone becomes the 'transcript' — nothing is dropped.

  3. Claude scores and breaks down

    In one session, Claude reads every transcript and scores it 1–10 for relevance to your niche. Keepers (≥7) are split into Hook, Beats, and CTA with bilingual notes (English + Roman Urdu).

The hard part

Understanding what works, in two languages.

A reel’s hook, beats, and CTA are structural. “Problem-promise” means something: name the pain, promise the fix. That meaning has to survive translation to Roman Urdu without losing the idea. If the original is in Hindi or Urdu, the reverse: meaning must survive translation to English.

So every reel gets two texts: one clear English (verbatim if source is English, faithful translation if not) and one in Roman Urdu (romanized meaning if source is Urdu, natural translation if source is English). The bilingual treatment is what lets the dashboard speak to creators in their own language.

English reel

Hook: “Most people quit because they’re impatient.”

Roman Urdu

Hook: “Zyada tar log isiliye chor dete hain kyun ke impatience unkay ander hoti hai.”

Urdu reel

Beat: “کتنی دفعہ غلطی سے سیکھو”

English

Beat: “Learn by failing, again and again.”

04 · What changed

Scroll time → research time. Pattern spotting replaced guessing.

Reels tracked per run
—

Metric to confirm · typically 3–5 per account

Analysis time
—

Metric to confirm · per-session Claude, zero extra cost

Weeks of manual scroll
—

Metric to confirm · condensed into one dashboard

Hook styles tracked: problem-promise · contrarian-claim · list-tease · demo-first · story-frame · data-shock · identity-call · other