Inspiration

The Opportunity Gap

In a society where education plays a crucial role in opportunity and growth, financial barriers continue to limit access for countless woman. Scholarships and grants are meant to bridge this gap, however, many woman remain unaware of opportunities tailored to their unique qualifications and aspirations.

Research highlights that there is a persistent disparity in access to finical aid with women, especially those from underrepresented backgrounds, often struggling to secure funding for their educations or careers. The volume of opportunities coupled with unclear eligibility criteria can make the search daunting. Even when women do find scholarships, identifying the right match can be even more challenging. This often discourages women from applying altogether, ultimately pushing them further away from their educational goals.

A Step Towards Change

Manually sifting through hundreds of scholarships and grants is outdated and inefficient. Our product seeks to streamline the scholarship search process by intelligently matching women with opportunities tailored to their qualifications and aspirations. By leveraging technology, we aim to remove unnecessary barriers and ensure that financial aid is accessible, empowering women to pursue their education.

What it does

Features

  • Apply for Women's Scholarships and Grants with Ease. Explore a curated list of funding opportunities and unlock new possibilities for your education and career.
  • Easily access and apply for scholarships, grants, and financial aid tailored for women.
  • AI-powered matching algorithm connects users with the scholarships and grants that best fit their profile
  • Personalized recommendations based on users academic background and unique qualifications
  • Stay organized and on top of scholarship applications with our intuitive tracking system

Endless Opportunities

  • 200+ up to date opportunities available
  • $500,000+ dollars in funding found
  • 95% accuracy in matching candidates.

How we built it

Web Scraping

We built a node.js application using puppeteer to scrape almost 300 scholarships and funding opportunities for women across different websites. We extracted key attributes about each opportunity such as the title, description, amount awarded, eligibility requirements, and deadline.

AI Matching Algorithm

Using the metadata we extracted from each opportunity, we used OpenAI embeddings to vectorize each one into a Pinecone vector database. Then for a given user, we can query their data across all vectors to find opportunities with the most similar keywords and most relevance to them (based on the user’s attributes like their field of study and interests).

User Interface

Our front end was built using NextJS and styled with Tailwind CSS. The register page allows users to POST to our user database which is then queried against the Pinecone vector database to retrieve top matches in the form of interactive cards. The status of each card is then stored and can be manipulated by the user through the tracking interface.

Challenges we ran into

GitHub

When setting up our project we changed around our file structure a lot to find what worked best. However, in the process we ran into phantom directories most likely caused by caching or incomplete deletions, resulting in differing local and remote repositories. In addition, we ran into a couple merge conflicts from accidentally writing conflicting/overlapping code. Although it wasn’t difficult to resolve them, it did take some extra time away from building the product.

Hydration errors

During our front-end development with NextJS, we ran into several Hydration errors which occurred when our server-rendered html did not match our client-rendered DOM. While this didn’t affect the behavior or display of our components, it did result in a big error bubble in the bottom left of our screen. We were able to resolve these errors but it did take up a good chunk of our time.

Pinecone Retrieval Formatting

When working with pinecone to query the vector database and return the top K most similar vectors, the format returned was one we had not encountered before. We attempted several approaches resulting in the refactoring of our methods a couple times. We eventually stumbled upon jsonable_encoder which resolved our problem and was reused in a couple methods.

Mongo IP addresses

One member was initially in charge of managing the two databases and so when it came to MongoDB, they had been the only one using it. However, when another member tried to connect to MongoDB on the cloud (atlas), it was returning very slow and with incorrect information. For a while we could not figure it out until we realized that we had to allow specific IP addresses on the MongoDB atlas dashboard. This happened a couple other times as well but we were able to resolve it quickly.

FastAPI JSON Parameters

Because of the way we store our user data in MongoDB, we designed our API to use a large JSON as a parameter. However, when trying to make calls to our API from the front-end, we ran into a lot of different errors. While most we were able to figure out quickly, the invalid type/object error kept coming back. Eventually, we figured out that we had forgotten to stringify the json object and had a field in the JSON that did not match the expected fields.

Accomplishments that we're proud of

The Product

We are super proud that we were able to finish our product as this hackathon was a very last minute decision to enter. It was our member’s 1st, 2nd, and 3rd hackathon and we think we performed very well. We believe we created not just a cool product but a truly impactful product that can empower women in all fields.

Our Persistence

From the very start of the hackathon we worked non-stop, taking minimal breaks. When we first drew up the product we knew it would take a long time and that it would be hard to finish before the deadline, so we really dialed in and coded non-stop. We worked deep into the night and even when we wanted to sleep, we knew we had to keep pushing if we wanted to finish. On top of that, getting crazy bugs that you have never even seen before at 4 am is not the most encouraging. Although we may be deep in sleep debt, we are proud that we persisted through all the challenges and completed the hackathon.

What we learned

  • How to do web scraping with puppeteer
  • How to use vector databases and embeddings
  • How to create a web application with Next.js
  • How to create API routes with FastAPI in python
  • How to create and query collections in MongoDB Atlas

What's next for fundHer

As the goal of fundHer is to provide women with accessible and tailored financial aid opportunities, expanding the scholarship database is the logical next step. This would include finding more general, niche, and even international scholarships. On top of scraping, we want to partner with various organizations and universities who share our value and want to help us offer access to an even broader range of financial aid opportunities.

While the current matching algorithm achieves a high matching accuracy, it would benefit from expanding to incorporate a wider variety of attributes and qualifications for an even more personalized experience. Additionally, integrating machine learning techniques could allow the system to adapt and improve over time based on user interactions.

We also understand that having to manually fill in your information into multiple applications is tedious and repetitive. It is our intention to streamline this process by enabling users to auto-fill scholarship applications with their stored profile information.

Built With

Share this project:

Updates