Inspiration

Opportunity Finder started with a problem I kept running into myself.

Whenever I searched for scholarships, internships, volunteer opportunities, competitions, or summer programs, I found myself opening tab after tab and jumping between completely different websites. Some opportunities were outdated. Some were meant for college students. Others looked perfect until I discovered a citizenship requirement, age restriction, residency rule, or another condition buried somewhere deep on the page.

Sometimes I would spend ten minutes researching an opportunity only to realize at the very end that I could not even apply.

Eventually, I realized something important.

The hardest part was not finding opportunities. It was finding the right ones.

I started asking friends and other students how they searched for opportunities and collected feedback from around 20 peers. Again and again, I heard versions of the same problems. Students were searching across too many websites, spending too much time reading requirements, missing deadlines, and often having no idea whether an opportunity was actually meant for them.

There is an old saying that necessity is the mother of invention. For me, that necessity led to one simple question. If I was already struggling with this, why should every other student have to repeat the same search?

I did not want to build another website filled with hundreds of links and filters. I wanted to build something that understood the student first.

That idea became Opportunity Finder.

What it does

Opportunity Finder is a personal opportunity assistant built for high school students.

A student creates a simple profile using information such as their grade, age, location, GPA, and interests. From there, they can simply ask for what they are looking for in normal language. They can search for scholarships, internships, volunteer opportunities, programs, competitions, or opportunities connected to a specific interest.

The goal is not simply to answer: "What opportunities exist?" It is to answer the much more useful question: "Which opportunities actually make sense for me?"

Opportunity Finder searches for opportunities, reads their requirements, converts important information into structured data, compares those requirements with the student's profile, and ranks the strongest matches.

The system distinguishes between Eligible, Likely eligible, More information needed, or Not eligible. That distinction matters because eligibility is rarely determined by one simple requirement. A remote internship can still require applicants to live in North Carolina. A scholarship can accept high school seniors while requiring United States citizenship. A program can perfectly match a student's interests while having an age requirement they do not meet.

Opportunity Finder evaluates those conditions independently rather than assuming that one strong match means the student qualifies. The system also explains why an opportunity fits the student using actual information from their profile and the requirements that were found

Students can save opportunities, track the ones they want to apply to, mark applications as submitted, and avoid repeatedly seeing opportunities they have already reviewed. In other words, Opportunity Finder is designed to help students spend less time searching and more time actually applying.

How we built it

Computer scientist Richard Hamming famously wrote, "The purpose of computing is insight, not numbers." That idea describes much of the way I approached Opportunity Finder. I did not want the project to simply return more search results. I wanted it to turn those results into information a student could actually understand and use.

The conversational experience connects to a custom TypeScript MCP server. The server handles opportunity discovery, structured extraction, and eligibility checking. It also takes care of ranking, personalization, and tracking what each student has already done. When a student searches, the backend first checks a shared opportunity database powered by Supabase. If an opportunity has already been discovered and processed, another student can reuse that information almost instantly, while eligibility is still calculated separately for every student.

If there are not enough relevant results in the database, Opportunity Finder uses Tavily to search the web. It looks across broad web results while giving extra attention to trusted student opportunity websites and official organizations. A directory can be useful for discovering an opportunity, but that does not automatically make it the best source. Opportunity Finder looks at where the information came from and how trustworthy that source appears to be. Whenever possible, it prefers the organization actually responsible for the opportunity.

After an opportunity is found, Featherless AI helps read the page and turn messy information into structured facts. it can identify things like grade requirements, age limits, and GPA requirements. It can also recognize residency rules, citizenship requirements, and other restrictions. Details such as location, work mode, and deadlines are extracted when they are available

But I made one decision very deliberately. AI does not make the final eligibility decision. Once those facts are extracted, deterministic TypeScript logic compares them with the student's profile. I wanted eligibility to behave like an engine rather than an opinion. If an opportunity requires North Carolina residency and a student lives in California, the conclusion should not change because an AI model happened to phrase its answer differently. The same facts should lead to the same result.

As one saying goes, measure twice, cut once. That principle became especially important when the system was deciding whether an opportunity was actually worth a student's time.

Challenges we ran into

For me, the biggest challenge was not finding opportunities. It was deciding when the information was trustworthy enough to act on. A remote internship, for example, can still require applicants to live in a specific state, so I had to separate work mode, physical location, and residency instead of treating them as the same thing. I also had to account for special requirements and cases where information was incomplete, which led to a rule I kept coming back to - sometimes "Not specified" is better than a confident guess.

Another big challenge came from the interface itself. I used Poke as it was a fast way to connect my MCP server to a conversational experience, but during development I ran into limitations outside my control. Poke sometimes reformatted parts of the structured response from my backend, and at one point a server side error in their Recipe workflow prevented me from properly submitting and sharing the integration. That was frustrating, but it also taught me a very important lesson: do not put the heart of your product somewhere you do not control.

Because of that, the important logic already lives in my own backend, not inside Poke. Eligibility, ranking, source checking, and user data are handled by Opportunity Finder itself. Poke is only one interface for the current prototype. Running into those platform limitations gave me even more motivation to build a dedicated Opportunity Finder platform next, with its own AI chat and full control over how results, eligibility, explanations, and saved opportunities are shown.

Accomplishments that we're proud of

I am especially proud that my project became much more than a simple AI search tool. It has a real eligibility engine that checks things like grade, age, residency, citizenship, GPA, and work mode, while still distinguishing between Eligible and Likely eligible when the evidence is incomplete.

I am also very proud of how the project combines AI with deterministic logic. Featherless AI helps interpret messy web information, while code handles the decisions that need to stay consistent and trustworthy. The system also remembers what students have already seen, saves opportunities, tracks applications, and reuses previously discovered results through a shared cache.

Most importantly, the project was shaped by feedback from around 20 students. What I kept hearing was that the real challenge was not finding opportunities, but figuring out which ones were actually worth pursuing. And, turning that shared frustration into a working product during a short hackathon is what I am the most proud of.

What we learned

Building Opportunity Finder changed the way I think about AI products. I learned that making a product smarter does not always mean giving AI more control or tools. AI is great at understanding messy information, but deterministic code is what's the best for decisions that need to be consistent and explainable.

I also learned that finding a link is only the beginning. A useful system still has to understand the opportunity, check whether it fits the student, and remember what happens afterward. But, most importantly, what this project really taught me is talking to other students reminded me to build around real problems instead of features that simply sound impressive.

What's next for Opportunity Finder

Poke helped me build the first conversational version quickly, but I do not want the future of Opportunity Finder to depend on another platform. My next goal is to build a dedicated web and mobile experience with its own AI chat, giving me full control over how opportunities and eligibility are presented.

Students could receive interactive opportunity cards, manage applications from a personal dashboard, and get reminders before important deadlines. Over time, Opportunity Finder could also learn each student's preferences and become better at deciding which opportunities deserve their attention.

The larger vision is to turn Opportunity Finder into a personal opportunity manager that stays with students as their goals change. As the saying goes, opportunity does not knock twice. My goal is to make sure students hear the first knock.

Built With

Share this project:

Updates

Submission history