Best for
- Errors that currently read 'Something went wrong (500)'
- Cutting the support tickets that a better message would prevent
- Giving operators the context the log line always lacks
What you give it
- Your error messages (or the code that throws them) and who sees each
What you get back
- Every message rewritten: what happened, why it matters, what to do now
- The user/operator split done right: friendly surface, diagnostic depth
- A catalogue of your errors with codes, so support and docs can reference them
How it works
- Inventories every message with its trigger condition and audience.
- Rewrites by the three-question rule: what happened, why, what now — in the reader's vocabulary.
- Splits surfaces: the user sees guidance; the log sees codes, ids and values that diagnose.
- Assigns stable codes so docs, support and monitoring can speak about the same error.
Example
You: Rewrite the 40 error messages in our file-upload flow.
Result: 40 messages rewritten and catalogued. 'Upload failed' became 'This file is 34 MB; the limit is 25 MB — compress it or upgrade your plan.' Each has a stable code, the operator log line carries the request id and rejecting rule, and two errors turned out to be the same error with different spelling — merged.
Limits — please read
- A message cannot fix a flow that fails too often; frequency findings are reported alongside.
- Security-sensitive errors (auth, existence checks) are written deliberately vague on the surface, precise in the log — by design.
- Translated products: it writes source messages that translate well; translation is your pipeline.