What is this?
The Claude Developer Misery Index measures how much developers are suffering during Claude AI outages and degradations. It combines the official Anthropic status page, recent incident history, and real-time complaint volume from Bluesky to produce a single score from 0 (bliss) to 10 (apocalypse).
Status pages are notoriously slow to update. By the time it officially says "Investigating," social media has already posted fifteen "is it just me?" threads. The Misery Index captures that gap — and the uncomfortable truth about how dependent we've all become on AI to write our code.
Reddit is the primary social signal — r/ClaudeAI is where developers go to vent when things break. But Reddit blocks API access from cloud IPs, so we built a separate service that fetches Reddit data and pushes it alongside the Bluesky results. Bluesky serves as a secondary signal with a free, open API that runs from the cloud just fine.
Data sources
Anthropic Status Page — the ground truth. Provides a system-level indicator (none, minor, major, critical) and per-component status for claude.ai, the API, Claude Code, and more.
Reddit — the primary social signal. Searches r/ClaudeAI (and occasionally r/ChatGPT) for outage and degradation posts. Weighted higher than Bluesky because r/ClaudeAI has concentrated developer discussion with better signal-to-noise for outage complaints. Posts older than 24h are only included if they have 5+ comments (catches active megathreads).
Bluesky — the secondary social signal. Searches for posts containing Claude-related complaint phrases across all five categories (outage, usage, quality, policy, competition). Multi-layer filtering: exclusion patterns for past-tense and positive sentiment, a strict AI-context gate so posts about people / fictional characters / films named "Claude" get rejected, and signal tiering with target-named gates for the categories whose phrases are ambiguous in everyday English. Post volume and reply depth both contribute to the score.
The formula
The Misery Index is the sum of five components, capped at 10.
1. Status page (0–8 points)
| Indicator | Points |
|---|---|
| none | 0 — all systems operational |
| minor | +2 |
| major | +4 |
| critical | +6 |
| + per degraded component | +0.5 each (max +2) |
2. Reddit (0–5 points) — primary social signal
Active megathreads count as 5 posts each. Only counted if data is fresh (<24 hours).
| Effective posts | Points |
|---|---|
| 0 | 0 |
| 1–2 | +0.5 |
| 3–4 | +1 |
| 5–9 | +2 |
| 10–19 | +3 |
| 20–29 | +4 |
| 30+ | +5 |
3. Bluesky post volume (0–2 points) — secondary signal
Thresholds calibrated to actual Bluesky-Claude volume, which runs an order of magnitude lower than r/ClaudeAI (typically 1–5 posts/day, even a busy day rarely passes 15).
| Posts (24h) | Points |
|---|---|
| 0 | 0 |
| 1–2 | +0.5 |
| 3–7 | +1 |
| 8–14 | +1.5 |
| 15+ | +2 |
4. Bluesky reply amplifier (0–1 point)
Any replies at all count — Bluesky-Claude posts rarely get more than 1–2 replies, so even minimal engagement is a meaningful chatter signal.
| Total replies | Points |
|---|---|
| 0 | 0 |
| 1–9 | +0.5 |
| 10+ | +1 |
5. Policy spike bonus (0 / +1 / +1.5)
Combined Reddit + Bluesky policy posts in the last 24 hours. Decoupled from the category-share split so a real policy event lifts the total without distorting the per-category breakdown.
| Policy posts (24h) | Points |
|---|---|
| 0–9 | 0 |
| 10–19 | +1 |
| 20+ | +1.5 |
The status page carries the most weight because confirmed outages are the most reliable signal. Reddit is the primary social signal — r/ClaudeAI is a focused developer community where outage discussion concentrates. Active megathreads with hundreds of comments are weighted heavily. Bluesky provides supplementary coverage but with lower volume and more noise. The policy-spike bonus only fires when an Anthropic policy event (e.g. Opus removed from Pro, pricing change, paywall) generates a real surge of dedicated chatter — not for slow background grumbling.
Misery levels
How data is collected
Data is refreshed every 15 minutes automatically. The dashboard also fetches live status and incident data directly, and auto-refreshes every 5 minutes, so it stays current between data updates.
History is preserved for 7 days. Use the time toggle (24h / 3d / 7d) below the gauge to adjust what window all sections display.
Post categories
Every Reddit and Bluesky post is classified into one of five buckets so the "By Type" breakdown bar shows what kind of misery is driving the score, not just how much of it there is. The classifier picks the most-specific bucket first; vague QUALITY phrases are tried last so they can't preempt a more concrete USAGE or WEAK_OUTAGE complaint.
- Outage — service down, 5xx errors, crashes, "is down", "not working", "keeps crashing".
- Policy — Anthropic-action sentiment: "Opus removed from Pro," "Claude Code removed," "quietly locked", "behind a paywall", "gated behind", "pricing test", "rugpull". When daily policy-post volume crosses 10, a +1 (and 20 → +1.5) flat bonus is added to the total so real policy events register above the noise.
- Competition — model-comparison and defection sentiment. Triggers on defection verbs ("switched to," "moved to," "gave up on") paired with a named competitor (GPT-5, Codex, Cursor, Gemini, DeepSeek, Copilot), or on softer comparison-asking framing ("Claude or another one?", "Claude vs GPT-5", "alternatives to Claude") paired with either a competitor name or a catch-all alternative-AI token.
- Usage — rate limits, token / message / context-window caps, billing complaints: "hit my limit," "token limit," "extra usage," "burning through," "cost me $200," "charged me." Requires corroboration (2+ signals, frustration language, or community agreement via upvotes) so a single off-hand mention doesn't qualify.
- Quality — subjective regression / memory-loss complaints: "got worse," "dumber," "regressed," "lazier," "ignores instructions," "stops mid-task," "Claude forgot earlier," "compaction lost." Requires a degradation phrase paired with a model name (Claude, Opus, Sonnet, Haiku) within 60 chars to filter posts where "Claude" is itself a person's or character's name.
The score breakdown is shown in two bars. By Source (Status / Reddit / Bluesky) shows where signals come from. By Type shows the five categories above plus Status, aggregated across all social sources.
AI-context gate
A post that mentions "Claude" near a generic word like broken or got worse isn't necessarily about Claude AI — Claude is also a common given name, a video-game character, and a film/book reference. To filter these without per-post tweaks, every post must contain at least one phrase from a strict AI-context list (Anthropic-specific tokens, Claude version markers like Opus 4.7, AI/dev terminology like api / llm / coding / rate limit, competitor names, or unambiguous category-specific signals like regressed, rugpull, switched to). Posts that pass the identity check but contain no AI-discourse markers are dropped before any signal classification runs.
Source filter
Use the All Sources / Official Only toggle below the gauge to switch between the full misery score and one based solely on the official Anthropic status page. In "Official Only" mode, the social chatter cards (Reddit and Bluesky) are hidden entirely and the breakdown shows only the status page score. The status card expands to full width for a cleaner layout focused on confirmed outage data.
RSS feeds
Two RSS feeds are available, matching the source filter modes. Both update every 15 minutes and include recent incidents alongside the current score.
- All Sources — full misery score including social chatter
- Official Only — score based on Anthropic status page only
The RSS button in the header automatically switches between feeds based on your current source filter selection.
Limitations
This is a fun side project, not an SLA monitor. Keyword matching is imperfect — some posts are about general slowness rather than outages, and some genuine complaints use different phrasing. The 15-minute polling interval means short blips might be missed entirely.
The index also doesn't distinguish between "Claude is down for everyone" and "Claude is slow for some users." Both generate social posts, but the severity is very different. Use the official status page for actual incident tracking.
Source code
The full source is on GitHub. The data pipeline runs automatically with no external infrastructure.