18 Dec 2014
Hi, It’s Rupert, Your Inbox Manager
18 Dec 2014
Last week, I flew to New York to visit Mailjetters there, especially Tyler, our US Developer Evangelist.
It was a great week of catching up in person and meeting fellow developers in the New York startup scene. There could not have been a more perfect way to end my week than to participate in the TheNextWeb Hack Battle with Tyler. This 36 hour hackathon was held at Alley NYC to kick off the main conference later in the week on Wednesday 10th.
On Friday, we started brainstorming project ideas for the weekend. We wanted to build something with our API but we also wanted something fun, catchy and useful.
After a few intensive hours of brainstorming, we decided to build a Do Not Disturb system, similar to the one that iOS offers, but for email. This system should act as a proxy in front of your inbox, holding your emails when you don’t want to be disturbed while transferring them immediately if important, based on the sender – like your boss or girlfriend – or keywords in the subject and body.
On Saturday morning, we arrived at the hackathon, pumped and ready to hack for the next 36 hours. The event started by a quick introduction of the event’s sponsors: Mashery, Deezer, Sinch and Sendgrid.
Since our idea was already in place, we hit the ground running with the important step of the hackathon project: choosing a name. With the help of Tyler’s friends, we found a name for our new buddy; Rupert (thanks Pete Lucatorto!).
Next came deciding which stack we wanted to hack with. While we’re always looking to learn new things at these events, our focus of the weekend was to innovate with Rupert, so we chose to go with Node, a language that both Tyler and I were familiar with. As a Developer (Evangelist), you have to be polyglot, well-versed in multiple coding languages. To facilitate the bootstrap of the project, we used MEAN – MongoDB, ExpressJS, AngularJS and NodeJS.
In terms of Mailjet’s API, our Parse API was a natural choice to use to process any e-mails forwarded to Rupert.
Our first day was dedicated to building the first running version of Rupert.
First, we specified and implemented the bot’s interface:
on [whitelist] [hours], to enable Rupert in your inbox, while continuing to receive whitelisted emails (based on sender or keywords) or flush them at pre-defined hours.
Format of whitelist is a list of words, separated by commas. For example: urgent,firstname.lastname@example.org
Format of hours is a list of hours, 24-hours, separated by commas. For example: 11:00,17:00
off, to disable and flush all the emails held
status, to get the Rupert’s state (on/off) and the number of emails it’s currently holding
give n, to ask to Rupert to flush the “n” oldest emails while keeping all others
help, to list all of the above commands
To have Rupert to take care of your inbox, all you need to do is set-up a simple Gmail filter (or any other email client will work as well) to have all emails skip the inbox and automatically forward to Rupert. Only emails from Rupert will show in the inbox. You can also share Rupert’s email address with family and friends to have them directly email Rupert.
The second day was dedicated to polishing the flow, sending confirmation emails in response to each command (using our Send API, of course!) and pinging contacts to let them know there might be a delay in your response (simultaneously inviting them to use Rupert) and preparing our demo.
Pitches followed at the beginning of the afternoon. 11 projects made it to the finals. Rupert got great feedback, judges loved the idea, the name and the use case of an email Parse API. Tyler and I had also a great time working on this project and getting to know everyone at TheNextWeb Hackathon.
While Rupert is not yet ready for public use, you can follow our progress on Twitter and stay tuned for updates!
Rupert’s code source is also available and free to be modified at http://github.com/mailjet/rupert, under the MIT license.
Love this project? Have some other cool ideas for Rupert? Let us know in the comments below!