Measured, not promised
The numbers we actually measured.
M3 Max, mlx-community/gemma-4-e4b-it-8bit via mlx-vlm 0.7.10, offline. Anything not yet measured is marked as pending, not guessed.
Measured
0.87s
Screen check, warm (median)
Screenshot to category over 28 real web pages, model already loaded. p95 0.96 s. Well inside the 10 s interval.
Measured
~2.0s
Roast generation
Gemma 4 text, persona voice, before it's spoken aloud.
Measured
3.7s
Model load
Paid once per session, from local cache, offline.
Measured
11.2GB
Peak memory
8-bit Gemma 4 E4B, vision + text from one load.
Measured
25/25
Clear-cut real web pages classified correctly, 0 false roasts
28 public pages captured in a headless browser, labels confirmed by a person, run through eval.py. 26/28 overall: both misses were cases labeled ambiguous. Distracted recall 11/11. Held-out 6/6 (5 fully clean).
10 scheck interval (setting)
2 checksin a row before a call-out (setting)
60 sminimum gap between roasts (setting)
Caveat, stated plainly: 25 clear-cut cases is a small set, so one miss would cost 4 points. Only web pages were tested; native desktop apps (VS Code, the terminal, native Spotify, games) are untested, and anything filed as "other" counts as working, so a native game there won't be roasted. We checked the eval can fail: moving entertainment_video or coding to the wrong side of the map turns it red.