Scoring System¶
FAT Agent uses a weighted scoring system where each core module contributes to the overall site score, and conditional modules report supplementary scores.
Overall Score Calculation¶
The overall score is a weighted average of the four core module scores:
| Category | Weight | Max Score |
|---|---|---|
| SEO | 30% | 100 |
| Security | 25% | 100 |
| Accessibility | 30% | 100 |
| Performance | 15% | 100 |
Grade Thresholds¶
| Grade | Score Range | Meaning |
|---|---|---|
| A | 90 -- 100 | Excellent. Minor improvements only. |
| B | 80 -- 89 | Good. A few areas to address. |
| C | 70 -- 79 | Average. Several issues to fix. |
| D | 60 -- 69 | Below average. Significant issues. |
| F | 0 -- 59 | Failing. Critical issues present. |
Per-Module Scoring¶
Each module starts at 100 and deducts points for issues found. Deductions are defined per module and are documented on each module's page.
Deduction rules¶
- Each check has a fixed deduction amount
- Most deductions have caps to prevent a single category of issues from zeroing the score
- The minimum score is 0 (scores cannot go negative)
- Deductions do not stack multiplicatively -- they are summed
Example¶
SEO Module Score Calculation:
Starting score: 100
Missing meta desc: -10
Multiple H1s: -5
Missing OG tags: -5
2 images no alt: -4
--------------------------
Final SEO score: 76
Supplementary Scores¶
Conditional modules (Local SEO, E-commerce, Email, etc.) produce supplementary scores that are reported separately. They do not affect the overall weighted score.
This design means:
- A site's overall grade is always comparable regardless of which modules ran
- Supplementary scores provide additional context for specific site types
- Enabling more modules never penalises the overall score
Priority Levels¶
Findings are categorised by severity:
| Priority | Label | Meaning |
|---|---|---|
| P0 | Critical | Fix immediately. Broken functionality, security vulnerability, or compliance violation. |
| P1 | High | Fix before next release. Significant impact on users, search rankings, or security. |
| P2 | Medium | Fix soon. Moderate impact. Often quick wins with good ROI. |
| P3 | Low | Fix when convenient. Minor improvements, best practices, polish. |
Priority and score impact¶
Higher-priority findings generally carry larger point deductions, but the relationship is not strictly linear. Some P2 findings may have the same deduction as a P1 if they affect a lower-weighted criterion.
Effort Estimates¶
Each finding includes an effort estimate:
| Effort | Meaning | Typical Time |
|---|---|---|
| low | Simple config change or one-line fix | Under 30 minutes |
| medium | Requires some research or multi-file changes | 30 minutes to 2 hours |
| high | Significant refactoring or new feature work | Half a day or more |
CI Gate Thresholds¶
The CI gate uses scores and priorities for pass/fail decisions:
# Fail if overall score < 70 or any P0 findings exist
python scripts/ci_gate.py --scores scores.json --threshold 70 --fail-on P0
| Exit Code | Meaning |
|---|---|
| 0 | Pass |
| 1 | Score below threshold |
| 2 | Findings at or above fail-on priority |