About a year ago, I met an amazing girl and now she's Bae. And although we talk a lot, (via snaps, bitmoji, imsg, gchat, email - the works), we still find ourselves in analysis paralysis when date night roles around. Should we go out? Stay in? What would we even cook? Is there anything good on TV tonight? And sometimes we're in her neighborhood and sometimes we're in mine.

This isn't a life threatening problem at all, but it made me think: why can't I use technology to improve my relash - so I can enjoy my time with Bae, rather than planning it. In other words, I decided to build some #BaeTech.

What it does

BaeLife is a daily newsletter sent to you & Bae, full of ideas on what to cook, what to watch, where to go out, and what to talk about. It'll even tell you if it's going to be cold/rainy tonight, so you can figure out if you should venture out.

Since this is about you as a couple, you have to sign up at the same time - which also means that if one of you unsubscribes, you both get unsubscribed. I think it's a nice detail, but maybe not totally necessary.

BTW, if you don't like email / don't have a Bae / just aren't there yet, there's a "solo" web app version too.

How I built it

As you can see from the tag list, it took a lot of hacking & API integrations to get this up & running. There's a Redis backend & cron jobs that cache all the geo-specific data (TV info, recipes, movies, news articles, etc.).

For geo-specific data like 4sq recommendations, everything is generated on the fly based on your ZIP code.

There's also a bunch of Python/Flask/MySQL/SendGrid glue that takes care of user registration / data / unsubscribes, etc.

Basically, when the daily email job kicks off, we loop through current users, fill out a template, pull data from APIs/Redis as necessary and then queue a single email to both you & Bae.

Challenges I ran into

4sq overhauled its developer docs during the initial development, which threw me for a bit. I miss the API explorer. Bring that back Dens!

Arguably the biggest problem I ran into was finding data sources / APIs for TV show information and Movies. Other than TV Maze, there really are no free TV listings providers. And Rotten Tomatoes / Gracenote / Whatever's API is totally deadzo, so I had to resort to web scraping. Although, the RT webpages contains all the relevant info in a JSON object embedded in the source, so I just had to write some RegEx to pull it out of the html.

Accomplishments that I'm proud of

It works. I got a bunch of my friends signed up. And Bae told me she liked it :)

What I learned

The same thing I re-learn with every hack: It's OK to Google / SO things feverishly. The important part of a hack is to get to done.

What's next for BaeLife

Brunch recommendations + some sentiment analysis on 4sq tips + kid/pet aware recommendations. I mean, if you have a kid, then maybe you don't recommend R rated movies. And if you have a dog, maybe you'd like pet friendly bars / activities.

Figure out what (from last night) is available to stream tonight. Unfortunately, Hulu discontinues their API & RSS feeds years ago, so there's no good place to find this data. And the GuideBox API is closed to indie devs.

Oh yeah, and a dope logo. I need one of those too.

Share this project:


posted an update


  1. New TV eps from Hulu
  2. Local Grubhub delivery recommendations
  3. Available internationally
  4. Emails go out at 1pm local time on weekdays / 10am local time on weekends

Because of 3/4 - you can use BaeLife while on vacation with Bae. Just update your location and BANG! Local recos informed by your social graph.

Log in or sign up for Devpost to join the conversation.

posted an update


  1. New URL:
  2. 4sq login for better recommendations
  3. Customized delivery days
  4. You and bae subscribe independently of each other. This is a big change, but necessary because of 2
  5. Brunch recos
  6. Better weather predictions
  7. Highlighting venues you've been to / liked before
  8. You can now save new venue to a 4sq list (BaeLife Faves)

Log in or sign up for Devpost to join the conversation.