Skip to main content

Scoring Engine

5.1 Site Classification

Before scoring, OTR classifies each site into one of three categories. Classification determines which weight formula and signal set apply.

Three Site Categories

How Classification Works

Classification uses a multi-signal confidence system, not single-signal triggers. The system calculates a commerce intent score from multiple signals: The base threshold is 4 points. Sites must accumulate enough signals to cross this threshold.

Exclusion Factors

Certain site characteristics raise the threshold, making it harder to be classified as commercial: For example, a .gov domain needs a commerce score of 6+ (4 base + 2 exclusion) to be classified as commercial.

Ecommerce vs SaaS Subtype

Once a site passes the commerce threshold, a dual-score competition determines whether it is ecommerce or SaaS: Ecommerce score signals: platform fingerprint (+35), product schema (+25), cart URL (+20), commerce links (+10), Wikidata retail QID (+25), retail label match (+20) SaaS score signals: SoftwareApplication schema (+30), pricing page with paid tiers (+25), SaaS HTML signals (+10/+20/+25 by count), Wikidata software label (+15), Wikidata SaaS description (+10) Rules:
  1. ecommerceScore ≥ 20 AND ecommerceScore > saasScore → ecommerce
  2. saasScore ≥ 20 AND saasScore > ecommerceScore → saas
  3. Both below 20, but payment processor detected with no product signals → saas (payment without products indicates subscription billing)
  4. Both below 20, no special conditions → ecommerce (conservative default)
The minimum threshold of 20 prevents single-signal misclassification. A site needs at least two strong signals to be confidently classified.

Confidence and Self-Correction

If classification confidence is below 30%, the domain is flagged for review. Subsequent rescans with additional data (Wikidata, GLEIF) can correct the classification automatically.

5.2 Three Scoring Modes

OTR operates in three scoring modes, each with a different weight formula:

COLD Ecommerce (Default for E-commerce Sites)

V is weighted at 40% because identity verification is the bedrock of trust. This follows the financial industry’s KYC (Know Your Customer) principle: first confirm identity, then assess everything else.

COLD SaaS (For SaaS/Software Sites)

Why SaaS weights differ: SaaS products don’t have physical products, shopping carts, or shipping. Instead, security posture (S) and governance compliance (G) carry more weight. The D dimension uses a completely different signal set (see Section 5.5) focused on API documentation, SLA commitments, and developer ecosystem.

AUTH Mode (Authorized Merchants)

AUTH mode is activated when is_merchant_authorized = true in the database. This happens after a merchant completes the OTR authorization flow. Why F dominates in AUTH: Once a merchant is verified and authorized, the most important signal is how well they actually fulfill orders. Shipping records, refund rates, customer complaint rates, and response times become the primary trust indicators. The OTR-ID format reflects the mode: C prefix for COLD mode, A prefix for AUTH mode.

5.3 Non-Commerce Sites

Sites classified as non_commerce do not receive a trust score, but are still verified:
  • Trust score: 0
  • Badge: UNRATED
  • OTR-ID status: NOT_APPLICABLE (no OTR-ID issued)
  • Verification: Identity signals still collected (GLEIF, Wikidata, SSL, Google Web Risk)
  • API output: Identity, safety, and entity data are returned. Dimensions and signals are not.
  • Frontend: Displays “Verification & Security Only” with detected identity signals.
Non-commerce sites include government portals, nonprofit organizations, news outlets, and educational institutions. They are verified for identity and security but excluded from commercial trust scoring. If a non-commerce site is later reclassified as commercial (e.g., it adds a product catalog), it re-enters the scoring pipeline and can receive a new OTR-ID.

Parked Domains

Domains detected as parked or listed for sale receive special treatment:
  • Site status: PARKED
  • Trust score: 0, no backfill or scoring performed
  • Detection: 15+ registrar patterns (GoDaddy, Sedo, Afternic, Dan.com, Namecheap, Porkbun, etc.) plus fingerprint analysis
  • Frontend: Displays “Parked Domain” instead of “Verification & Security Only”
Parked domains are excluded from all processing to save resources. If a parked domain becomes active, SmartRescan will detect the change and re-enter it into the pipeline.

5.4 Trust Badges

