-
-
Set profile once. PrizeHunter uses your eligibility facts, skills, time, team flexibility, and preferences to hunt relevant opportunities.
-
No competition URL required. Describe what you want, then PrizeHunter runs a bounded Google Search to hunt current opportunities.
-
Live Discovery returns a small preliminary shortlist with deadlines, rewards, fit signals, unknowns, citations, and Deep Analyze actions.
-
High fit does not override uncertain eligibility. PrizeHunter keeps unresolved rules explicit and returns VERIFY FIRST instead of guessing.
-
PrizeHunter turns evidence into next moves, clearly separating verification tasks, confirmed requirements, and AI suggestions.
-
Every deep analysis preserves source provenance across official rules, FAQs, platforms, registration pages, PDFs, and retrieved evidence.
-
Same competition, different user: a confirmed jurisdiction blocker produces NOT ELIGIBLE and stops unnecessary Fit evaluation.
-
Eligibility alone is not enough. A user with low technical fit and only 4 available hours receives SKIP with a 15/100 Fit score.
-
One ADK Agent, deterministic eligibility, source provenance, Gemini Fit and planning, Search + URL Context, deployed on Cloud Run.
-
Hotai case: HTTP saw only a title. Deep Analyze escalated to 6 sources and recovered deadlines, prize, eligibility, and team size.
Inspiration
Finding a hackathon is easy. Deciding whether it is actually worth entering is not.
Competition information is often scattered across landing pages, rules, FAQs, PDFs, registration forms, announcements, and third-party listings. A single page may not contain the real eligibility requirements, deadline, team rules, or prize details — and even official sources can sometimes conflict.
We stress-tested this problem across a purposive sample of 58 real competitions. This was an engineering stress test, not a claim about the global competition market. Only 32.8% had a first source that was sufficient on its own, while 67.2% required additional official follow-up and 87.9% required rules, terms, manuals, or PDFs.
We built PrizeHunter Agent to turn that fragmented research process into a traceable decision workflow.
What it does
PrizeHunter helps a user move from:
“What competitions should I enter?”
to:
“Can I enter this one, is it worth my time, and what should I do next?”
A user first creates a lightweight profile with information such as location, participant status, skills, available time, travel preference, interests, and team flexibility.
PrizeHunter can then:
- Discover opportunities using Google Search grounding and return a small preliminary shortlist.
- Let the user choose a competition for Deep Analyze.
- Follow official pages, rules, FAQs, PDFs, and other relevant sources.
- Build structured competition facts with source provenance.
- Evaluate hard eligibility conservatively.
- Evaluate fit based on skills, feasibility, time, reward, participation burden, and strategic value.
- Generate a source-linked action plan showing what is confirmed, what still needs verification, and what the user should do next.
Discovery results are intentionally labeled as preliminary. A candidate is not treated as verified until the deeper evidence workflow runs.
How we built it
PrizeHunter runs on Google Cloud and uses Gemini 3.7 Flash through Vertex AI.
The core extraction workflow uses one Google ADK agent:
competition_extraction_agent
Its job is to convert messy competition evidence into a structured CompetitionRecord with supporting evidence and uncertainty.
The overall pipeline is:
Profile → Google Search Discovery → Preliminary shortlist → Deep Analyze → Evidence → Extraction Agent → Competition Intelligence → Eligibility → Fit → Action Plan
For retrieval, PrizeHunter uses a layered strategy:
- HTTP / HTML / PDF extraction first
- Gemini URL Context when normal retrieval is insufficient
- Google Search grounding to escalate from a listing or aggregator to official organizer sources
We deliberately keep hard eligibility outside of free-form AI judgement. Gemini helps understand the organizer's rules, but resolved eligibility facts are evaluated by deterministic Python logic.
This creates a clear separation between:
- Organizer facts
- User facts
- Hard eligibility
- AI fit judgement
- Action suggestions
The web product is built with FastAPI, Jinja, vanilla JavaScript, Pydantic, httpx, BeautifulSoup, and pypdf, and is deployed on Google Cloud Run.
Challenges we faced
1. The first page is often not enough
One of our regression cases was the 2026 Hotai AI Hackathon.
A third-party competition page visibly showed the deadline, prize, eligibility, and team information in a browser, but our original HTTP extraction returned only about 26 characters of useful title text.
We compared three approaches:
- HTTP-only
- Gemini URL Context
- Google Search + URL Context
That experiment led us to adopt layered retrieval.
The final pipeline found six relevant sources, including the official competition site, and recovered the submission deadline, NT$1,030,000 total prize pool, NT$300,000 top prize, team size, and eligibility evidence.
2. Official sources can disagree
Our 58-competition stress test found real conflicts in deadlines and prize information.
Instead of silently trusting whichever source looked most authoritative, PrizeHunter stores source-scoped claims and keeps conflicts unresolved unless there is explicit evidence that one source supersedes another.
3. Structured output compatibility
Some combinations of Google Search grounding and complex strict response schemas returned Vertex API errors.
Rather than weakening validation, we split the process into:
grounded research → smaller structured conversion → deterministic validation
This kept the system reliable while preserving strict data contracts.
4. Avoiding false rejection
During testing, we realized that “currently entering alone” is not the same as “only willing to compete solo.”
We redesigned the profile into:
- Solo only
- Solo now, open to forming a team
- Already have a team
This prevents competitions that require multiple participants from being incorrectly rejected when a user is willing to find teammates.
Accomplishments
By the final product freeze:
- 237 tests passed, 3 skipped, with 0 failures
- PrizeHunter was deployed as a working Cloud Run application
- Live Discovery returned 7 candidates using one grounded Search call plus one structuring call
- A live All Things Agentic analysis completed in 83.97 seconds
- That analysis consulted 6 sources, produced a conservative eligibility result, a Fit evaluation, and 6 source-linked actions
- PrizeHunter successfully analyzed and planned its own All Things Agentic submission
We also implemented a private judge-access layer so evaluators can test the hosted product without receiving any Google API keys or service-account credentials.
What we learned
The biggest lesson was that competition intelligence is not mainly a summarization problem.
It is a retrieval, provenance, uncertainty, and decision-boundary problem.
Using Gemini everywhere would have been simpler, but less trustworthy.
We found a better division of responsibility:
- Gemini understands messy language and evidence
- Google Search and URL Context retrieve difficult sources
- deterministic code handles hard eligibility
- Gemini evaluates nuanced fit
- humans remain responsible for final verification and external actions
That combination made PrizeHunter more conservative, explainable, and useful.
What's next
PrizeHunter currently performs discovery when the user requests it.
Future versions could add:
- scheduled daily or weekly opportunity discovery
- saved competitions and persistent user profiles
- deadline and verification reminders
- deeper registration-form analysis
- persistent action-plan progress
- team or organization workspaces
For this hackathon version, we intentionally kept the product bounded: it finds, verifies, evaluates, and plans — but it does not automatically submit applications or perform external actions on behalf of the user.
Built With
- artifact-registry
- beautiful-soup
- docker
- fastapi
- gemini
- google-adk
- google-cloud-build
- google-cloud-run
- google-gen-ai-sdk
- httpx
- javascript
- jinja
- pydantic
- pypdf
- python
- vertexai
Log in or sign up for Devpost to join the conversation.