Activism Platform - Nonprofit Finder

Objective

The Activism Platform organizes and promotes activism by connecting users to nonprofit organizations:

  • Promote accessibility with searching for organizations feature
  • Promote impact and reach with recommending organizations feature
  • Promote relevancy with crowdsourcing from users feature

Alt Text

STEP Internship

This web app is our capstone project for our Google STEP Internship. This internship offers first and second-year undergraduate students the opportunity to work on a software project alongside other STEP interns and full-time Googlers, and provides the chance to bridge the gap between academic understanding and practical professional experience.

Table of Contents

Features

Here are some of the main features of our web app

Searching and Ranking

Our searching functionality helps make organizations more accessible to users. You can search by keyword or by category.

Search by Keyword

Simply type a keyword or key phrase of your interest in the search box and hit enter or click the search icon. It will then take you to the results page. You can search from any page of our website by clicking on the search icon located in the top navigation bar.

Alt Text

Search by Category

Interested in a category of organizations? We got you! Powered by the Google Cloud Natural Language Content Classification, we have grouped organizations by their names and mission statements for your convenience. Click on the arrow on the side navigation bar to explore the categories, and click on a category's text to see organizations in that category.

Alt Text

Ranking

We value your opinion! If you like an organization, give it a thumbs up. If you dislike one, you can also give it a thumbs down to help other users. We rank the search results for either keyword or category by the net number of thumbs ups. Net thumbs ups = number of likes - number of dislikes, so go ahead and give your favorite nonprofit a thumbs up!

Alt Text

Pagination

Believe it or not, we have collected information on thousands of organizations for you! We only show 10 results per page. You can navigate through the other results with our intuitive pagination UI!

Alt Text

Machine Learning

We use Machine Learning (ML) to recommend organizations that a user may like to promote impact and reach of nonprofits.

Text Similarity

We assigned each organization four other nonprofits that are "Like this." We achieved so with text similarity analysis based on the names and mission statements of all the organizations in our database. Here is our process for text similarity:

  1. Remove stopwords (a, the, is etc.), numbers, and punctuations from sentences, and convert all text to lowercase
  2. Lemmatize the sentences by grouping inflected forms of words together (i.e. "likes" is the same as "like")
  3. Embeds sentences into weighted vectors with the TensorFlow Universal Sentence Encoder
  4. Train a k-Nearest Neighbor (k-NN) classifier on the weighted word vectors
  5. Feed our model an input (name + mission statement of an organization) and let our ML model find most similar organizations to the input

Alt Text

Collaborative Filter

We can also make very personalized recommendations to users based on their ratings of organizations and other users' ratings. The idea is that people of similar interests are probably going to like the same organizations. Our collaborative filter not only captures the similarity among users, but also utilizes the text similarity results from the previous section. Here is our workflow:

  1. Fetch the user ratings: thumbs up is stored as 1.0 and thumbs down is stored as -1.0
  2. Generate matrix with (number of organizations) rows and (number of users) columns from user ratings
  3. Fill unrated organizations in the matrix with ratings of similar (text similarity) organizations from the same user
  4. Run Singular Value Decomposition (SVD) on the filled matrix, and for dimensionality reduction, only keep k most significant singular values
  5. Recompose a matrix from SVD output as our prediction
  6. Find three new organizations with the highest predited ratings to recommend to each user

Alt Text

Crowdsourcing

Our web app promotes relevancy with a crowdsourcing feature along with admin tools to moderate user uploaded content.

Uploading

Know an organization that is not yet in our database? Please contribute! You can enter the organization's name, website link, and mission statement on our upload page.

Alt Text

Moderating

To ensure the high quality of the content in our database, we built an admin console to review all uploaded submissions. The admin console displays existing organizations of the same name along with the submitted information for verification. An admin can either approve (send new organization to our database) or not approve (discard this uploaded entry).

Alt Text

Disclaimers on Data Acquisition

The nonprofit organizations data is acquired through scraping publicly available information from the Internet. We obtained a list of names of nonprofits from Google for Nonprofits (G4NP). We then searched the names of organizations on Google and fetched the first result. The link and description are processed based on the Google search results.

Technology Stack

Frontend:

Backend:

Machine Learning and Scraping:

Authors

Alt Text

Acknowledgements

A big thank you to the following people, groups, and organizations that have helped us with this project:

  • Gold Intelligence, Attribution, Google Ads for hosting us and improving Machine Learning performance.
  • Google for Nonprofits (G4NP) for providing data, legal advice, and suggestions on how to use and present data to users.