Exploring Anti-spam solutions for Bolt.Fun
The Problem
Currently, when a user posts a story, we automatically & immediately:
- Put this story on our main website feed
- Publish a Nostr post with a link to the story
- Publish a Discord notification with a link to the story
The problem is: when a spammer publishes a spam story, even if we delete it as soon as we see it, it'll already be published in many places (& you can't delete stuff on Nostr)
So we need a better way to handle this.
The solution
There are various approaches that we can take, however, not all of them are without some issues.
1- Only publish a story after an admin sees the story & approves it.
âś… Very secure, no spam will likely slip unnoticed.
âś… Free if the admin is one of us. (& If you don't consider time a currency)
❌ This admin needs to have a very high response rate & always available. If a user publishes his story, but he is not able to share it until the next day or something like that, he will not be very happy.
2- Delay publicly publishing a story for some time ONLY IF it's suspected to be a spam
This reduces the need for human factor to a minimum by introducing a spam-detection service.
After the user publishes a story, it get checked by a spam-detection API.
If it looks good, then it's automatically published on all the public channels.
If it's suspected to be a spam, a notification is sent to the admins on a private discord channel for example asking them to approve/reject this story.
So this way, the admin intervention is only required in the case of a story being suspected as a spam.
I found a few services that seems to be considered good & are not very expensive:
- CleanTalk https://cleantalk.org/universal-antispam
- APILayer SpamChecker https://apilayer.com/marketplace/spamchecker-api
âś… Much less human efforts needed, almost fully automatic.
❌ Not free.
Personally, I prefer the 2nd approach.
I consider time is more expensive than the amount we need to pay for a service (while it's still reasonable of course).
What do you think?