We stopped scheduling a two-hour SLO workshop for every new service and replaced it with a self-serve template that gets a defensible target in 20 minutes.

Setting an SLO used to mean booking a room with six people for two hours to argue about a number nobody had data for yet. We built a self-serve path instead.

Start with a template query, not a blank page

Every new service gets a starter HelixQL query that computes what its SLI would have been over the last 30 days, using traffic that already exists. Nobody has to invent a target from nothing — they see a real historical number first and adjust from there.

from traces
| where service == "new-service" and span.kind == "server"
| extend good = duration < 500ms and status_code < 500
| summarize good_ratio = avg(good) over(last 30d)

Publish a default, let teams override with reasons

We set a sane organizational default — 99.5% availability, 500ms p95 latency — as the starting SLO for anything without a stated business reason to differ. Teams that want a tighter or looser target write one paragraph explaining why, attached to the SLO definition. This removed the meeting entirely for about 70% of new services; only the genuinely unusual ones need a discussion.

Review, don't relitigate, at 90 days

Instead of a live workshop, the 90-day review is a written comment thread on the SLO doc: has the target been consistently missed, consistently trivial to hit, or about right? Two of the three outcomes require a change; the third requires nothing, which is most of the time.

Keep a human escape hatch for the genuinely unusual

A handful of services really do need the room full of people — a payments-adjacent service with regulatory latency requirements, for instance, isn't well served by a generic default. The self-serve path has an explicit "this doesn't fit" button that books a proper workshop, and using it isn't treated as a failure of the async process, just an acknowledgment that some SLOs are genuinely more complicated than a template can handle.

  • Compute a starter SLI value from real historical traffic before setting any target.
  • Publish a sane organizational default and require a written reason to deviate.
  • Replace live SLO workshops with an async written review at 90 days.
  • Only escalate to a meeting when the async review can't reach a decision.
  • Keep an explicit escape hatch to a real workshop for genuinely unusual services.