Inspiration

I want to reduce my screen time and I am looking for ways to get the information I care about such as weather, tech news, and daily events at a glance without having to click around multiple apps. I went with SMS as that is my main communication hub and the format is great for providing at-a-glance information.

What it does

This app sends a daily AI-synthesized SMS message to your phone at a specificed time (7am PST currently) containing the daily maximum temperature, wind, and weather conditions, the top two headlines from The Verge, and a fact about space (as a placeholder because Outlook Calendar integration is more frustration than I had capacity for this weekend).

How we built it

This app was built with JavaScript and runs perpetually as an Express server on my Raspberry Pi. It uses OpenWeatherMap to fetch weather data for a given city, Cheerio to scrape headlines, OpenAI to generate the message, Nodemailer to send the SMS, and cron to do the daily scheduling.

Challenges we ran into

Finding the correct way to prompt the AI to have some variability without ruining the formatting of the message was tricky. I was impressed with how well it could pick weather data out of a large JSON string but the temperature of the model had to be tweaked a lot for the model to consistently pick out the information I want.

Accomplishments that we're proud of

I am pretty proud of creating an app that I would legitimately use in only an afternoon. I used a few new-to-me technologies in this app such as Nodemailer and Cheerio and am impressed that I got them to work with the rest of the app.

What we learned

I learned a lot about the value of asynchronous programming as every indivudual function is basically an API call that takes some amount of time to complete. I also learned a lot about the flexibility of the OpenAI API and would love to use it again in the future.

What's next for Morning Brief

Calendar integration. I was close and actually had a working output but there were issues with access tokens expiring and it seems you need a separate server running perpetually to constantly keep it up to date. Also, this app currently only works for someone who reads The Verge, lives in Kelowna, and has a Bell Canada phone so obviously were this to become a product, it would need some sort of customization through a web interface. I think this app has a lot of potential and I like this current versino as a proof-of-concept so I will keep updating it over the summer. I can also add an OSS license if anyone wants to contribute.

Built With

Share this project:

Updates