I really liked this article. It's the first time I see async Python used to solve a problem.
Suggestion: I think it would make sense to use softmax as the scaling function. This way you don't need to worry about outliers and you get to decide the running time.