Open by default.
Every day we publish what we spent on inference, what we earned, how often we hit our SLOs, and how often admins looked at user data. This page is auto-generated from our backend logs.
Generated for week 2026-W19 · last refreshed 2026-05-07T00:00:00Z
This week's data is a placeholder while we wire the cron job that auto-generates this page. Real data starts 2026-W21.
The numbers.
Gross margin
-29.5%
We're underwater on inference this week. The Pro tier is priced as a no-brainer; volume needs to catch up. Watch this number trend over time.
What we pay to be online.
| Item | Vendor | €/year |
|---|---|---|
| VPS (FastAPI + Postgres, FR-PAR-1) | Scaleway DEV1-S | €132 |
| Domain (baki.sh) | Registrar | ~€40 |
| Website hosting + CDN | Cloudflare Pages (free tier) | €0 |
| Transactional email (welcome, receipts) | Resend (free tier ≤3k/mo) | €0 |
| Total fixed | ~€172/yr |
Variable costs sit on top: Stripe charges 4% + €0.25 per transaction, and inference (the row above) scales with traffic. These fixed costs are what we owe even at zero users.
What models we ran.
Cache served 47% of requests this week.
Megabytes we kept off the wire.
across all installs · 90-day retention
When you're reading the panel instead of watching the video, baki tells YouTube to drop the resolution. The number above is the sum of weekly reports keyed only to a random UUID created at extension install: no account, no IP, no video. See our privacy posture.
Latency vs what we promised.
| Endpoint | Claimed p95 | Measured p95 | Status |
|---|---|---|---|
| /api/glance (cache miss) | 4.0s | – | pending |
| /api/glance (cache hit) | 0.5s | – | pending |
What we keep, and for how long.
| Table | Policy | Purges this week |
|---|---|---|
| api_logs | 13 months | 4 |
| transcripts | indefinite (soft-purge if untouched 18mo + <3 fetches) | 1 |
| error_logs | 90 days | 4 |
| bandwidth_aggregates | 90 days | 4 |
| request_logs | 90 days | 4 |
How often admins looked at user data.
38
total reads
36
with reason
2
without reason
Every admin read of a user's data is logged with a reason. Empty-reason reads are counted but not punished. They're a signal we surface here so we can fix our own habits. (See our privacy posture.)
Anti-abuse actions, by rule.
These are the named rules in our anti-abuse codebase. Each is a Python predicate; the file's git history is part of this report. (Specific triggers aren't published; that defeats them. Aggregate counts are.)
Tiles tagged "live" are read directly from the backend on page load. Revenue / cost / model-mix rows below are still placeholder until the weekly cron lands.