There are two versions of FireAlarm. One version is written in C, and the other is written in Swift. This post is about the Swift version.

FireAlarm is a chatbot Ashish Ahuja and I have been working on. It attempts to detect low-quality questions using a naive Bayes filter.

A sample report.

All reports can be seen on FireAlarm's web dashboard, Bonfire (StackApps post).

How accurate is it?

Each question is assigned a score by the machine learning filter, and a lower score means the question is more likely to be bad. Different chat rooms have different thresholds; in SOCVR the threshold is 35, in SOBotics it's 45, and in FireAlarm Development it's whatever we want it to be at the moment.

At a threshold of 35, since the bot started running in SOCVR on February 8:

  • 12% of reported posts have close votes but aren't closed or deleted,
  • 13.98% are closed but not deleted, and
  • 40.7% are deleted,

which adds up to 66.7%. That's pretty impressive, considering only about 9% of questions from that time period are closed. (I wasn't able to get statistics on deleted posts or posts with close votes.)

  • 5.8% of non-deleted reported posts have a positive score
  • 31.5% of non-deleted reported posts have a negative score
  • 78.4% of all reported posts have a negative score, have close votes, are closed, or are deleted.

Where does it run?

FireAlarm is currently running in SOBotics, SO Close Vote Reviewers and of course the FireAlarm Development room. Enter a room and run @FireAlarm help for a command list.

Where's the code?

The code is on GitHub. FireAlarm uses two libraries I've helped write: SwiftChatSE, a Swift chatbot framework, and SwiftStack, an API wrapper FelixSFD and I have been working on. You may reuse any of the code in your own projects; it's all licensed under MIT.

  • FR: don't add a report if the same question has already been cv-pleased Commented Mar 27, 2017 at 17:19
  • If that doesn't get implemented: FR: add the ninja'd reply command that deletes the report after the fact Commented May 22, 2017 at 18:41
  • @JanDvorak yeah, a delete command seems sensible (and more useful). It'll be pretty hard to track all the cv-pls'es, and IMO unnecessary. Commented May 25, 2017 at 5:23
  • Any plans on bringing this back? cc:@AshishAhuja
    – M--
    Commented May 12, 2020 at 19:52
  • 1
    @M-- I don't have any plans for the time being (I'm not sure about Ashish). FireAlarm was my middle school hobby project; my free time is a lot more scarce than it was back then, and I have other things I would rather spend it on. I doubt I'll ever pick it up again, since the behavior of Stack Overflow, Inc. over the past couple years has left a sour taste in my mouth about heavily involving myself in the site again.
    – NobodyNada
    Commented May 13, 2020 at 5:20
  • 2
    @M-- If you're interested in running it yourself, you just need to: 1. install Swift, 2. (if you're on Linux) install libwebsockets, 3. clone the GitHub repo and create a secrets.json containing {"email": "<SE account email>", "password": "<SE account password>"}, and 4. start the bot with DEVELOPMENT=<room ID to join> swift run.
    – NobodyNada
    Commented May 13, 2020 at 5:24
  • Oh...!?, good, at least I can post a Comment...!, 125-Rep required to downvote, so you "miss" the '-1', I was going to post a Comment anyway, (I (nearly) always do when I downvote), but "February 8" is timeless=useless, I stopped reading, mention the year, and the OP is from 2017-01-18, so "[20xx-]02-08" doesn't really make any sense... (I didn't read any further..., pity because I'm "probably" an "Advanced User" in Technology/ies you are probably using...)
    – chivracq
    Commented May 7, 2021 at 2:45


You must log in to answer this question.

Browse other questions tagged .