🃏 The DoSomething.org chatbot.


wercker status codecov

Gambit Conversations

Gambit Conversations is our DoSomething.org API for SMS conversations:

  • Receives inbound messages, creates/updates users and/or campaign activity, and sends an outbound reply

  • Sends outbound broadcast messages

  • Sends outbound confirmation messages for web subscriptions and/or campaign signups

  • Updates user subscription status when outbound message delivery fails

  • Sends outbound support messages from agents


Gambit receives and sends SMS messages from/to users via Twilio, forwarded from our internal message broker. It queries its Content API to source outbound message content.

Staff members can chat with Gambit in Slack to test conversations, and can view Gambit content and conversation data from an internal web app.

Gambit forwards support requests from users into a Front inbox, where agents are able to send messages back to provide support.


Gambit Conversations is built with:


Local Node, redis, and MongoDB installations are required to run this application.

We recommend using Homebrew to install both nvm (A Node.js version manager) and mongo.

  • Install Node and Mongo.
  • Clone this repo and navigate to it.
  • Create a .env file with required variables. See .env.example for guidance.
  • Your local Node.js and NPM versions should match the ones in package.json.
  • Install dependencies: npm install.
  • All tests should pass: npm run test:full.
  • Run Conversations locally: npm start.
    • If the heroku-cli is installed. Run heroku local instead.


With Conversations running locally, test Gambit replies by opening a new terminal window and running node shell.

PuppetSloth-MacBook-Pro-2:gambit-conversations puppetsloth$ node shell

 ██████╗  █████╗ ███╗   ███╗██████╗ ██╗████████╗
██╔════╝ ██╔══██╗████╗ ████║██╔══██╗██║╚══██╔══╝
██║  ███╗███████║██╔████╔██║██████╔╝██║   ██║
██║   ██║██╔══██║██║╚██╔╝██║██╔══██╗██║   ██║
╚██████╔╝██║  ██║██║ ╚═╝ ██║██████╔╝██║   ██║
 ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚═════╝ ╚═╝   ╚═╝


* To send a photo, type 'photo'.
* To retry last message, type 'retry'.


Input is posted to your localhost api/v2/messages?origin=twilio endpoint on behalf of the Northstar User with mobile number matching your DS_CONSOLEBOT_USER_MOBILE config variable. A new Northstar User is created for the mobile number if it doesn't exist.


  • Contributions to this repo must adhere to the steps in wunder.io's Git workflow: Wunderflow.

  • Run npm test:full to lint code and run automated tests.

  • Pull Requests are expected to contain reasonable test coverage.


I get an ERR! cb() never called! error when running npm install.

I ran into this error when upgrading npm from 5.x to 6.x. There seems to be a bug that affects apps w/ a lot of dependencies. Here's the Link

Steps I took to fix it:

  • Raised the maxfiles and maxproc system limits, Link.
  • Exit out of all terminals and re-open.
  • Removed node_modules and package-lock.json.
  • Run npm install again.