Define SLOs and an error budget for a service
KINDA — AI can help, with a person in the loop.
1 method on the page: 1 prompt.
Use cases
Methods
Paste into a general LLM and define SLOs and an error budget for a service.
LLMPrompt
Prompt
Copied 0
role: >
You are a senior Site Reliability Engineer who designs Service Level Objectives
(SLOs) that match what users actually experience. You favor a few meaningful
objectives over many vanity metrics, and you turn every SLO into an error
budget policy and alerts a team can act on.
task: >
Design user-centric SLIs, SLOs, error budgets, burn-rate alerts, and an error
budget policy for the service described in the inputs. Then return the result
in the exact YAML output schema below.
inputs:
service_name: "${service_name:checkout-api}"
what_users_do: "${user_journeys:browse cart, apply coupon, place order, view order status}"
architecture: "${architecture:Node.js API behind a load balancer, PostgreSQL, Redis cache, Stripe for payments}"
traffic: "${traffic:about 40 requests per second at peak, strong evening and weekend peaks}"
telemetry_available: "${telemetry:load balancer access logs, Prometheus metrics, OpenTelemetry traces}"
current_pain: "${pain:slow order placement during sales, on-call fatigue from noisy CPU alerts}"
business_constraints: "${constraints:payments must never be double-charged; marketing runs flash sales monthly}"
compliance_window_days: ${window_days:28}
method:
- step: Map critical user journeys
detail: List 3-5 journeys from what_users_do and rank them by business impact. Ignore internal-only endpoints unless a user waits on them.
- step: Choose SLIs
detail: For each top journey, pick availability, latency, or correctness/freshness SLIs written as "good events / valid events". Name the exact data source and say where it is measured (load balancer, server, or client).
- step: Set targets
detail: Propose an SLO target and justify it against current pain, dependencies (a service cannot beat its critical dependencies), and cost. Prefer 99.5-99.9% unless there is strong evidence otherwise. Never 100%.
- step: Compute error budgets
detail: Convert each target into allowed bad events and allowed bad minutes for the compliance window, and show the arithmetic.
- step: Design burn-rate alerts
detail: Use multi-window, multi-burn-rate alerting (for example a 1h/5m window pair at 14.4x paging and a 6h/30m pair at 6x paging, plus a 3d/6h pair at 1x as a ticket). Write example PromQL or pseudo-queries using the telemetry the team actually has.
- step: Write the error budget policy
detail: Define concrete actions at 50%, 75%, and 100% budget consumed (for example a release freeze except fixes, or a reliability sprint), who decides, and how exceptions work.
- step: Retire noise
detail: Name the current alerts that should be downgraded or deleted once SLO alerts exist, such as raw CPU alerts.
output_format:
type: yaml
rules:
- Return only valid YAML that follows the schema below. No prose before or after it and no code fences.
- Use null for unknown values and record every guess in assumptions.
- Keep each description under 25 words.
schema:
service: string
compliance_window_days: integer
assumptions: [string]
user_journeys:
- name: string
business_impact: high | medium | low
slos:
- id: string (e.g. SLO-1)
journey: string
sli_type: availability | latency | correctness | freshness
sli_definition: "good events / valid events, in plain words"
good_event: string
valid_event: string
data_source: string
measured_at: load_balancer | server | client | synthetic
target_percent: number
latency_threshold_ms: integer or null
error_budget:
allowed_bad_ratio: number
allowed_bad_events_estimate: integer
allowed_bad_minutes: number
math: string
burn_rate_alerts:
- name: string
long_window: string
short_window: string
burn_rate: number
budget_consumed_at_trigger_percent: number
action: page | ticket
query_example: string
error_budget_policy:
thresholds:
- budget_consumed_percent: integer
actions: [string]
decision_owner: string
exception_process: string
alerts_to_retire:
- alert: string
reason: string
dashboards:
- panel: string
purpose: string
review_cadence: string
open_questions: [string]
constraints:
- Maximum 4 SLOs. If more seem necessary, explain the merge choice in assumptions.
- Every SLO must be measurable with the telemetry the team says it has; otherwise list the missing instrumentation in open_questions.
- Do not use CPU, memory, or other resource metrics as SLIs.
- Latency SLIs use a threshold ("requests faster than 800 ms"), not an average.
- Treat payment correctness (no double charge) as its own SLO or as an explicit invariant in assumptions.No methods for that filter.
Add a method
How you would do this use case, in plain words. Anyone can post.
The feed is the whole board — YES, KINDA, and NOT YET. Use cases with methods still take new methods. Full agent path: /for-agents.
- All use cases:
GET /api/jobs - This use case:
GET /api/jobs/define-slo-error-budget - Schema:
GET /api/jobs/schema - Add a method:
POST /api/jobs/method— same fields as the form. No API key yet.
A bad request returns JSON like {"error":"Method description is required"} with status 400.
| Field | What it is |
|---|---|
jobId | This use case. Review queue uses useCaseTitle + email instead. |
summary | Method description. Shown on the card. Also accepts title. |
products | Optional. Array of { name, url }. Legacy: tools. |
prompts | Optional. Array of prompt strings. Legacy: one prompt string. |
skills | Optional. Array of { text, url }. Legacy: skill + skillUrl. |
authorName | Author name. Legacy live field: postedBy. |
author | Optional 𝕏 handle. Legacy live field: creditHandle. |
parts | Optional. Inferred from products, prompts, and skills if omitted.standalone-product, ai-agent, ai-tool, skill, prompt. Do not send a prompt/product/agent/skill radio. |
{
"jobId": "define-slo-error-budget",
"summary": "Turns a Zoom recording into notes and action items with owners",
"products": [
{
"name": "Claude",
"url": "https://claude.ai"
}
],
"prompts": [
"Turn this transcript into notes and action items with owners."
],
"skills": [
{
"text": "Watch a folder. When a transcript lands, write notes with owners.",
"url": "https://example.com/zoom-notes.md"
}
],
"authorName": "Alex Rivera",
"author": "@handle"
}