How opportunity scoring works
The rubric behind every Opportunity badge — what actually earns points, and what "Unknown" means.
Every business gets an Opportunity score from 0–100, built from two independent inputs: how poor its current web presence is (most of the score) and how attractive it is as a customer — a busy, well-reviewed shop can afford a website and benefits most from one. The rubric is deliberately simple and inspectable, not a black box.
No website at all
If Google has no website on file for the business, that's the single biggest signal: 70 points, before anything else. Add the demand bonus below and the total lands between 70 and 90 — a business with no website is always High opportunity.
An existing website
If the business does have a website, CamoJet fetches it and looks at a handful of concrete, machine-observable signals — never an opinion at this stage:
| Signal | Points added |
|---|---|
| Site didn't respond (dead link, timeout, blocked, DNS failure) | 55 |
| No mobile viewport meta tag | 12 |
| Not served over HTTPS | 8 |
| Missing <title> | 6 |
| No email or phone link anywhere on the page | 6 |
| Missing meta description | 5 |
A site that responded but has any one of the structural gaps above (or was judged weak by the AI check below) is marked Needs improvement. A site with none of them — and no weak AI verdict — is marked Good. A site that never responded at all is marked Needs improvement too; it just adds far more points (55, versus at most 37 for every structural gap combined), since a dead website is a stronger opportunity signal than a slightly rough one.
The AI judgment
When a site did respond, CamoJet also asks the AI model configured under Settings → Integrations → OpenRouter to look at it and return a verdict: weak, adequate, or strong. That verdict adds its own points — 20 for weak, 8 for adequate, 0 for strong — on top of the structural signals above. If the model call fails for that run, CamoJet keeps the structural score it already measured rather than losing it; the AI verdict is just absent, not a zero.
The demand bonus
Up to 20 extra points come from how attractive the business looks as a customer: its Google rating, normalized between 3 and 5 stars (below 3 stars adds nothing — a struggling business is a worse prospect, not a better one), averaged with its review count, normalized between 0 and 200 reviews. The two are averaged, not multiplied, so a business missing one signal still gets partial credit from the other.
From score to badge
| Score | Badge |
|---|---|
| 60–100 | High |
| 30–59 | Medium |
| 0–29 | Low |
Unknown isn't a score band — it means CamoJet hasn't finished checking that business's website yet, whether research hasn't run, is still queued, or a missing Google/OpenRouter credential stopped it from starting. It says nothing about how good a prospect the business is. Once research runs, the badge becomes High, Medium, or Low like any other.