Inspiration

Hackathon hunting is a chore. Hundreds on Devpost, scrolling through pages to find ones that match your stack. I wanted something that just tells you "this one's worth your time." Plus I'd been wanting to try Google's ADK with MCP, so good excuse.

What it does

DevMatch is an AI agent that scrapes Devpost, scores every hackathon against your developer profile, and lets you ask "find me AI hackathons ending this month." It tracks what you're interested in and reminds you before deadlines. Uses Google ADK-powered agent connected to MongoDB via MCP protocol, the agent queries and updates the database on its own.

How I built it

FastAPI backend, MongoDB Atlas, dark-mode dashboard. Agent layer uses Google ADK with McpToolset connecting to the official MongoDB MCP server. APScheduler runs three background jobs: scrape Devpost every 12 hours, AI match against profile, send deadline reminders daily. Matcher uses Gemini 3.5 Flash with structured output to score hackathons 1-10.

Challenges I ran into

Biggest one: ADK + MongoDB MCP server schema mismatch. MCP returns JSON schemas with fields ADK's Pydantic parser rejects. Ended up monkey-patching the MCP client to strip $schema, const, additionalProperties. Devpost scraping was inconsistent, sometimes HTML sometimes JSON, had to handle both.

Accomplishments that we're proud of

Getting the whole agent pipeline to work end to end was the main one. I can type "find me hackathons" in the chat, it goes through ADK, runs an actual MongoDB query via MCP, and spits back a natural language response. No fake demo, it actually works. Also happy with the auto scoring — it looks at your actual tech stack and interests, not just keyword matching, and gives meaningful 1-10 scores with reasons.

What we learned

ADK and MCP integration is powerful but has rough edges. I had to add schema sanitization between the MCP tools and ADK's validation layer because they don't fully agree on JSON Schema format. Also learned that subprocess management for MCP servers needs careful timeout handling, first version just hung silently. And Devpost's HTML structure changes way more often than expected, broke the scraper twice during development.

What's next for DevMatch

Multi-provider support (OpenRouter, Claude, Custom Endpoint), browser extension that auto-tracks as you browse Devpost.

Built With

  • apscheduler
  • beautiful-soup
  • fastapi
  • gemini-3.5-flash
  • google-adk-(agent-development-kit)
  • mcp-protocol
  • mongodb-atlas
  • python
  • tailwind
  • uvicorn
Share this project:

Updates