Usage → scroll down, most categories can be broken down per function/route. Sort by invocations and duration.
With 150 users and no AI, my money is on polling. Something like a notification badge fetching /api/notifications every 2 seconds per open tab: 150 users × 30 requests/minute × 8 hours is millions of invocations a month. AI assistants love setInterval(fetch, 2000).
Fixes:
- Supabase Realtime (or any push) instead of polling.
- If you must poll: 30-60 seconds, and pause when the tab is hidden (
document.visibilityState).
And set a spend limit in billing settings so a mistake can't surprise you again.