Acho que há um problema com a lógica que está sendo usada aqui:
O código verifica estatísticas de qualquer usuário criado após o início do mês anterior. Então, se um usuário se juntou em meados de junho, ele verificará estatísticas desde o início de maio até meados de junho. A badge então terá sua data created_at definida para o final do mês anterior (31 de maio). Isso permitiria que um usuário criado em junho recebesse a badge “Novo Usuário do Mês” no final de maio.