Building News4Good: A First Take At Software Engineering For Four Undergrads


    by Rachel Markell and Elaine Jiang

    As college students living in a fast-paced society, we’re expected to stay informed about what’s going on in the world. And for the most part, we do. And while, sure, sometimes we join a protest or participate in a heated discussion on Facebook, for the most part we (at least the members of our project team) consume our news passively. We scroll through articles on our way across campus, briefly moved by whatever we read, and then – nothing. From this realization sprang News4Good, a website devoted to actively engaging users with the articles they read. The site ( features articles pulled from over 60 diverse news sources, each tailored to match the user’s interests, and each matched with two related charities that the user can donate to directly through our app.

    News4Good was our final project for the class CS32 Introduction to Software Engineering. As the course progressed, we gained experience building web applications from scratch, from their underlying data structures to their user interfaces. What began as just a school project turned into a product we hope to continuously improve and share with others.

    Before we actually started designing our project and coding it, we polled the Facebook community to gain insight into our friends’ news-reading habits and the current barriers that discourage them from donating to charities they care about. The majority of our survey respondents said that they would be more likely to donate to a charitable cause if they believed in it and could do so conveniently. From our initial surveys and user interviews, we discovered that the biggest challenges for News4Good were:

    • Relevance: People only want to donate to charities and Non-Governmental Organizations (NGOs) they know about and care about, so article and charity matching must be as accurate as possible

    • Trustworthiness: Many of our peers mentioned that a secure form of payment was highly important to them, as well as transparency in how their donations will be allocated

    We decided that that the goal of News4Good was to create a space that allows people to easily access and securely donate to charities related to events they care about.

    Next, we had to figure out how we were going to divide up the project between the four of us. This surprisingly turned out to be a new experience for all of us because in the past, nearly all of our projects were done solo in order to help us build the confidence and independence to write a program from start to finish. Since News4Good is backend-heavy –the bulk of the project was its algorithms– we agreed to have three of us (Purvi Goel, Rachel Markell, Lauren Ho) focus on coming up with those algorithms, and one of us (Elaine Jiang) design the user interface.

    We gathered thousands of news articles from various news Application Program Interfaces (APIs) as a training set, used Natural Language Processing to develop categorization and matching algorithms based on this training set, and structured a database to store all this information. The simple charity donation process, however, was not seeming as feasible. We had decided to use Stripe, a company that would allow us to securely process payments from users through their API, but there was still the problem of where to send the money. We had created a database of almost 20,000 charities using the OrgHunter API, but the charities didn’t provide the type of information that would make it easy to generically route money to them.

    Serendipitously, while we were contemplating this problem, we were also corresponding with MakeMyDonation, the parent company of the OrgHunter API. After answering some of our questions, they mentioned that they also provide a way to donate to the charities in their API. We sent hundreds of emails back and forth, signed a contract, and began incorporating donations into our website. We still used Stripe to safely process user payments, but instead of sending the payment directly to a charity, we sent it to MakeMyDonation along with some metadata that would allow them to handle the actual donation.

    During our final presentation to our professor, JJ (John Jannotti), and the head TAs, we were able to demonstrate the donation process from our website. With JJ’s encouragement, we decided to continue working on News4Good, and we’re hoping to partner with NGOs in Providence to reach more people. Our next steps would be to offer more categories of news and add location sensitivity into our charity matching. We have enjoyed this process of using software engineering as a tool to create something we believe in, and we’re very excited to see how far we can take this project.