Inspiration

Opportunity Graph started with a problem I experienced myself.

Back in high school, I wanted to participate in hackathons, competitions, scholarships, summer programs—anything that would help me learn, meet people, and challenge myself. The problem wasn't motivation. It was discovery.

Finding opportunities was surprisingly difficult. Information was scattered across dozens of university websites, organizations, Discord servers, newsletters, and social media accounts. More than once, I discovered an opportunity that was perfect for me... only to realize the registration deadline had already passed.

I kept thinking: there has to be a better way.

So instead of waiting for someone else to build it, I decided to create the platform I wish I had back then.

Opportunity Graph is a free directory that helps students discover educational opportunities in one place, making it easier to find scholarships, hackathons, competitions, internships, fellowships, and more before it's too late. The goal isn't to replace official sources—it's to help students discover them and then direct them to the official application pages.

How It Was Built

The project is built with Next.js, TypeScript, and Supabase, using a graph-based recommendation system instead of an AI recommendation engine.

Every student builds a profile based on their interests, goals, skills, and academic background. Those interests are connected through a knowledge graph to verified opportunities, allowing the platform to rank opportunities according to how well they match each student.

Rather than relying on an opaque AI model, every recommendation is generated by a deterministic scoring algorithm that considers:

  • Interest match
  • Eligibility
  • Application deadline
  • Experience level
  • Popularity

Because the recommendation process is deterministic, every result can explain why it appears instead of simply saying, "the AI recommended this."

To keep the opportunity database up to date, AI is used only where it adds real value: extracting structured information from official opportunity pages. Every extracted opportunity is reviewed before becoming visible to students, helping maintain accuracy while reducing manual work.

Challenges We Faced

The biggest challenge wasn't building another recommendation system—it was building one that students could actually trust.

Educational opportunities contain lots of important details: eligibility requirements, deadlines, locations, application links, and academic restrictions. A single mistake could cause someone to miss an opportunity.

Instead of generating recommendations with an LLM, I designed the recommendation engine to be fully explainable and deterministic. AI helps organize information, but it doesn't decide what students should apply to.

Another challenge was balancing automation with reliability. Scraping hundreds of opportunity pages is useful, but only if the information remains accurate. That led to a review workflow where extracted opportunities are validated before appearing in the platform.

What I Learned

This project taught me that solving a real problem is much more than writing code.

I learned how to design systems around trust, explainability, and long-term maintainability. I also gained experience combining traditional software engineering with AI in a way that gives each technology a clear responsibility instead of using AI as a black box.

Most importantly, I learned that some of the best projects come from solving a problem you've personally struggled with.

What's Next

Opportunity Graph is only getting started.

My goal is to continue expanding the number of verified sources, improve recommendations, support more countries and educational systems, and make discovering opportunities easier for every student.

If Opportunity Graph helps even one student find the internship, scholarship, competition, or hackathon they otherwise would have missed, then it's already doing exactly what I hoped it would.

Built With

  • google-gemini
  • next.js
  • supabasedb
Share this project:

Updates

Submission history