clean-email-list
Clean an email list
The insight: a list's value is set by its worst segment. Bounce rate is measured over the whole send — a few percent of dead rows can gate the other 95% out of inboxes. So cleaning is triage, not filtering: every input row lands in exactly one of keep / risky / remove / could-not-verify, with quoted evidence, and rows are never silently deleted — a row you can't account for is a row you can't defend. The other half is ordering: every free deterministic pass runs before the first paid call, so the validator only ever sees rows that could still be sendable.
Declared inputs
Nothing here ships with a value. Each one is the installer's, not the author's: ask for it, never substitute a plausible default, and where an answer does not exist say which step becomes unavailable rather than guessing. Where a default IS defensible it is named below, and using it means saying so in the output.