Nice that you keep syntax, MX and disposable as separate checks with separate verdicts. A pass on MX only proves the domain takes mail, not that the person exists, so I would store the reason per row rather than one clean/dirty flag. Same idea we use for B2B rows at https://stackshortlist.dev: show what was checked, not just a score.
StackShortlist
Proof Over Promises.
Nice that you keep syntax, MX and disposable as separate checks with separate verdicts. A pass on MX only proves the domain takes mail, not that the person exists, so I would store the reason per row rather than one clean/dirty flag. Same idea we use for B2B rows at https://stackshortlist.dev: show what was checked, not just a score.