Thank you! I'm a bit wary of giving big hints to how the filters work, but I was inspired by:
- npm packages like redact-pii, bad-words (and numerous other "bad word" lists)
- askismet's open source spam code
- regex unicode categories
I also wrote a variety of checks for word counts, combinations of words, known "bad patterns", etc. You may not realize it, but the text input forms block a lot of potential inputs.
It's not perfect, but that's why I'm manually handling things that surface. Happy to answer any follow-ups.
Happy to elaborate if you have followup q's!