-
-
Discovery view: Opportunity Radar AI finds hackathons and classifies them as actionable, uncertain, or blocked.
-
Evidence view: AWS CDS is blocked, with the official rule quote and source link shown directly in the interface.
-
Profile + MCP view: changing the demo profile updates eligibility while live MCP tool activity stays visible.
Inspiration
Finding a hackathon is easy. Knowing whether you can actually participate is much harder.
Opportunity listings often show deadlines, prizes, and exciting descriptions, but critical restrictions are buried in official rules. A promising opportunity might already be closed, require membership in a specific organization, or have an unverified submission window.
We encountered these problems while developing a one-way Telegram news digest.
In our September 29, 2026 dataset, COMPSPHERE 12 appeared to have "1 day left," even though its official rules closed initial submissions on September 18. The AWS CDS Agentic AI Partner Hackathon required AWS Partner Network affiliation. Meanwhile, OpenCV AI Competition had no dated submission window in the captured official rules.
We wanted to build something more useful than another opportunity search tool: an agent that can explain whether you can actually act on an opportunity, and prove why.
What it does
Opportunity Radar AI turns opportunity discovery into an evidence-backed conversational workflow.
Users can ask:
Find international AI hackathons I can still enter.
The agent searches available opportunities, checks the official-rule evidence against a user profile, and classifies each result:
- ✅ Actionable: The verified rules support participation.
- ❓ Uncertain: Essential information cannot be confirmed.
- ⛔ Blocked: A deadline, eligibility restriction, or other requirement prevents participation.
Every decision is supported by relevant facts, source URLs, and quoted evidence.
The experience also supports multi-turn interactions. Users can ask why an opportunity was rejected, request the supporting evidence, or say "Recheck it" after discussing a particular competition. The agent resolves that reference using conversation context and invokes the appropriate MCP tool.
Users can also edit their demo profile, including age, country, student status, organizational affiliation, and online-only preferences. Eligibility is recalculated when those details change.
Most importantly, the system does not turn missing evidence into a confident answer. When an official deadline cannot be verified, uncertainty remains visible.
How we built it
We extended an existing Telegram digest into a structured opportunity-verification system.
The architecture follows this pipeline:
Opportunity sources → Structured records → Deterministic verification → Opportunity service → MCP server → Conversational agent
The verification layer parses official rules and evaluates three separate dimensions: opportunity lifecycle, eligibility, and verification status. It preserves deadline precision, time zones, freshness information, and conflicts between listing metadata and official rules.
Each conclusion carries supporting evidence, including its source URL, relevant quotation, and verification metadata.
We implemented a real, self-hosted Model Context Protocol (MCP) server, using the official Python MCP SDK (mcp==2.2.0). It exposes four tools over Streamable HTTP:
search_opportunities— discover available opportunities.get_opportunity_details— retrieve structured facts and official-rule evidence.check_eligibility— evaluate an opportunity against a user profile.verify_opportunity— re-read official rules and update verification results.
The conversational backend communicates with these tools through the official MCP client. A browser-based interface displays opportunity cards, evidence, profile controls, and live tool activity.
Alexa+ integration scope: The web interface is a simulated Alexa+ conversational experience backed by a real MCP server. We did not deploy or test inside the actual Alexa+ runtime because the relevant developer tools were not available to us.
The demo uses a reproducible offline snapshot captured on September 29, 2026. It does not claim to show live opportunity availability.
Challenges we ran into
Conflicting deadlines and incomplete rules. Listing metadata cannot always be trusted. We designed the verifier to prioritize official-rule evidence and preserve uncertainty when essential details are missing.
Preventing unsupported AI conclusions. An earlier language-model-assisted digest could describe an uncertain opportunity as actionable. We moved status, deadline, eligibility, and other decision-critical fields into a deterministic verification layer. A language model cannot override those facts.
MCP SDK compatibility. Version 2 of the Python MCP SDK differs substantially from older tutorials. We had to work through renamed APIs, structured tool outputs, and protocol-version negotiation.
Maintaining MCP sessions. Reusing a long-lived MCP client from asynchronous web request handlers initially caused task-ownership errors. We resolved this with a dedicated session-owning task.
Testing real transport behavior. We wanted more than mocked MCP calls, so we added integration tests exercising the official client against the actual Streamable HTTP server.
Accomplishments we're proud of
- A working, self-hosted MCP server with four structured tools.
- Tested MCP protocol
2025-11-25compatibility. - Multi-turn conversations that preserve context and handle ambiguous references explicitly.
- Evidence-backed eligibility decisions that distinguish actionable, blocked, and uncertain results.
- 182 automated tests, including end-to-end MCP integration tests.
- A reproducible offline demonstration that requires no external API key.
- A transparent architecture separating the simulated Alexa+ interface from the real MCP implementation.
The submitted video was recorded when the suite contained 180 tests; the latest repository contains 182.
What we learned
The hardest part of a useful agent is not finding information. It is knowing when the available evidence is insufficient.
Structured tool outputs, provenance, explicit uncertainty, and deterministic decision boundaries make an agent more trustworthy than confident-sounding answers alone.
We also learned that MCP becomes much more useful when multiple tools work together across a conversation, rather than simply exposing one search operation.
What's next
Future improvements could include additional opportunity sources, broader rule-verification coverage, persistent user profiles, and a securely hosted MCP service.
We would also like to validate the integration against the actual Alexa+ runtime when the required developer tools become available.
Don't just discover opportunities. Verify whether you can actually act on them.
Built With
- css
- github
- html
- javascript
- mcp-python-sdk
- model-context-protocol
- python
- starlette
- streamable-http
- uvicorn
Log in or sign up for Devpost to join the conversation.