Inspiration
I do a lot at once: hackathons, science fairs, competitions, and clubs like Speech and Debate, on top of school. Every season, the list of things I could apply to was way longer than the hours I had. The only trick that worked for me was building one solid project and submitting it to several contests. But figuring out which contests were actually worth my time, and which of my existing work counted for each, was all gut feeling and messy spreadsheets. I wanted a tool that would make those calls with me, show its reasoning, and tell me when one project could cover three applications. So I built it.
What it does
Opportunity OS takes your grade, location, weekly hours, busy periods, and the projects you've built, then turns a pile of real competitions into a plan.
- Filters out what you can't do (grade, deadline, region, prerequisites) and states the reason for each.
- Tiers what's left into Focus, Consider, and Not now, using a runway rule: can the effort fit in the hours you have before the deadline?
- Schedules your weeks. Commit to opportunities and it back-fills hours from each deadline, flags overloaded weeks, and tells you when to start.
- Shows reuse as a web: one project connected to every opportunity it supports, labeled with the matched skills.
- Explains any recommendation with "Ask why", and a what-if slider shows what changes if your weekly hours change.
There are no scores or percentages, so every recommendation traces back to a rule.
How we built it
Vite, React, TypeScript, Tailwind v4, and shadcn, running entirely in the browser. The core is a deterministic, pure TypeScript engine covering eligibility, tag matching, tiering, the reuse graph, gaps, and a deadline scheduler, backed by a vitest suite (300+ tests, including seeded property tests for the scheduler). AI only proposes and explains: Gemma runs through the Gemini API behind a dev proxy, with guards that check every title and number against the engine's facts, and it falls back to cached answers and then templates. The dataset is 10 real opportunities, each verified against the organizer's own page. I built the UI with Claude Code from a written design brief, and the README discloses the AI tools used.
Challenges we ran into
- Trusting AI output. Local models fabricated data and misreported test results, and my first dataset got thrown out. I switched to human-verified data and raw test output as the only evidence, and found that the plain type check wasn't checking anything, so I moved to a real
tsc -b. - Keeping AI out of the decisions. Hosted-model latency and reasoning text leaking into answers meant building guards and fallbacks, so the app still works if the LLM doesn't.
- Scope. A solo 12-hour build meant cutting features aggressively.
Accomplishments that we're proud of
- A decision engine where every output has a stated reason: no black box, no fake precision.
- The reuse web, which makes "build once, open several doors" visible at a glance.
- A scheduler with tested guarantees, such as order independence and no hours placed past a deadline.
- A dataset I can defend, because every deadline was verified at the source.
- An app that still works with the AI turned off.
What we learned
- Rules you can explain beat scores you can't, especially when someone is making a real decision with limited time.
- AI works best as an explainer around a deterministic core, not as the decision-maker.
- Verify everything an AI tool tells you, whether it's a test result or a deadline.
- Honest limits (tag-based reuse, curated data, estimated hours) build more trust than big claims.
What's next for Opportunity OS
The long-term vision is for Opportunity OS to truly live up to the word "OS": an operating system for your time, not just a student tool. The core idea is that your existing work, anything that shows real depth, is your most reusable resource. A research project, a portfolio piece, or a body of writing can serve many goals, and a system that tracks it can show you where it already counts and what small addition would unlock more.
- Agentic opportunity discovery. Right now I add and verify every opportunity by hand. Next, AI agents will find new opportunities, read the organizer's own page, and extract the deadline, eligibility, and requirements, with no manual entry. Each extracted field would be checked against a verbatim quote from the source page before it reaches the engine, and anything uncertain would be flagged for review. The agents gather and extract; the rules still make every decision.
- Self-updating data. Agents re-check sources continuously, so deadlines, eligibility changes, and closed programs update on their own and the plan stays current.
- A living profile. Your projects, writing, and achievements accumulate as assets, and the system tracks what each one can support.
- Beyond students. College fellowships and research first, then jobs, certifications, and career transitions: anyone managing limited hours against many options.
- Calendar integration. Commitments flow into the calendar you already use, with reminders for start-by dates.
- Smarter reuse. Gap detection that recommends the one piece of work to build next because it would unlock the most doors.
Log in or sign up for Devpost to join the conversation.