Per-dimension scores (0-100) are weighted to produce a total score (0-100). Badges are assigned based on the total:

What Badges Mean for AI Agents

Trust badges influence how AI agents make recommendation decisions:
  • PLATINUM / GOLD — AI agents prioritize these merchants, ranking them higher among similar products
  • SILVER — AI agents recommend normally
  • BRONZE — AI agents may recommend but will flag the trust level
  • UNRATED — AI agents may skip these merchants or deprioritize them

5.5 SaaS D-Dimension: 16 Specialized Signals

When a site is classified as saas, the D (Data Quality) dimension uses a completely different signal set from ecommerce. Instead of product data quality, SaaS D measures infrastructure maturity across 5 sub-dimensions with 16 signals, capped at 100 points total.

D1. API Documentation (max 25 points)

D2. SLA & Reliability (max 20 points)

D3. Pricing (max 25 points)

D4. Security Compliance (max 15 points)

D5. Developer Ecosystem (max 15 points)

Total cap: 100 points. A SaaS site scoring 100/100 on D has demonstrated strong API documentation, reliable infrastructure, transparent pricing, security compliance, and a mature developer ecosystem. For ecommerce sites, D uses a different signal set focused on product data quality (Schema.org Product markup, structured product data, llms.txt, etc.).

5.6 How Each Dimension Score Is Calculated

Each dimension score is the weighted sum of all signals within that dimension, normalized to 0-100:
Where:
  • signal_value = 1 (detected), 0 (not found), or negative (penalty signal triggered)
  • signal_weight = relative weight of each signal within the dimension
The system uses 77 signals total across all dimensions (V: 13, S: 15, G: 10, T: 18, D: 21 including 4 penalty signals).

5.7 Signal Detection Status Semantics

OTR uses four statuses for each signal: This four-state design distinguishes “confirmed absent” from “not yet checked.” A domain is never penalized for signals that have not been evaluated.

5.8 Score Lifecycle

A domain’s trust score is not calculated once and frozen. It has a complete lifecycle:

Initial Scan

When a domain is first scanned:
  1. DNS Scan — Check all DNS records (DNSSEC, DMARC, SPF, etc.)
  2. HTML Scan — Crawl the homepage and key pages; check structured data, policy pages, etc.
  3. Fingerprint Detection — Identify the technology stack (2,438 fingerprints, 975 OTR-relevant)
  4. Site Classification — Multi-signal classification into ecommerce, saas, or non_commerce
  5. Third-Party Queries — GLEIF, Wikidata, Finnhub, SEC, WebRisk
  6. Score Calculation — Apply the correct weight formula and calculate per-dimension and total scores

Periodic Rescans

Scored domains are periodically rescanned:
  • Temporal rescan — At preset intervals based on domain priority
  • Change-triggered rescan — When domain indicators change
  • Manual rescan — Domain owners can request an immediate rescan

Score and Classification Changes

After each rescan, if signal changes are detected, scores update immediately. Classification can also change if new data shifts the commerce or subtype scores.

5.9 Data Source Fault Tolerance

OTR depends on multiple third-party data sources (GLEIF, Wikidata, Finnhub, SEC, WebRisk). If a source becomes temporarily unavailable:
  • Signals dependent on it are marked not_scanned and excluded from scoring
  • The system uses circuit breakers: after 7 consecutive failures, it pauses that source for 24 hours
  • Once the source recovers, signals are automatically re-collected on the next rescan
This ensures temporary outages do not cause widespread score fluctuations.

5.10 Self-Assessment: Understanding Your Score

When reviewing your domain’s score:
  • Check which scoring mode applies to you (ecommerce, saas, or non_commerce)
  • Identify your lowest-scoring dimension — that is your priority for improvement
  • Check signals showing not_found — those are areas you can address
  • For ecommerce sites: V accounts for 40%, focus there first. D is the easiest to improve (llms.txt + Schema.org)
  • For SaaS sites: S (20%) and G (23%) are weighted higher. Invest in security certifications, compliance documentation, and API documentation for D
  • For sites classified as non_commerce that should be commercial: ensure your site has visible commerce signals (pricing page, payment processing, product listings)

Next Chapter: REST API Reference — Complete technical documentation for the OTR query API