FrameCheck - Computer Vision UI Regression Detector for Frontend Teams
Your Playwright tests pass green and your UI is completely broken — congratulations. FrameCheck runs computer vision pixel-diff plus layout structure analysis on every PR deploy preview to catch visual regressions that unit tests will never see.
Difficulty
intermediate
Category
Computer Vision
Market Demand
High
Revenue Score
7/10
Platform
Web App
Vibe Code Friendly
No
Hackathon Score
🏆 8/10
What is it?
Frontend teams using Vercel preview deployments or Netlify deploy previews have no automated visual regression layer — they rely on manual QA or expensive tools like Percy that charge per screenshot. FrameCheck integrates with GitHub Actions, captures screenshots of configured routes on each PR preview, runs OpenCV-based structural diff plus a lightweight ResNet embedding similarity check, and posts a visual diff report as a GitHub PR comment. Priced at $39/month for solo devs, $99/month for teams. Why buildable now: Playwright's screenshot API is rock solid, OpenCV Python is trivially deployable on Railway, and Vercel preview URLs are predictable enough to automate against.
Why now?
Vercel deploy previews became the default frontend workflow in 2024, creating a universal PR preview URL pattern that makes automated screenshot capture trivially scriptable for the first time.
- ▸Playwright screenshot capture on Vercel and Netlify preview URLs triggered by GitHub Actions.
- ▸OpenCV structural diff plus ResNet embedding similarity score per route.
- ▸GitHub PR comment with side-by-side diff images and regression severity badge.
- ▸Baseline management dashboard to approve or reject visual changes as new baseline.
Target Audience
Frontend developers and small engineering teams at product companies — roughly 500k teams using Vercel or Netlify with no visual regression tooling.
Example Use Case
A frontend lead at a 15-person startup merges a CSS change that breaks the checkout page on mobile — FrameCheck catches it on the PR preview before it hits main, posts a red-bordered diff image in the PR comment, and blocks the merge in 90 seconds.
User Stories
- ▸As a frontend developer, I want visual regression checks on every PR, so that I catch CSS regressions before they reach production.
- ▸As a team lead, I want a baseline approval flow, so that intentional design changes don't block PRs forever.
- ▸As a QA engineer, I want per-route diff severity scores, so that I know which regressions need immediate attention.
Done When
- ✓Screenshot capture: done when GitHub Action fires on PR open and captures screenshots of all configured routes within 60 seconds
- ✓PR comment: done when a formatted GitHub comment with side-by-side diff images appears on the PR automatically
- ✓Baseline approval: done when user clicks approve in the dashboard and the new screenshot becomes the baseline for future diffs
- ✓Stripe billing: done when user pays $99 and unlimited routes are immediately unlocked.
Is it worth building?
$99/month x 60 team plans = $5,940 MRR at month 5. Assumes 2% conversion from GitHub Actions Marketplace discovery.
Unit Economics
CAC: $20 via GitHub Marketplace organic and Reddit posts. LTV: $1,188 (12 months at $99/month). Payback: under 1 month. Gross margin: 82%.
Business Model
$39/month solo, $99/month team (5 seats), $249/month unlimited repos.
Monetization Path
Free tier (3 routes per repo), paid tier unlocks unlimited routes and historical baseline management.
Revenue Timeline
First dollar: week 3 via first team plan. $1k MRR: month 3. $5k MRR: month 7.
Estimated Monthly Cost
Railway for CV worker: $30, Supabase: $25, Vercel for dashboard: $20, Stripe fees: ~$20 at early MRR. Total: ~$95/month at launch.
Profit Potential
Full-time viable at $5k-$10k MRR with 50-100 team plan customers.
Scalability
High — can add Figma baseline comparison, multi-viewport testing, and accessibility overlay.
Success Metrics
200 GitHub Actions installs in month 1. 30 paid plans by month 2. Under 5% false positive rate on real projects.
Launch & Validation Plan
Publish GitHub Action to Marketplace with free tier, collect 50 installs, survey users on false positive rate before charging.
Customer Acquisition Strategy
First customer: post the GitHub Action to r/webdev and the Vercel Discord with a before/after PR comment screenshot — offer free team plan for 60 days to first 10 teams. Ongoing: GitHub Actions Marketplace organic, ProductHunt launch, frontend Twitter/X.
What's the competition?
Competition Level
Medium
Similar Products
Percy by BrowserStack (per-screenshot pricing, expensive), Chromatic (Storybook-only), Applitools (enterprise pricing) — FrameCheck fills the affordable, repo-agnostic visual regression gap.
Competitive Advantage
Percy charges per screenshot and requires a separate CI step — FrameCheck is a single GitHub Action with a flat monthly fee and smarter CV-based diffing.
Regulatory Risks
Low regulatory risk. Screenshots may contain user PII in staging environments — document data retention and deletion policy.
What's the roadmap?
Feature Roadmap
V1 (launch): Playwright capture, OpenCV diff, GitHub PR comments, baseline management. V2 (month 2-3): Multi-viewport testing, Slack alerts, Figma baseline import. V3 (month 4+): Accessibility overlay, flakiness detection, API access for CI systems.
Milestone Plan
Phase 1 (Week 1-2): Screenshot capture, OpenCV diff, and GitHub PR comment working end-to-end. Phase 2 (Week 3): Dashboard live, Stripe billing, GitHub Action published to Marketplace. Phase 3 (Month 2): 30 paid plans, false positive rate under 5% validated on 10 real projects.
How do you build it?
Tech Stack
Python, OpenCV, Playwright, FastAPI, Supabase, GitHub API, Stripe — build with Cursor for CV pipeline and API routes, v0 for diff report UI
Suggested Frameworks
OpenCV, Playwright (Python), ResNet via torchvision
Time to Ship
3 weeks
Required Skills
OpenCV, Playwright, FastAPI, GitHub Actions YAML, Supabase.
Resources
OpenCV Python docs, Playwright screenshot API, GitHub REST API for PR comments, torchvision ResNet docs.
MVP Scope
capture/screenshot.py (Playwright screenshot runner), cv/diff.py (OpenCV structural diff logic), cv/similarity.py (ResNet embedding comparator), api/webhook.py (GitHub webhook handler), api/comment.py (GitHub PR comment poster), app/dashboard/page.tsx (baseline management UI), lib/db/schema.ts (Supabase schema for routes and baselines), action.yml (GitHub Actions action definition), .env.example (required env vars)
Core User Journey
Add GitHub Action to repo -> open a PR -> receive diff comment in 90 seconds -> approve or reject as new baseline -> upgrade to paid when free route limit hit.
Architecture Pattern
GitHub PR opened -> Actions workflow triggered -> Playwright captures screenshots of preview URL -> screenshots sent to FastAPI -> OpenCV diff and ResNet similarity computed -> results stored in Supabase -> GitHub PR comment posted with diff images.
Data Model
Repo has many Routes. Route has many Baselines. Baseline has many Screenshots. Screenshot has one DiffResult. DiffResult has one PRComment.
Integration Points
GitHub API for PR comments and webhook events, Playwright for screenshot capture, OpenCV for structural diff, torchvision ResNet for embedding similarity, Supabase for baseline storage, Stripe for billing, Railway for CV worker hosting.
V1 Scope Boundaries
V1 excludes: Figma baseline import, mobile emulation viewports, accessibility overlay, Slack alerts, white-label.
Success Definition
A frontend team the founder has never contacted installs the GitHub Action, catches a real visual regression on a PR, and upgrades to the team plan without any onboarding help.
Challenges
False positives from font rendering and anti-aliasing differences across OS environments will frustrate users — threshold tuning per project is mandatory and must be easy.
Avoid These Pitfalls
Do not hardcode diff thresholds — every project has different tolerance for pixel variation. Do not store screenshots without a clear retention and deletion policy. Finding the first 10 paying teams will take 3x longer than the CV pipeline — budget distribution time accordingly.
Security Requirements
Supabase Auth with GitHub OAuth, RLS on all repo-scoped tables, GitHub webhook HMAC validation, screenshots stored in private Supabase Storage bucket, 30-day auto-deletion of old screenshots.
Infrastructure Plan
Railway for FastAPI and CV worker, Vercel for Next.js dashboard, Supabase for Postgres and storage, GitHub Actions for CI trigger, Sentry for error tracking — total ~$95/month at launch.
Performance Targets
Full diff cycle under 90 seconds from PR open, API response under 500ms, dashboard loads under 2s, handles 200 PRs/day across all customers at launch.
Go-Live Checklist
- ☐Security audit complete
- ☐Stripe billing tested end-to-end
- ☐Sentry error tracking live
- ☐Railway uptime monitoring configured
- ☐Custom domain with SSL set up
- ☐Privacy policy and screenshot data retention policy published
- ☐5 beta frontend teams signed off
- ☐Rollback plan documented
- ☐GitHub Marketplace listing and r/webdev launch post drafted.
First Run Experience
On first run: the dashboard shows a pre-seeded demo repo with 3 routes, a baseline screenshot, and a sample diff with a red-bordered regression highlight. User can immediately browse the diff and click approve without connecting GitHub. No manual config required: demo mode runs on seeded screenshots with no GitHub token needed.
How to build it, step by step
1. Define Supabase schema for Repo, Route, Baseline, Screenshot, and DiffResult tables. 2. Build Playwright screenshot runner that accepts a URL list and outputs PNG files. 3. Build OpenCV structural diff function comparing baseline and PR screenshots with configurable threshold. 4. Build ResNet embedding similarity scorer using torchvision on cropped UI regions. 5. Build FastAPI endpoint that accepts screenshot upload, runs diff, and returns severity score. 6. Build GitHub PR comment poster using GitHub REST API with side-by-side diff image embeds. 7. Write action.yml GitHub Action that triggers on PR open, captures screenshots, and calls FastAPI. 8. Build Next.js baseline management dashboard showing current vs proposed screenshots with approve/reject buttons. 9. Add Stripe Checkout for $99/month team plan with webhook to unlock unlimited routes. 10. Verify: open a PR with a deliberate CSS change, confirm GitHub Actions fires, diff comment appears on the PR within 90 seconds, and the dashboard shows the new diff.
Generated
April 20, 2026
Model
claude-sonnet-4-6
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.