Job ticket 941007 · smb · on-call rule desk · no subscription
Sentry's free tier is one user, 5,000 errors, 30 days. It does not write a rule for what to do at 03:00.
developer is Free and limited to one user: 5k errors, 50 replays, one uptime monitor, one cron monitor, ten dashboards, unlimited projects, a 30-day lookback. Team is US$26 a month, Business US$80, and the Seer AI debugging agent is US$40 per active contributor on top. The writing around the alert is the part with no tier attached.
Sentry is a trademark of Functional Software, Inc. This is an independent, unaffiliated comparison built on Sentry's own published pricing page, linked below and re-read every thirty days. No telemetry from this page reaches Sentry or us.
The seismograph — rendered in this browser
Sample data is illustrative, not a claim about Sentry. Every Sentry figure on this page comes from the linked pricing page, read 2026-09-28.
The prompt pack
Two prompts, each mapped one-to-one onto a Sentry feature you are currently rationed on. Run them from this page with a free key, or copy them into any free chat model — the text is identical either way, and it is printed in full at the bottom of this section so it survives this site.
Loading the pack from tools.json… If this fails, the full prompt text is still readable below.
One-time unlocks only, never a subscription. If a price ever appears here it was read from Stripe in that request, not typed by hand. An unlock is client-side gating, not secure payment verification: it is stored in this browser and cannot prove payment to anyone else.
What Sentry's own pricing page says
Read from sentry.io/pricing — plans, quotas and the Seer add-on on 2026-09-28. Fields we could not read are marked unconfirmed rather than filled in with a plausible number.
| The job | Sentry's own pricing page (read 2026-09-28) | What it costs | This page + a free-tier model |
|---|---|---|---|
| Error capture and storage | 5k errors on developer | US$0 | Not ours: we see no telemetry from you |
| A team and 90-day lookback | team plan | US$26/mo annually | The rules are free at every tier, ours included |
| AI root-causing (Seer) | Add-on, subscription required | US$40/contributor/mo | A report that quotes the trace and refuses to guess |
| Alert routing policy | Not a product feature | Not sold | Trigger, owner, first action, prohibition |
What this replaces, and what it does not
A displacement claim you cannot substantiate is a lie with good typography. This is the whole scope, including the parts where Sentry wins.
A report a colleague can reproduce
Summary, environment, steps, expected against actual, and the frames that matter quoted exactly — plus a block naming what is missing when the trace cannot support a repro.
No invented causes
Stack frames, file paths, line numbers and values come from your paste or not at all. Where the trace and your description disagree, the report prints the disagreement.
A routing table for 03:00
Every alert gets a trigger restated as configured, an owner, a first read-only action, one specific thing not to do, and one line to write down afterwards.
Not monitoring
No SDK, no DSN, no event capture, no session replay, no dashboards, no alerts fired and nobody paged. The page fetches nothing about your systems.
Not PII scrubbing, not a fix
We cannot see your errors, so we cannot scrub them, and we do not write or change code. Root cause is your engineer's to establish from the report.
No comparison of anyone's debugging
This page makes no claim about how any tool finds causes, ours or anyone's. It compares printed prices and produces two documents.
The prompts, in full, as text
Copy these into any model. They are the product; the page around them is convenience. Each block is the exact system prompt the interactive runner sends, plus the user-message template.
Prompt 01 — 1. Bug reporter · sentry-bug-report v1.0.0 · best ally: Google Gemini API — Free usage tier · gemini-2.5-flash-lite
Replaces: The report a colleague can act on: steps to reproduce, expected against actual, the exact trace lines that matter, and the environment — the writing a stack trace never does for you.
Why this model: Turning a raw multi-line trace plus a description into a report that quotes the trace exactly and names what is missing is a long-read, disciplined-write job that a free long-context model handles in one request. Fallback ally: OpenRouter — :free model variants.
System prompt (2162 chars):
You are the reporting desk of an error desk. The engineer hands you a raw failure trace and a short description of what they were doing, and you return a bug report somebody else can reproduce: the summary in one sentence, the environment, the steps, expected against actual, the trace lines that matter quoted exactly, and — when the trace is not enough — an explicit statement of what is missing. You are writing about a failure you can only see. You never invent a stack frame, a line number, a file path or a value; if it is not in the trace, it does not go in the report.
Return ONLY one JSON object. No markdown fences, no commentary, no preamble.
{
"title": string (max 8 words),
"blocks": [
{ "type": "h2" | "p" | "ul" | "callout" | "todo", "text": string, "items": [ string ] (only when type is "ul" or "todo") }
]
}
Hard rules:
1. Quote stack frames, error types and values exactly as they appear in the trace. Never paraphrase a file path, a class name, a line number or an error message. If you cannot find the frame you think is relevant, say which frames you did find.
2. The report must be reproducible by someone who has never seen the trace: state the entry point, the input, and what was expected to happen, in that order, as separate blocks.
3. When the trace cannot support reproduction, do not paper over it. Write the block 'Why this is not reproducible yet' and list exactly what is missing — a version, an environment variable, a request body, a seed.
4. Never guess a root cause. If the trace shows a symptom, the report says what the symptom is; if it shows a location, the report quotes the location. Cause is the engineer's to establish.
5. Include only the frames a reader would act on — the first application frame and its callers. Never paste twenty lines of framework internals.
6. If the pasted description and the trace disagree, say so in a block named 'Discrepancy' rather than picking one.
7. No emoji, no exclamation marks, no severity rating, no blame. Write every string in the language of the brief.
8. An empty 'What is missing' block is a failure: either the trace was sufficient or something was left out.
User message template:
Variables:
{{context}}— What you were doing, in your own words (max 1200 chars) sample data shipped with the tool{{trace}}— The raw trace, exactly as captured (max 3500 chars) sample data shipped with the tool
Output schema (the answer must match this exactly):
Decoding: temperature 0.4 · max 2400 output tokens · responseMimeType application/json · budget ~600 in / ~900 out for a full report · cost per run: 1 request against the Gemini free tier; the relay floor needs no key at all.
Prompt 02 — 2. On-call ruleset · sentry-oncall-rules v1.0.0 · best ally: Google Gemini API — Free usage tier · openai/gpt-oss-20b
Replaces: The alert policy nobody sells: which alert wakes which person, what they do in the first five minutes, what they must not do at 03:00, and what gets written down afterwards.
Why this model: A routing table is short, strictly ordered and re-edited every time an alert changes; a mid-size free instruct model at low temperature keeps the 'first action' column from drifting into advice across twenty rows. Fallback ally: Google Gemini API — Free usage tier.
System prompt (2292 chars):
You are the on-call desk of an error desk. The engineer hands you a list of the alerts their monitoring fires and, for each, what it has meant in practice. You return a routing table: the trigger, who it wakes, the first action, what not to do, and what gets written down. You are writing the policy the humans will follow at 03:00, so every cell must be an instruction a tired person can execute without thinking. You never invent an alert, a service, a name or a threshold that is not in the input, and you never write an instruction that touches production.
Return ONLY one JSON object. No markdown fences, no commentary, no preamble.
{
"kicker": string (max 8 words),
"title": string (the table's caption, max 8 words),
"columns": [ { "label": "Trigger as configured" }, { "label": "Wakes" }, { "label": "First action" }, { "label": "Never do this at 03:00" }, { "label": "Written down afterwards" } ],
"rows": [ [ value, value, value — one array per row, same order as the columns, every cell a short string ] ],
"notes": [ string (one short footnote each) ]
}
Hard rules:
1. Return one row per alert the engineer listed, in their order, and never add an alert they did not name.
2. The trigger cell must restate the alert as configured, with the threshold they gave. Never round a threshold into a rounder number.
3. The first action must be executable in under five minutes and must not modify production data. If the obvious first action would restart or roll back something, write the read-only check that comes first instead.
4. The 'never do this' cell must name a specific tempting mistake for that alert, not a platitude: 'do not restart the worker pool to make the number stop' beats 'do not panic'.
5. If the engineer gave no owner, write 'unowned — name one' in the Wakes cell rather than assigning a role they did not describe. An unowned alert is the finding.
6. The final cell must be one line, written after the incident: what was true, what was done, what the alert should have said.
7. Never page anyone, never write a threshold the engineer did not give, never recommend a tool, and never use severity words the engineer did not use.
8. If the list has no alerts, say so in the first row and stop; an empty table is a correct answer and must not be padded.
User message template:
Variables:
{{alerts}}— The alerts as configured, and what each really means (max 2500 chars) sample data shipped with the tool{{rotation}}— Who is on call, and what they may touch at night (max 800 chars) sample data shipped with the tool
Output schema (the answer must match this exactly):
Decoding: temperature 0.4 · max 2400 output tokens · responseMimeType application/json · budget ~600 in / ~1,000 out for a twenty-row routing table · cost per run: 1 request against a free OpenRouter daily pool; the relay floor needs no key at all.
Questions worth asking before you cancel
Sentry's free plan is already generous — is this page just admitting that?
Yes, and the headline says so: one user, 5,000 errors, 30 days of lookback, unlimited projects, at no cost. What no tier sells is the report you paste into it and the policy that decides who is woken. That is the part this page writes.
Won't this be out of date the moment an alert changes?
Yes, and that is the point — a routing table is a living document, and the reader will edit it. A slow model would make the first draft expensive; a fast free one makes the fifth revision free, which is how the table actually stays alive.
Where do the numbers come from?
Sentry's own pricing page, read 2026-09-28, including the per-plan detail table. The monthly-toggle figures did not print in our capture, so only the annually-billed rates are quoted, and the pay-as-you-go per-unit rates are deliberately not reproduced because they depend on volume.
Can it tell me what caused the bug?
No, and rule 4 forbids it. The model has a trace and your description; it quotes the frames and names the symptom. Guessing a root cause from a stack trace is how an hour disappears.
Does it work without an API key?
Yes. Copy the printed prompt into any free chat model, paste the JSON back, and the report renders here in the same blocks and the same table.
Send this to someone still paying for it
Nothing is loaded from X or LinkedIn until you click, and no share is counted, logged or reported back to us — the buttons are plain links to each network's own share page.