CodingIdeas.ai

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

⚡ Yes

Hackathon Score

🏆 7/10

Validated by Real Pain

— seeded from real search demand

Organic Search

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.