Keeping data consistent, compliant and true is pretty hard nowadays. We are aware of legacy code and tech debt problems, but rarely concern ourselves with data debt. This problem doesn't show much if you have a 100% subscription business and you delete users whose subscriptions have expired . I know that some companies want to keep all the data forever, but this is both a huge privacy compliance hole, and can also be a performance hole. I’ll write about the performance problem deeper in another post.
For now, let’s talk about emails. Most web applications use a similar flow. When a user signs up to your application, they enter their email and continue with whatever authentication is popular at the moment. This might be entering the password, might be a one-time token sent to their email or creating a passkey. Now you have a user in your system, and if you allowed them to create an account using their email and password, you have to verify their email. A common way is not letting the user in unless they confirm their email. Yet there are still some big companies that don’t care about email confirmation upfront because they want to capture the users.
But what happens if you have a very old (more than a decade old) dataset on a freemium product with a lot of unverified emails? Well, then you have at least three possible problems:







