TestiStats — Analytics Dashboard for Video Testimonials
TestiStats tells you exactly which video testimonials are actually converting visitors into buyers — not just views, but clicks, watch depth, and downstream signups. Stop guessing which customer story resonates and start doubling down on the ones that close deals.
Difficulty
intermediate
Category
Conversion Rate Optimisation
Market Demand
High
Revenue Score
7/10
Platform
Web App
Vibe Code Friendly
⚡ YesHackathon Score
🏆 7/10
Validated by Real Pain
— seeded from real search demand
Marketers and founders are actively searching for tools that show them how their video testimonials perform — specifically which ones drive real conversions, not just passive views.
What is it?
Marketers and founders collect video testimonials but have zero visibility into which ones drive real conversion — they rely on gut feel or total view counts that mean nothing. TestiStats embeds a lightweight script on any landing page and captures per-testimonial watch depth, click-through rate, replay rate, and post-watch conversion events. An AI layer surfaces plain-English insights like 'Testimonial 3 has 78% watch completion but 0% CTA clicks — try moving it above the fold.' The dashboard aggregates data across multiple pages and A/B variants so you can run experiments with confidence. It integrates with Wistia, Loom, and YouTube embeds without touching your video hosting setup. First dollar is achievable in week 2 by signing up one agency managing client landing pages.
Why now?
Video testimonials have exploded as the #1 social proof format post-2022, yet zero analytics tools have caught up — CRO teams are flying blind on a tactic they're investing heavily in. Claude's cheap text generation now makes per-user AI insight digests economically viable at $29/month price points.
- ▸Per-video watch depth heatmap showing exact drop-off points across all visitors
- ▸Post-watch conversion tracking that ties testimonial views to signups, demo requests, or purchases
- ▸Claude-powered weekly insight digest: plain-English recommendations on which testimonials to promote, retire, or reposition
- ▸One-line embed script supporting Wistia, Loom, YouTube, and Vimeo with zero video hosting changes required
Target Audience
SaaS founders, growth marketers, and conversion agencies managing 3–20 landing pages with embedded video testimonials, typically spending $200–$2k/month on CRO tools.
Example Use Case
Maya runs a SaaS landing page with 6 video testimonials. TestiStats shows her testimonial #4 gets 91% watch depth and drives 3x more trial signups than the others. She moves it to hero position — conversions jump 22% in a week.
User Stories
- ▸As a SaaS growth marketer, I want to see which video testimonial has the highest watch-completion-to-signup rate, so that I can move it above the fold and stop wasting prime real estate on underperforming videos.
- ▸As a conversion agency managing 10 client sites, I want a single dashboard showing per-client testimonial performance, so that I can include data-backed recommendations in my monthly reports and justify my retainer.
- ▸As a founder who just added 4 new video testimonials, I want an AI-generated recommendation on which one to feature in ads, so that I can make a confident decision without waiting weeks for manual split-test results.
Done When
- ✓Tracking: done when pasting the one-line embed script causes a play event to appear in the dashboard within 60 seconds of a test video being played.
- ✓Watch depth: done when the dashboard displays a per-video heatmap bar showing drop-off percentage at each 10% interval of the video duration.
- ✓AI insight: done when the nightly cron runs and writes a plain-English recommendation (min 2 sentences, max 5) for each site with at least 50 events, visible in the dashboard.
- ✓Payment: done when a Stripe Pro checkout completes, the webhook fires, and the user's page limit immediately increases from 1 to unlimited without a page refresh.
Is it worth building?
$29/month Starter x 40 users + $79/month Pro x 15 users = $2,345 MRR by month 3.
Unit Economics
CAC: ~$25 via Reddit/IndieHackers organic DMs. LTV: $696 (24 months at $29/month Starter). Payback: 1 month. Gross margin: ~88% (hosting + API costs ~$3.50/user/month).
Business Model
SaaS subscription
Monetization Path
Free tier: 1 page, 3 videos, 30-day data. Paid Starter $29/month: 5 pages, unlimited videos. Pro $79/month: unlimited pages, AI insights, weekly email digest, A/B split tracking. Agency $199/month: client sub-accounts, white-label reports.
Revenue Timeline
First dollar: end of week 3 (one paid beta). $1k MRR: month 3. $5k MRR: month 7 via agency channel.
Estimated Monthly Cost
Supabase Pro: $25, Vercel Pro: $20, Claude API (~500 insight runs): $15, Resend: $10, Sentry: $0 (free tier). Total: ~$70/month.
Profit Potential
Full-time viable at $5k MRR (~50 Pro users). Agency plan alone could hit this with 25 clients.
Scalability
High — agency white-label sub-accounts, API access for enterprise, Slack digest integration, multi-seat team plans.
Success Metrics
Week 1: 50 signups, 10 scripts installed on real pages. Month 2: 85% of paid users still active, at least 3 agency plan upgrades.
Launch & Validation Plan
DM 20 SaaS founders in IndieHackers and LinkedIn who post about CRO. Offer free 60-day Pro access in exchange for a 20-min feedback call. Build a no-code Framer landing page first. Only write code after 5 people say 'I'd pay for this.'
Customer Acquisition Strategy
First customer: post in r/entrepreneur and r/SaaS with a 'Show HN: I built analytics for video testimonials' thread. Then: outreach to Conversion Rate Experts community, CRO agency directories, ProductHunt launch week 4.
What's the competition?
Competition Level
Low
Similar Products
Hotjar (full-page heatmaps, not video-specific), Wistia Analytics (only for Wistia-hosted videos), VidIQ (YouTube-only, no conversion tracking) — none purpose-built for testimonial conversion analytics.
Competitive Advantage
Hotjar and FullStory show heatmaps of entire pages but have zero testimonial-specific intelligence. Wistia analytics only show data for videos hosted on Wistia. TestiStats is the only tool built specifically around the 'which testimonial converts' question, 60% cheaper than FullStory, and works across any embed source.
Regulatory Risks
Low — tracking is first-party pixel on customer's own site. GDPR: include cookie consent flag in embed script config. No PII stored; events are anonymous session IDs only.
What's the roadmap?
Feature Roadmap
V1 (launch): embed script, watch depth heatmap, conversion event tracking, Claude weekly insight, Stripe billing. V2 (month 2-3): A/B split variant tracking, Slack digest, agency sub-accounts, CSV export. V3 (month 4+): white-label reports, REST API access, Zapier integration, recommended testimonial ordering engine.
Milestone Plan
Phase 1 (Week 1-2): Supabase schema live, tracking script captures events for YouTube + Loom, basic dashboard showing per-video stats — done when 3 beta users have real data appearing. Phase 2 (Week 3): Claude insight generation wired, Stripe billing live, Resend digest email sending — done when one paying user receives their first AI email. Phase 3 (Month 2): agency sub-accounts, A/B variant tagging, ProductHunt launch — done when 3 agency accounts each managing 2+ client sites are active.
How do you build it?
Tech Stack
Next.js 14, Supabase (Postgres + Realtime), Claude API, Stripe, Vercel — build with Cursor
Suggested Frameworks
PostHog JS (event capture), Recharts (dashboard charts), Resend (email digests), Prisma ORM
Time to Ship
3 weeks
Required Skills
JavaScript tracking snippet, Next.js API routes, Supabase Realtime, Claude API for insight generation, Stripe billing.
Resources
Supabase JS docs, Intersection Observer API for watch depth, YouTube IFrame Player API, Wistia embed API, Anthropic Claude API docs.
MVP Scope
app/page.tsx (landing + demo), app/dashboard/page.tsx (analytics view), app/api/events/route.ts (tracking ingest), public/t.js (embed script), lib/db.ts (schema), components/VideoCard.tsx, components/WatchDepthChart.tsx
Core User Journey
Sign up -> get embed script -> paste on landing page -> watch events appear live -> receive first AI insight -> upgrade to Pro for unlimited pages.
Architecture Pattern
Visitor watches video -> t.js fires events to /api/events -> Supabase Postgres stores raw events -> nightly cron aggregates per-video stats -> Claude API generates weekly insight text -> Resend emails digest to user.
Data Model
User has many Sites. Site has many Videos. Video has many Events (type: play, pause, complete, cta_click, conversion). Video has one AggregatedStat. User has one Subscription.
Integration Points
Stripe for subscriptions, Resend for weekly digest emails, Claude API for insight generation, Supabase Realtime for live event feed, YouTube/Wistia/Loom embed APIs for watch depth events.
V1 Scope Boundaries
V1 excludes: team/multi-seat accounts, white-label client portals, mobile SDK, API access, Slack integration, A/B split testing, custom conversion event builder.
Success Definition
A paying stranger installs the embed script, sees their first video event appear in the dashboard within 60 seconds, and receives their first AI insight without any help from the founder.
Challenges
Distribution is the core challenge — CRO marketers already have tool fatigue. Must demonstrate ROI within the first session using pre-loaded demo data so the value is obvious before they install the script.
Avoid These Pitfalls
Don't build A/B testing in V1 — it doubles complexity and delays shipping. Add it in month 2 after seeing how users actually use watch-depth data. Don't rely on YouTube's IFrame API alone for watch depth — it only fires at 25/50/75/100% milestones. Use a polling interval (250ms) to get granular heatmap data, otherwise the core differentiator is weak.
Security Requirements
Supabase Auth with Google OAuth and magic link. RLS on all tables: users can only read their own site data. Embed script authenticates via per-site public token (not user JWT). Rate limit /api/events to 500 req/minute per site token via Upstash Redis. No PII stored in events — only anonymous session UUIDs.
Infrastructure Plan
Vercel (Next.js hosting + Edge Functions for low-latency event ingest), Supabase (Postgres + Realtime), Upstash Redis (rate limiting), GitHub Actions (CI on every PR, auto-deploy main to production), Sentry (error tracking), Vercel Analytics (performance monitoring).
Performance Targets
Event ingest API under 100ms at p95 (Edge Function). Dashboard page load under 1.5s. Handle 10k events/day per site without Supabase plan upgrade. Claude insight generation cron completes for 100 sites in under 3 minutes nightly.
Go-Live Checklist
- ☐Security audit complete: RLS policies tested with a second Supabase user confirming cross-account data is blocked.
- ☐Payment flow tested end-to-end: Stripe test mode checkout, webhook received, page limit unlocked, cancellation downgrades account.
- ☐Error tracking live: Sentry capturing both client and server errors with Slack alert on P0 errors.
- ☐Monitoring dashboard up: Vercel Analytics showing API response times and error rates.
- ☐Custom domain with SSL configured on Vercel and verified in browser.
- ☐Privacy policy published covering anonymous event collection and GDPR opt-out flag in embed script.
- ☐5 beta users signed off: each has installed the script, seen live data, and received one AI insight.
- ☐Rollback plan documented: previous Vercel deployment URL saved, Supabase point-in-time recovery tested.
- ☐Launch post drafted and scheduled for ProductHunt, r/SaaS, and IndieHackers with demo GIF attached.
First Run Experience
On first login, a demo site named 'Example SaaS Landing Page' is pre-loaded with 90 days of synthetic event data across 4 mock testimonials. User sees a populated dashboard immediately and can click 'Install on my site' to get their embed script. No empty state on day one.
How to build it, step by step
1. Define schema in lib/db.ts: Users, Sites, Videos, Events, AggregatedStats. 2. Set up Supabase project with RLS policies — events table writable by anon key, dashboard tables readable by authenticated user only. 3. Build /api/events POST route to ingest tracking events with site token auth. 4. Write public/t.js embed script using Intersection Observer + YouTube/Wistia/Loom APIs to capture watch depth at 250ms intervals. 5. Build dashboard UI with Recharts showing per-video watch depth bar, completion rate, and conversion rate. 6. Add Supabase Auth with Google OAuth. 7. Add Stripe checkout for Starter and Pro plans with webhook to update subscription status. 8. Wire Claude API in a nightly cron job (/api/cron/insights) that reads aggregated stats and writes plain-English recommendations per site. 9. Add Resend weekly digest email with top insight per site. 10. Deploy to Vercel, set up Sentry, walk full journey: install script -> fire test event -> see in dashboard -> trigger insight -> verify Stripe upgrade unlocks extra pages.
Generated
April 29, 2026
Model
Claude Haiku
Disclaimer: Ideas on this site are AI-generated and may contain inaccuracies. Revenue estimates, market demand figures, and financial projections are illustrative assumptions only — not financial advice. Do your own research before making any business or investment decisions. Technology availability, pricing, and market conditions change rapidly; always verify details independently.