HomeAboutContactLinkedIn

How to assign a decaying MetaScore to your users

Published in Case Studies
September 08, 2023
2 min read
How to assign a decaying MetaScore to your users

Recently, I came across a problem statement I liked: how could we assign a single performance score to each of our users, dependent on multiple metrics, and that decays over time to return to a baseline score? Is there a simple formula we can give to developers so they implement the algorithm?

Perhaps not the best one, but I found a good enough proxy that solves our current issue:

  1. List all metrics you want to base your Metascore on. These metrics must be measurable and tangible enough to assign them a value per user.
  2. For each metric, create the formula to calculate the value per user and define three thresholds you will compare it against. A threshold value would be assigned to the “Good” scenario, another one to “Average,” and a last one to “Bad.”
  3. Give a factor you will use on the baseline for each metric. A factor of < 1 should diminish the score, and > 1 should increase it.
  4. Find a baseline you wish all users would return to after a certain period and create the product of the baseline with all maximum factors so you get the maximum score possible.
  5. Calculate the MetaScore for each user on a specific period you define. If there has been a change in the MetaScore, update it; if not, decrease it by its decayed value.

We list the following metrics in our use case:

SubjectMetricCalculus methodBadAverageGoodBadAverageGood
EngagementOpen Ratetotal opened emails / total sent emails in the last 30 days10% or less11% - 59%60% or more1,210,9
EngagementClick-Through Rate (CTR)total clicked emails / total sent emails in the last 30 days1% or less2% - 19%20% or more1,210,9
Sending BehaviorSend FrequencyN of days at least ten emails were sent in the last 90 days10 or less11 - 4445 or more1,210,9
InfrastructureFailed API requestssum (403 + 422 + 429 errors) / total API calls in the last 30 days60% or more6% - 59%5% or less1,410,2
Historical BehaviorHistorical MetaScoreaverage (MetaScore in the last 30 days)80 or more11 - 7910 or less1,410,8
Client Type/SegmentationAccount AgeNumber of days since user is activeLess than 1011 - 3031 or more1,410,8
Client Type/SegmentationUse caseIf user selected Use Case #1 or #2 when signing upUse Case #1 onlyBothUse Case #2110,8
OtherSoft bounce rateTotal soft bounced emails / total sent emails in the last 30 days20% or more4% - 19%3% or less1,210,8
OtherHard bounce rateTotal hard bounced emails / total sent emails in the last 30 days20% or more4% - 19%3% or less1,210,8
OtherSpam complaint rateTotal spam complaint / total sent emails in the last 30 days20% or more2% - 19%1% or less1,410,8
OtherUnsub rateTotal unsubscribed / total sent emails in the last 30 days20% or more2% - 19%1% or less1,410,8

So you have your MetaScore: it’s the product of each factor times the baseline.

How to decay a score to return it to a baseline?

There are multiple decay formulas, each giving the same result:

M(t) = M0 * (1 - r) * exp(t)

Where:

  • M(t) is the MetaScore on a time t
  • M0 is the initial MetaScore you want to get the decay for.
  • r is the rate of decay ( 0 < r <1)
  • t is time (time can be in years, days, (or) months; whatever you are using should be consistent throughout the problem).

This formula will decrease the MetaScore throughout time to finish at 0. It would be best to decide on the r based on the time you want the MetaScore to take to reach a specific value.

If you don’t know the decay rate but know the value you want to the MetaScore at a certain point in time, you have the following formula to get it:

r = abs ( ln ( (M(t1) / M(t0))/t1 ) )

You have the Gsheet function on C6 of this Gsheet.

Now that you have the decay formula, it is time to add the “return to baseline” part:

M(t) = (M0 - B)*exp(r * t) + B

Where:

  • M(t) is the MetaScore on a time t
  • M0 is the initial MetaScore you want to get the decay for.
  • B is the baseline value
  • r is the rate of decay ( 0 < r <1)
  • t is time (time can be in years, days, (or) months; whatever you are using should be consistent throughout the problem).

As you can see here from the graphic below, the yellow and green lines go to a baseline value of 10. You can see the details of the formula on the Gsheet linked above.

Chart showing different decay formulas, exponential and linear
Chart showing different decay formulas, exponential and linear

Let me know if this helped you!


Tags

#metascore#decay#gsheet#formulas#attrition
Previous Article
Limiting your usage-based product

Topics

Case Studies
Fundamentals
Innovation

Related Posts

Should your B2B SaaS offer a Black Friday deal?
October 18, 2023
3 min
© 2023, All Rights Reserved.

Quick Links

AboutContactResume

Social Media