SnapFeed
From messy feedback chains to a 60-second visual fix loop
/ Overview
Visual-feedback SaaS for agencies and teams — the client clicks a button on the live site, paints a circle, hits send, and your team gets a structured bug ticket. No login. No download. Under a minute, every time.
See it live/ Project Details
Category: AI SaaS · own product · agency tools
Engagement: In-house product — CraftWeb Labs
Role: Full-stack · product · AI
Timeline: 2025–2026
Live: snapfeed.app
/ Problem
Every agency runs the same broken feedback loop — a vague Slack DM, an email three days later, "the button thing" reverse-engineered into a Jira ticket. Competitors charge $80–$200 per seat with enterprise onboarding. Small agencies kept emailing screenshots. Somebody had to ship the obvious thing.
/ TL;DR
23 edge fns
Supabase Deno Edge Functions covering auth, billing, AI, exports, webhooks.
$19/mo flat
Whole-team pricing, no per-seat fees. Sustainable margin via batched AI calls.
~30 KB widget
Embeddable IIFE bundle (gzip), Shadow DOM scoped, runs on any host site.
2 apps
Astro marketing + React dashboard, one domain via Caddy path-based routing.



/ Vision
Frictionless for the client. Structured for the team. Flat pricing for the agency. Three principles that survive every product decision.
/ Principles
Frictionless for the client
No login. No account. No download. Click the floating button, paint, hit send.
Structured for the team
Every piece of feedback arrives with screenshot, annotated layer, console errors, viewport, URL, user agent. AI categorises and suggests severity.
Flat pricing for the agency
One price for the whole team, every project, every client. No per-seat pricing on principle.
/ Engineering challenges
Two apps on one domain. Embeddable widget in hostile CSPs. Browser-native video without a desktop app. AI that doesn't kill unit economics. Every challenge below ships in production.
/ 01 — 05
01 — Two apps, one domain, zero auth bleed
Marketing public, dashboard authenticated, both on the same domain. Fix: Caddy path-based routing (/app/* → React SPA), separate Supabase Auth storageKey, cookies SameSite=Strict.
02 — Embeddable widget on hostile sites
Sites with strict CSP, Tailwind reset, !important everywhere. Fix: Shadow DOM scoping for the entire widget UI tree. ~30 KB gzip, no external CSS, deferred init.
03 — Browser-native video without a download
navigator.mediaDevices.getDisplayMedia() in-page. Local IndexedDB buffer + chunked upload to Supabase Storage with resumable token recovery. Graceful screenshot fallback on Safari iOS.
04 — AI categorisation at $19/mo flat
Three layers: (1) structured outputs with JSON schema, (2) batch up to 10 per call, (3) smart trigger (AI only on length threshold or video). AI cost per active customer stays under $1/mo.
05 — Realtime dashboard for project teams
Supabase Realtime channels scoped per project. TanStack Query for optimistic updates. Conflicts via Postgres INSERT ... ON CONFLICT + updated_at guard.

/ Stack
Astro 5 marketing, React 18 dashboard, Supabase all the way down, Gemini 2.5 Flash for the AI pass. Replaces 5 vendors with one bill.
/ Tech
Astro 5 (SSG + content collections)
Marketing site — blog as MDX, type-safe frontmatter, static = zero runtime cost.
React 18 + Vite + TanStack Query
Dashboard — SPA where it matters. Vite HMR, TanStack cache + optimistic updates.
Tailwind + shadcn/ui
Same primitives on both apps. shadcn = owned code in packages/ui.
Supabase (Auth + Postgres + Realtime + Storage)
Replaces 5 vendors with one bill. Deno Edge Functions = no cold starts.
Google Gemini 2.5 Flash
Structured outputs, low per-call cost. Pricing math works at $19/mo.
Stripe + Caddy + Docker on Hetzner
Subscriptions webhook-driven, Caddy path-based + Let's Encrypt, one bash script deploy.
/ Results
Live in production with active Stripe subscriptions, installable PWA, 12+ build-in-public posts. Devs open one card and ship the fix.
/ Numbers
Production
Live on snapfeed.app with active Stripe subscriptions.
23 functions
Supabase Edge Functions in Deno covering auth, billing, AI, exports, webhooks.
12+ posts
Build-in-public marketing blog with MDX content collections.
PWA
Installable dashboard, offline queue, works on phone and laptop.










