Inspiration

Hackathons, fellowships, scholarships, grants, and internships are scattered across the web. Existing platforms usually specialize in one category, meaning finding opportunities often means repeating the same searches across multiple websites.

The harder problem isn't discovering that opportunities exist. It's figuring out which ones are actually worth your time.

We wanted ScoutDeck to feel less like another directory and more like a knowledgeable friend who knows your background, searches the web on your behalf, and comes back with a short list of opportunities with a concrete reason for each recommendation.

What it does

You create a profile with your skills, education, interests, location, remote preferences, and desired opportunity types.

ScoutDeck then:

  1. Searches the live web for relevant opportunities using Tavily.
  2. Scrapes discovered pages using Firecrawl.
  3. Uses AI to extract structured information such as eligibility, skills, deadlines, location, and stipends.
  4. Compares all candidates against the user's profile and performs comparative AI ranking.
  5. Streams the search and processing progress live using Server-Sent Events.
  6. Returns up to five strong matches, each with a match score and a specific explanation of why it fits.

The AI isn't just an add-on. It solves the core problem: opportunity pages contain inconsistent, unstructured information that needs to be understood and normalized before meaningful comparisons can be made.

How we built it

Next.js + TypeScript · Supabase/Postgres · Tavily · Firecrawl · Zod · Groq · Gemini · OpenRouter

Our pipeline is:

User Profile
     ↓
Search Query Generation
     ↓
Live Web Search
     ↓
Page Scraping
     ↓
AI Structured Extraction
     ↓
AI Comparative Ranking
     ↓
Validated Results
     ↓
Live UI + Persistence

We treat AI output as untrusted data. Every generated response is validated against a Zod schema before being used by the application.

We also built a multi-provider fallback system so the AI pipeline can recover when a provider is unavailable or rate-limited.

Challenges & learning

Our biggest challenge was making a multi-stage AI pipeline reliable.

We encountered silent candidate-matching failures, API rate limits, incorrectly propagated provider errors, production execution limits, and local network issues that initially looked like AI-provider outages.

Stage-by-stage logging became essential. Instead of guessing where something broke, we tracked how many candidates survived each stage of the pipeline.

Our biggest lesson was that building an AI application is much more than calling an AI API. Reliability, validation, observability, and graceful failure are just as important as the model itself.

What's next

We want ScoutDeck to evolve from discovery into an opportunity assistant — with application tracking, deadline reminders, personalized skill-gap analysis, preparation roadmaps, and deeper explanations of why one opportunity may be a better choice than another.

The opportunities are already out there. ScoutDeck helps you find the ones worth pursuing.

Built With

  • gemini-api
  • groq
  • nextjs
  • openrouter
  • supabase
  • supabase-auth
  • tailwindcss
Share this project:

Updates

Submission history