Non-functional requirements (NFRs) are the targets your tests pass or fail against. Most teams either copy a generic template (“P95 < 200 ms, error rate < 0.1%”) or skip them entirely. Both miss the point.
What NFRs are for
NFRs are not a wishlist. They’re the contract between your last good run and your next deploy. If you set them too tight, every release fails and the team starts ignoring the report. If you set them too loose, real regressions sneak through.
The honest way to set them
- Run a baseline. A clean L2 or L3 against your current production. Read the actual P95, average, error rate, slowest page.
- Add headroom. Set the threshold at roughly 1.3× the baseline P95. If your baseline P95 is 800 ms, set the threshold at 1.0 second — gives normal day-to-day jitter room without hiding genuine regressions.
- Set error rate near zero, not at zero. 0.5% is a sensible default. Zero would fail on transient network errors that aren’t your fault.
- Per-page thresholds for the slow ones. If you have a single endpoint that’s intrinsically slow (search, complex aggregation), give it its own number rather than dragging the whole-site number up.
What we see in the wild
Most AI-built sites we scan have one of two NFR shapes:
Aspirational. “P95 < 100 ms, error rate < 0.001%, slowest page < 500 ms.” Set when the team thought this was a static site. Reality: dynamic pages, third-party trackers, payment iframes — first scan after launch fails everything. Demoralising.
Absent. No NFRs set. Every report is “passed”, which sounds good but means you’ve turned off the alarm.
How Site Check uses your NFRs
Each L2/L3 cert checks the run against the NFRs you set in /admin/settings. If any threshold is breached, the cert verdict is gated — even a 95-score performance run won’t get a green badge if it failed the team’s own bar. This is how you keep buyers honest.
Worked example
E-commerce homepage, baseline 600 ms P95 over 18 pages. We’d set:
- Whole-site P95 < 800 ms
- Error rate < 0.5%
- Slowest page < 2 s
- /search P95 < 1.5 s (it’s harder; give it room)
- /checkout error rate < 0.1% (this one matters)
Adjust month by month as the site changes. NFRs aren’t set-and-forget; they’re a tracked artefact like a release plan.
Discuss your specific case in the Reading results Community board.