Skip to content
Customized public transportation predictions
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.


This utility saves money for those who use a feature phone to access the NextBus service for bus predictions via text message.

With the standard system, each prediction costs at least two text messages: one to NextBus, and one for the reply.

If multiple bus routes serve a stop, even more text messages are required:

  1. me: Tell me the predictions for stop 8819
  2. NextBus: Do you want route 70 or 70A?
  3. me: 70
  4. NextBus: buses arrive in 7, 30, and 50 minutes.

Cost: Four text messages. Plus I don't get predictions for route 70A, which would also work for me.

NextBus does allow you to save a query for future use (saving us question 2 for the specific route), but the minimum interaction still requires two text messages.

benefits of Cheap Buster

  1. costs one text message per query
  2. provides predictions for more than one route
  3. sends the prediction via email or text message (which is cheaper for you?)


  1. pre-registration of your routes is required (no ad-hoc queries)
  2. the service currently runs on a free Heroku dyno; your response may be delayed while the application wakes.


[ Seven of Nine says: "elaborate" ]

  • call from any phone (probably a feature phone)
  • Google Voice receives call, sends "missed call" email
  • CloudMailin translates the email into a POST request
  • Sinatra application looks up phone number, finds user's bus stops
  • query NextBus for arrival predictions
  • based on user's notification preference:
    • send predictions via email ( Mandrill/MailChimp )
    • send predictions via text message ( Amazon Simple Notification Service )
    • [ evaluate: SNS can do both email and text message, plus HTTP & SQS. Perhaps use it for all notifications? ]


  • schedule a query for a particular time (instead of calling)
You can’t perform that action at this time.