Match UCSD undergraduates to research labs and prepare them to approach a PI.
Built for the Claude Builders Club @ UCSD Hackathon, May 9 2026.
https://hackathon-two-fawn.vercel.app
https://docs.google.com/document/d/1wfO-RJdFuQL4-0yVVoo3SLtxYzg2Ft2XkiWx8QX0QLY/edit?usp=sharing
- Matches student interests against 39 hand-verified UCSD labs across Bioengineering and Physics. Vague input gets clarifying questions to guide towards labs.
- Generates a prep brief using the lab's actual recent papers and the UCSD course catalog. Foundations are tied to specific paper claims; course recommendations are restricted to courses that actually exist in the catalog.
- Runs a 2-question mock interview calibrated to the student's stated background and the lab's recent papers
- Drafts a cold email to the lab PI reflecting the student's abilities based on their strengths during the mock interview
- No fabricated courses. The model can only cite courses present in the catalog.
- No invented citations. Papers are pulled from Semantic Scholar at runtime.
Next.js · TypeScript · Anthropic Claude API (claude-sonnet-4-6) · Tailwind CSS · Semantic Scholar API
Single Next.js app, no backend storage — session state lives in the browser.
API routes:
/api/match— matches student interests against lab dataset; flags vague input for clarifying questions/api/analyze— generates the prep brief; integrates Semantic Scholar with retry logic for transient failures (429 / 5xx); enforces catalog-only course recommendations/api/interview-init— generates calibrated practice questions/api/interview-eval— evaluates the student's answer; provides feedback, a model answer, and structured strengths/gaps/api/email-draft— drafts the cold email grounded in demonstrated strengths and gaps
data/labs.json— 39 hand-verified labs (Bioengineering + Physics)data/courses.json— UCSD course catalog (Physics, Chemistry, Biology)
Andrey Belokovylenko · Ryan Safarha