Bayesian quality
Average rating and review volume are fused into one number, shrunk to the global prior and growing more confident with every verified review.
CorpRoster does not rank on raw star averages or on who spends the most. Every ordering is the output of one published model: quality is estimated as a Bayesian posterior, newcomers are deterministically explored, engagement is de-biased, manipulation is down-weighted, and the plan boost is hard-capped behind a fairness floor. The formula is public. The full breakdown is in every partner's dashboard.
The sophistication of a ranking model is not in how many factors it counts. It is in how honestly it handles uncertainty (little data is not the same as bad data), feedback (the ranking shapes the very signals that feed it), and newcomers (a cold start must not become a life sentence). RosterRank is built in layers around exactly these three problems.
Two glowing reviews are not proof. We shrink every provider's quality toward a global prior and only let it diverge as verified evidence accumulates — the statistically correct way to compare a startup with a veteran.
Whatever sits at the top gets clicked simply for being at the top. Feeding that back raw teaches the model to praise itself. We correct engagement for position bias before trusting it.
No reviews → no views → no leads → no reviews. We break that loop by ranking on the upper bound of each provider's uncertainty, giving new and freshly-active providers a fair, deterministic chance to surface.
Run an agency? Get ranked on merit, not marketing spend.
Get ListedRosterRank is a pipeline, not one monolithic equation. Each layer can be reasoned about — and audited — in isolation, and the system stays correct at every step.
Average rating and review volume are fused into one number, shrunk to the global prior and growing more confident with every verified review.
Each signal is converted to a percentile inside the provider's cohort (category × region × maturity), so a 0.9 always means 'better than 90% of comparable providers'.
Weights are not guessed. They are initialised from sensible priors and calibrated on real outcomes — converted leads, satisfied clients, repeat engagements.
A weighted combination of the normalised signals produces an honest 0–1000 estimate of quality, before context and uncertainty.
Each provider is a distribution, not a point. We rank on the upper-confidence bound, so uncertainty lifts newcomers; staleness widens that uncertainty instead of penalising the score.
Engagement is corrected with inverse-propensity weighting — a click at position #1 is worth less than a click at #20 — so the model measures real intent, not its own echo.
Review-velocity anomalies, reviewer-graph clusters and filler-field detection reduce the confidence of suspicious signals rather than hard-banning, minimising false positives.
An MMR-style re-rank keeps the first results from being ten near-clones — relevance is balanced against dissimilarity across the top of every category.
Every score decomposes into per-signal contributions and one 'next best action', surfaced in each partner's dashboard. The math is also the marketing.
The single most important correction in RosterRank: review volume and average rating are not two separate points you can trade off — they are one quantity. We estimate the posterior mean of quality with shrinkage to a global prior, and the confidence in that estimate grows with the number of reviews.
μ_q = ( C · m + Σ rᵢ ) / ( C + n ) ← posterior mean of quality σ_q = σ₀ / √( C + n ) ← confidence (smaller = surer) where n = number of verified reviews rᵢ = each rating, normalised to [0,1] as (stars − 1) / 4 m = 0.75 global prior (≈ 4.0★) C = 10 prior strength (virtual reviews) σ₀ = 0.25 base spread of the posterior
After Layer 1, four normalised signals combine into the base score on a fixed 0–1000 scale. Each contributes its weight times a normalised 0–1 sub-score. Freshness is deliberately not one of these — it acts through uncertainty (see below).
Average rating and review volume fused into one statistically honest number. Each partner's score is shrunk toward the global prior (≈4.0★) and only moves away from it as verified evidence accumulates — so a 5.0★ from two reviews can never out-rank a 4.7★ from two hundred.
Contributes up to 520 pointsInformation-weighted completeness — the same depth measured by the dashboard ring, but each field counts in proportion to how useful it actually is to a buyer. You cannot inflate it with filler.
Contributes up to 200 pointsConfirmed legal identity (KYC) plus the share of reviews tied to a verified work-email engagement. Trust signals the catalog can stand behind.
Contributes up to 150 pointsProfile views and qualified leads, corrected for position bias (inverse-propensity weighting) so the algorithm measures real buyer intent — not an echo of yesterday's ranking.
Contributes up to 130 pointsEvery signal above is earned, not bought. See where your agency stands.
Get ListedEach provider is represented by a distribution, not a single point. Instead of drawing a random sample (classic Thompson sampling, which would make rankings non-deterministic and impossible to cache), RosterRank ranks on the upper-confidence bound of the posterior — the deterministic cousin that produces identical behaviour with stable, reproducible orderings.
σ_eff = σ_q · ( 1 + λ · stale(t) ) ← staleness widens uncertainty q⁺ = μ_q + κ · σ_eff ← upper-confidence bound (ranked on) λ = 0.5 freshness → uncertainty coupling stale = 0 when refreshed < 30 days, → 1 by ~18 months explore band ≤ 120 points
Views and leads depend not only on quality but on where a provider was already shown — the top gets clicked for being the top. Fed back raw, this turns ranking into a feedback loop that flatters yesterday's winners. RosterRank corrects it with inverse-propensity weighting.
x_engage = Σ_impressions event / P( seen | position ) P(seen | position) is estimated from click logs (a position-attention model). Without it, "engagement" is just an echo of the previous ranking.
Paid plans multiply the quality sub-score only, are hard-capped, and are neutralised entirely below a 30% organic floor. A provider with weak organic signal gets no boost at all — you cannot buy your way past someone with measurably better verified reviews.
organicShare = organic / 1000 boost = (organicShare < 0.30) ? 1.00 : planBoost ← fairness floor score = organic + qualityEarned · (boost − 1) ← quality only score = min(score, 1000)
A score nobody understands is useless. RosterRank decomposes into per-signal contributions and one highest-leverage next action, shown in every partner's dashboard — so position is never a mystery and the path up is always concrete.
Reputation (Bayesian quality) +0.18 Profile completeness +0.09 Verification +0.07 Freshness & exploration +0.02 ───────────────────────────────────── Next best action: "Invite 3 recent clients to review → +0.06 visibility"
data-sponsored) so AI crawlers can distinguish them from organic results.No. The plan boost is multiplicative on the quality sub-score only and is capped, and a 30% organic floor neutralises it entirely for any provider that hasn't earned a genuinely strong organic score. It can never promote a provider above another that has measurably stronger, verified client reviews. Featured slots, where used, are always labelled 'Sponsored' and sit outside the organic ranking.
Because RosterRank does not rank on raw averages. Each provider's quality is a Bayesian posterior shrunk toward the global prior (≈4.0★). With only two reviews the posterior barely moves from the prior and its uncertainty is wide; with two hundred it expresses the provider's true level with high confidence. This is the same shrinkage IMDb uses for its Top 250 — it is statistically the correct way to compare evidence of different sizes.
Through exploration. A new provider has a wide quality posterior, and RosterRank ranks on the upper-confidence bound of that posterior — μ + κ·σ. Wide uncertainty produces a deterministic lift, so newcomers periodically surface, earn views and reviews, and then settle at their true rank as their uncertainty narrows. This breaks the 'rich-get-richer' cold-start trap without making rankings random.
Because an excellent provider who simply hasn't edited their profile in a year is not a worse provider — we are just less certain their data is current. So staleness widens the quality posterior (it increases exploration) rather than subtracting from the score. A genuinely dormant listing that has stopped taking clients is handled separately by a liveness filter, not by the score.
Trust requires verifiability. Buyers can compare two providers and predict the ordering. Providers see exactly which inputs improve their position and the single highest-leverage action to take next. Auditors can replicate the score from the open formula and the public API. Transparency here is not charity — it is the engine that makes providers fill profiles, verify, and stay active.