I run a small aviation SaaS ($45 MRR, 3 paying customers, 75% churn). This morning I decided to actually look at my data instead of write more code. In 45 minutes I found three silent revenue-leaking bugs. Sharing each one because they're the kind of stuff every indie SaaS has and never notices. Bug 1: cron silently returned 0 candidates for 6 weeks I had a winback cron ( /api/cron/winback ) that emails canceled subscribers at day 7, 21, 45 after they cancel. The Supabase query: const { data : subs , error } = await supabase . from ( " subscriptions " ) . select ( `user_id, status, tier, current_period_end, updated_at, created_at, ...` ) . eq ( " status " , " canceled " ) . gte ( " updated_at " , new Date ( Date . now () - 60 * 86400000 ). toISOString ()); Enter fullscreen mode Exit fullscreen mode Problem: the column is canceled_at , not updated_at . The Supabase JS client returned { error: 'column does not exist' } , the cron caught it and quietly returned an empty array.…