MRs reviewed
6
0 blocked · 0 warned
Observability tells you after the bill arrives. spendlint catches the change at code review time, joins it to your team's real historical traffic from a labeled ledger, and posts a verdict on the MR. PASS, WARN, or BLOCK.
# spendlint:label summary_endpoint def summarize(text): resp = client.messages.create( model="claude-3-haiku", max_tokens=320, ) return resp.content
# spendlint:label summary_endpoint def summarize(text): resp = client.messages.create( model="claude-3-5-sonnet", max_tokens=320, ) return resp.content
GitLab webhook fires on every MR open or update. The agent pulls diff and metadata via MCP locally, REST in production.
Gemini tags each change: model swap, retry loop added, max_tokens bumped, new or removed call site.
The novel core. Matches changed call sites to labeled history in the ledger, applies the pricing delta, returns a $/day projection.
Writes the verdict, the formula, and the assumptions back to the MR. Numbers are transparent. No magic.
| Label | Model | Calls/day | Avg in | Avg out | $/day |
|---|---|---|---|---|---|
| evalc_compile | gemini-2.5-pro | 0.5 | 219 | 314 | $0.0018 |
| evalc_synthesize_tests | gemini-2.5-pro | 0.3 | 596 | 304 | $0.0013 |
| _probe | gemini-2.5-pro | 0.2 | 1 | 1 | $0.0000 |