What we learned rebuilding the scoring model

The original model weighted every page view the same. The new one knows a pricing visit isn't a blog visit, rewards recency and lets old interest fade. Here's the reasoning and the math.

In this post
  1. What was wrong with counting views
  2. The three ideas behind version 2
  3. 1. Weight by what the page means
  4. 2. Reward recency
  5. 3. Let old interest fade
  6. How we validated it
  7. What we deliberately didn't build
  8. Upgrading your own model

The scoring model we shipped for Aurora's first two years gave every tracked page view the same weight and let the total climb until it crossed a threshold. It was simple and easy to explain. It was also wrong often enough that we rebuilt it for Aurora 2.0.

This post explains what went wrong, the three ideas behind the new model, how we tested it against real history, and why we deliberately kept machine learning out of it.

What was wrong with counting views#

The flaw is obvious in hindsight. A visitor who reads six blog posts is not more likely to buy than one who reads the pricing page twice — but a flat, per-view model scores the blog reader higher every time, simply because six is more than two. We were rewarding volume instead of intent.

Support tickets told the same story. The most common complaint was some version of “Aurora flagged a student / a competitor / a job seeker as hot.” Those visitors read a lot. They just weren't buying.

The three ideas behind version 2#

1. Weight by what the page means#

Every rule now carries a weight between −50 and +50, and the defaults reflect how strongly each kind of page predicts a purchase. Pricing, demo and integration pages carry weights of 15 to 30; case studies and comparison pages 6 to 15; blog posts and general docs 1 to 5. Career pages and the support login get negative weights by default, which filters out most job seekers and existing users.

2. Reward recency#

Timing matters as much as the page. Two multipliers handle it:

MultiplierValueWhen it applies
Repeat boost×1.5A repeat visit to the same high-value page within 24 hours
Gap decay×0.5The first activity after a gap of 21 days or more

3. Let old interest fade#

Scores now decay by 10% per week when there's no new activity. Someone who was very interested in March and silent since shouldn't sit at the top of the queue in June. Put together:

The model
score = clamp( Σ ( rule weight × recency multiplier ), 0, 100 )
        − 10% per week without activity

A worked example: a visitor views pricing (+24), returns the next morning and views it again (+24 × 1.5 = +36), then reads a case study (+10). Their score is 70 — above the default threshold of 60 — after three meaningful actions. Under the old model, the same visitor would have needed around a dozen page views of any kind.

How we validated it#

Before shipping, we re-scored six months of anonymized history from 40 volunteer workspaces with both models and compared the results against what actually happened: which accounts became opportunities within 60 days.

  • Precision improved. Of the accounts the new model marked Ready, 31% became opportunities, compared with 17% for the flat model.
  • Leads arrived earlier. Accounts that eventually converted crossed the threshold a median of 2.6 days earlier.
  • Fewer alerts overall. The new model produced about 35% fewer Ready leads, which reps described as the biggest improvement of all.

The disagreements were the most useful part. The flat model loved heavy readers of the blog; the new one ignored them unless they also touched pricing or product pages. The new model caught quiet, two-visit evaluators the old one missed entirely.

Every score in Aurora can be explained in one sentence. The visitor profile lists the rules that contributed, in order, with their weights and multipliers — so “why is this lead Ready?” always has a straight answer.

What we deliberately didn't build#

We prototyped a machine-learning model trained on conversion outcomes. It was slightly more accurate on paper — about three points of precision — and we chose not to ship it, for three reasons:

  1. Explainability. Reps act on scores they understand. A model that can't say why a lead is hot gets ignored after the first bad alert.
  2. Small workspaces. Most teams don't have enough closed deals to train a reliable model. Rules work from day one.
  3. Control. When your pricing page moves or you launch a new product, you should be able to change a weight in thirty seconds, not wait for a retrain.

Upgrading your own model#

Existing workspaces were migrated automatically, with every old rule mapped to the closest new weight. If you set up Aurora before version 2.0 (July 2026), it's worth spending ten minutes with the scoring guide: raise your pricing and integration weights, lower anything related to the blog, and use Test changes to preview the effect on the last 30 days before saving.

Clara Voss

Clara wrote the first version of Aurora's scoring engine and reviews every change to it before it ships. She leads infrastructure and security.

Newsletter

Enjoyed this post?

Get the next one in your inbox. One email every two weeks, no sales follow-up, unsubscribe in one click.

Read by 6,000+ sales and RevOps people. We never share your address.

Put these ideas to work.

Aurora scores every visitor in real time and routes the ready ones to the right rep. Free forever for one seat.

No credit card required · Live in five minutes