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:

  1. Discover opportunities using Google Search grounding and return a small preliminary shortlist.
  2. Let the user choose a competition for Deep Analyze.
  3. Follow official pages, rules, FAQs, PDFs, and other relevant sources.
  4. Build structured competition facts with source provenance.
  5. Evaluate hard eligibility conservatively.
  6. Evaluate fit based on skills, feasibility, time, reward, participation burden, and strategic value.
  7. 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

Share this project:

Updates

Submission history