Inspiration

Students spend hours reading professor reviews and forum threads before picking courses. I wanted to make that instant — just ask a question in plain English and get a real answer pulled straight from what students have actually said.

What it does

CampusVoice answers questions like "Which professors are hardest at Georgia Tech?" or "What are Michigan students complaining about?" It searches 13,192 real student reviews and forum posts — from Rate My Professors and College Confidential — and replies with specific professor names, ratings, and actual quotes.

How I built it

  • Collected 6,773 professor reviews from Rate My Professors and 6,419 forum posts from College Confidential, across 7 universities (13,192 total)
  • Stored everything in a single Elasticsearch Serverless index on Elastic Cloud
  • Connected Gemini 2.5 Flash to Elasticsearch using the Elastic MCP Server
  • Built a Flask web app and deployed it on Google Cloud Run with auto-deploy from GitHub

Challenges I ran into

  • Gemini kept returning review counts instead of actual quotes — fixed by rewriting the search strategy in the system prompt
  • Getting the agent to never give up on a search — built a 3-tier fallback (school tag → school name → broad search)
  • Hit Gemini's embedding API rate limits (429s) while indexing College Confidential's 6,400+ posts — solved by indexing them keyword-only, since the agent already retrieves with BM25 rather than vector similarity
  • Keeping responses fast within Cloud Run's timeout limits

Accomplishments that I'm proud of

  • Live app that gives real, quoted answers in under 30 seconds
  • 13,192 reviews and forum posts across 7 universities and two distinct sources, all searchable by natural language
  • Clean MCP integration where Gemini decides what to search — no hardcoded queries

What I learned

How to connect an LLM to a real search engine using MCP so the AI decides what to search for, and how to merge structured review data with unstructured forum discussions into one searchable index.

What's next for CampusVoice

  • Add more universities and data sources
  • Let students ask about specific courses or departments
  • Add trend analysis (are complaints getting better or worse over time?)

Built With

Share this project:

Updates