Inspiration
Inspiration
High-value opportunities are everywhere, but they are fragmented across job boards, scholarship sites, competitions, marketplaces, local listings, newsletters, and countless other sources.
Search can find links, but it does not answer the harder questions: Is this actually relevant to me? Am I eligible? Is it worth the effort? Is the information current? Have I already seen it? Did something change? What should I do next?
I wanted to build an agent that moves beyond information retrieval into persistent, personalized decision support.
The core idea became:
Know Me → Hunt → Decide → Remember → Act → Repeat
What it does
Opportunity Hunter lets a user describe almost any opportunity they want to find in ordinary language, without having to construct complicated filters.
For example:
- Find AI hackathons I can still enter.
- Find scholarships for a high school student interested in music and science.
- Find sports-card estate sales within 25 miles.
- Find consulting opportunities that fit my experience.
A Hunt can also incorporate personal context such as what the user can do, what they care about, what they want to achieve, and their constraints or preferences.
Opportunity Hunter then:
- interprets the user's goal,
- infers useful search criteria,
- searches current web sources,
- verifies candidate-specific evidence,
- normalizes and deduplicates opportunities,
- evaluates and ranks each opportunity,
- compares results with persistent memory,
- identifies NEW, UNCHANGED, and CHANGED opportunities,
- recommends PURSUE, CONSIDER, or PASS,
- creates actionable next steps for the strongest opportunities.
The interface supports both completely free-text Hunts and persistent Saved Hunts. The MVP includes examples such as AI Competitions and Sports Card Estate Sales.
Results include a ranked table, scores, recommendations, source links, change state, expandable analysis, Copy Results, and CSV export.
How we built it
Opportunity Hunter is built as an agentic workflow using Google Agent Development Kit (ADK) and Gemini on Vertex AI.
A root agent coordinates the workflow. A Scout agent uses Google Search to discover current opportunities. Candidates are then verified, normalized, deduplicated, and evaluated with a weighted decision framework:
- Strategic fit: 30%
- Capability fit: 25%
- Expected value: 20%
- Probability of success: 15%
- Effort efficiency: 10%
Scores of 80+ are PURSUE, 65–79 are CONSIDER, and lower scores are PASS.
Cloud Firestore provides persistent memory for profiles, Saved Hunts, opportunities, and evaluations. Stable identifiers and material fingerprints allow the agent to recognize whether an opportunity is NEW, UNCHANGED, or CHANGED across different runs.
For strong opportunities, a specialist Pursuit Strategist generates risks, tradeoffs, an immediate next action, and a time-aware pursuit plan.
The application uses FastAPI and is deployed publicly on Google Cloud Run, with Cloud Build supporting deployment.
Challenges we ran into
The biggest challenge was moving from “AI search” to trustworthy agentic decision support.
Live web results can contain stale listings, duplicates, incomplete information, generic landing pages, or opportunities whose deadlines have already passed.
To address this, I added explicit source-discipline rules. High-confidence recommendations require candidate-specific evidence when an exact listing should exist. A generic portal, directory, or homepage cannot support a PURSUE recommendation simply because it mentions the organization.
Persistent memory created another challenge. The agent needed to recognize meaningful changes instead of treating every search result as brand new. Firestore persistence combined with stable IDs and material fingerprints solved that problem.
Testing also uncovered a time-awareness problem when an action plan recommended preparation phases that had already passed. The Pursuit Strategist now receives the current date and must build its plan forward from today.
Finally, a live multi-step agent takes longer than a simple chatbot response because it is searching, verifying, scoring, checking memory, and planning. The interface therefore shows progress states so users can see what the agent is doing while it works.
Accomplishments that we're proud of
I'm most proud that Opportunity Hunter became a real end-to-end agent rather than a static search demo.
A single Hunt can interpret an ambiguous request, discover live information, verify evidence, deduplicate candidates, reason about fit and value, consult persistent memory, detect changes, recommend an action, and create a pursuit plan.
The same architecture also proved surprisingly general. It has successfully handled very different opportunity domains, including AI competitions, scholarships, professional opportunities, advisory opportunities, and local sports-card estate sales.
The final MVP is publicly deployed on Google Cloud Run and supports both free-text and persistent Saved Hunts.
What we learned
The biggest lesson was that the value of an agent is not simply its ability to search or generate text.
Useful agents combine reasoning, evidence, state, and action.
Search answers, “What exists?”
Opportunity Hunter is designed to answer:
What matters to this user, what changed, and what should they do about it?
Persistent memory also changes the nature of the product. Once the system remembers previous results, it stops behaving like a one-time chatbot and begins acting more like an ongoing opportunity agent.
I also learned that source quality matters as much as model intelligence. An agent that confidently evaluates stale or incorrect information is worse than one that admits something still needs verification.
What's next
The next major step is making Saved Hunts truly autonomous:
Cloud Scheduler → Cloud Run → Opportunity Hunter
That would allow Hunts to execute on a recurring schedule without the user manually starting them.
From there, Opportunity Hunter could notify users only when a genuinely new or materially changed high-value opportunity appears.
Other extensions include résumé and public-profile ingestion, deeper preference learning, Google Sheets/Gmail/Calendar integrations, collaborative Hunts for teams or schools, and ranking that learns from which opportunities users pursue, ignore, win, or reject.
The long-term goal is simple:
Don't give me more things to search. Give me the opportunities worth acting on.
Log in or sign up for Devpost to join the conversation.