UniTinder
Inspiration
Twice a year, students across Hungary wage the infamous Neptun war — thousands hammering the university registration system at the exact same second, fighting to snag a spot with the "right" teacher. But what makes a teacher "right"? A friend's recommendation? A high rating on Rate My Professor? The coolest sounding name?
We wanted matching students to teachers to be more than "pick one and pray." Students have different learning styles — pace, structure, interactivity, need for visuals, feedback preferences — and teachers have distinct teaching styles. The problem is that nobody actually measures the fit between the two.
But UniTinder doesn't just help you find the right teacher. Sometimes your favorite professor isn't offering a course in the subject you need. So based on your favorite teacher's teaching style, UniTinder generates personalized study guides that teach you any topic the way they would teach it.
What It Does
Student flow: Students take a 20-question quiz and a memory quiz that builds a 24-dimension learning persona — pace, structure, abstraction, interactivity, visual dependency, and more. They pick a subject and get ranked teacher matches with a compatibility score (0–100) and an AI-generated summary explaining exactly why each teacher fits (or doesn't).
Swipe experience: A swipeable card stack, just like Tinder. Swipe right to like, left to pass. Liked teachers are saved to "My Teachers."
Learn with a teacher: From a matched teacher, students can request a study plan or an audio recording on any topic. The backend generates it in that teacher's unique style using modality-specific prompts. They also see a personalized summary for that specific teacher–student pairing.
Teacher dashboard: Teachers get anonymized insights into who tends to like them — archetype distributions, average liker persona, which dimensions align best, and which don't. No student names or IDs are ever exposed.
How We Built It
Backend (Python)
FastAPI with Pydantic models. The matching engine uses weighted Manhattan distance across 24 dimensions (critical dimensions weighted 3×, important at 2×, the rest at 1×) to produce a compatibility score. Explainability is built in — every match surfaces the 3 best-aligned and 2 worst-aligned dimensions so students understand why a teacher fits. main.py exposes REST APIs for matching, students, teachers, likes, study plans, and teacher insights. Data lives in JSON files. Azure OpenAI powers personalized summaries, modality prompts (text/audio/video), and study plan generation. Summaries can be disabled via environment flag for testing.
Frontend (Next.js)
Next.js 16, React 19, TypeScript. Tailwind CSS and shadcn/ui (Radix) for the component layer. Framer Motion drives the swipe stack — drag, threshold detection, and card rotation. The quiz flow uses the shared 24-dimension question set; answers are aggregated into a persona and sent to the API. LocalStorage holds the current student so matching and learning persist after the quiz.
Challenges We Ran Into
AI latency
Summaries had to be optional (no key / disabled flag) with a fallback to static teacher descriptions, plus parallel requests so match results didn't bottleneck on generation time.
Swipe feel
Tuning the drag threshold and rotation in Framer Motion so swipes felt intentional — the "like" action and its API call needed to fire at exactly the right moment, not too sensitive, not too sluggish.
Privacy in analytics
Designing the teacher dashboard so it delivers genuinely useful insights (archetypes, average persona, alignment traits) without exposing any individual student identity.
Accomplishments We're Proud Of
End-to-end flow
Quiz → persona → match → swipe → saved teachers → study plan with a single, coherent UX. No dead ends.
Interpretable matching
A compatibility score alone is useless if you don't know why. Every match comes with "best/worst" dimension breakdowns so students can make informed decisions.
Teacher-side value
The anonymized dashboard means teachers aren't just being rated — they're learning about their audience and how their style lands across different learner types.
Study plans in teacher "voice"
Modality prompts (text, with placeholders for audio/video) ensure generated content actually sounds like the teacher, not generic AI output.
Graceful degradation
If the AI API isn't configured, the app still works — static summaries, no study plan generation, but every other feature runs perfectly.
What We Learned
Structured prompts (modality templates, study plan formats with outline + body) produced dramatically more reliable outputs than freeform generation.
Knowing when not to use an LLM matters just as much as knowing when to use one. For the matching algorithm, manual mathematical calculations were more accurate and trustworthy than asking a model to score compatibility.
What's Next for UniTinder
Mini NotebookLM
We already generate study guides — the next step is using the modality prompts to drive TTS and avatar-based video lessons. Your favorite teacher's style, delivered as a podcast or video lecture.
Persistent identity
Cookie or account-based login so "My Teachers" and match history work across devices without retaking the quiz.
Real database
Replace JSON files with a proper DB and add authentication for both students and teachers.
And our personal favorite — Scale. More subjects, more teachers, imagine your entire university on UniTinder. Rate My Professor would be a thing of the past.
Built With
- fastapi
- framer
- json
- lucidereact
- next.js
- openai
- pydantic
- python
- radix
- react
- shadcn
- tailwind
- typescript
- uvicorn

Log in or sign up for Devpost to join the conversation.