Inspiration

Every hackathon starts the exact same way. You sit down at a table with your team, spend thirty minutes brainstorming ideas, and someone asks: "Wait, has this already been done? Is this actually a good idea?"

Usually, nobody has a solid answer. You spend five minutes doing a quick search on Devpost, find nothing certain, and end up building it anyway.

We wanted a real answer based on actual numbers. We were curious if we could predict whether an idea had finalist potential just by analyzing historical trends and seeing how similar neighborhoods of ideas have performed across the 12 years of Hack the North.

What it does

Win the North projects every single Hack the North submission into a 2D interactive space based on true semantic similarity.

You type in your project idea, and the app immediately tells you:

  • Whether someone has already built something similar in the past years.
  • Whether similar projects became finalists or won prizes.
  • How to adjust your idea or stack to target specific prize tracks.

The baseline answer to "Will this win?" is about 4.7%, since only 161 out of 3,443 projects made finalist. But Win the North shows you which specific categories beat those odds and how tech trends have shifted over time.

How we built it

Instead of just wrapping a basic search box or tossing a generic chatbot on a database, we built an engine where embeddings, hybrid search, and text analysis work together:

  • Scraped Corpus: We wrote a custom scraper to pull, clean, and structure all 3,443 Hack the North submissions from Devpost (2014–2025). This includes project descriptions, winning tracks, tech stacks, and linked GitHub READMEs (github_repo.py).
  • OpenAI Embeddings for Real Context: We embed project pitches, READMEs, and tech stacks using text-embedding-3-small. Embeddings run almost everything in our app:

    • 2D Visual Map (engine.py, build.py): Projects high-dimensional vectors onto a 2D map so spatial distance represents actual conceptual and tech stack similarity, not just shared keywords.
    • Finalist Classifier: Feeds PCA-reduced vectors alongside structured signals into our model to score an idea against historical finalist patterns.
    • The Coach: When the Coach suggests a way to reframe your idea, it re-embeds the new pitch in real time to re-score and re-map it on the fly.
  • Elasticsearch Hybrid Search (elastic.py): Devpost data is messy and inconsistent across 12 years. Pure vector search misses exact tool name matches (like a specific API or framework), while standard keyword search misses ideas that solve the same problem using different words. We index every project in Elasticsearch using both BM25 keywords and dense OpenAI vectors, combining them with Reciprocal Rank Fusion (RRF) to feed our map highlights and give the Coach proper context.

  • GPTZero Analysis (src/gptzero.py): We ran 12 years of hackathon descriptions through GPTZero’s API (batched, cached, and aggregated by year). Beyond showing a clear spike in AI-generated writeups starting after 2022, this gives our classifier a baseline for how much to trust pure prose versus structural code signals across different eras.

  • Backend & API: Built on FastAPI with endpoints for the interactive map, trend views, and hybrid search. We also added an in-memory cosine fallback so the demo keeps working smoothly even if the cluster acts up.

Challenges we ran into

  • Scraping Devpost submissions took significantly longer than expected. We spent hours managing rate limits and data formatting to create a clean and ready raw dataset.
  • Figuring out how to embed project descriptions so that the search was context-aware rather than just matching keywords required tuning parameters in Elasticsearch so neither vector distance nor BM25 dominated the context.

Accomplishments that we're proud of

  • Successfully collecting, cleaning, and structuring 3,443 projects into a clean dataset ready for vector embeddings.
  • Being able to recognize when we had too much going on and deliberately removing unnecessary features to focus strictly on what mattered: clean vector search and category analysis.

What's next for Win the North

  • Scaling the search space beyond Hack the North to cover major MLH hackathons.
  • Experimenting with other embedding architectures to raise our finalist classification AUROC beyond 0.76.

Built With

Share this project:

Updates

Submission history