Case study
One hobby. One feed. A focused social platform where every hobby is its own hive.
Chapters
79%
hive classification accuracy (13 classes)
0.57→0.90
search top-3 quality
~400 MB
API + ML on a 1 GB VM
0
paid AI APIs
What & why!
On a general social app, your dance clip sits between politics, ads and someone's lunch, in front of people who don't care about dance. On HobbyHive each hobby is its own contained hive: you post to people who get it, and they see only that hobby.
That audience is the point. Likes, comments, feedback requests and weekly streaks from people who understand the craft turn practice into a habit, with Bea, a local AI practice coach, planning each week from your own sessions.
How the pieces fit!
Next.js frontend
Proxies /api and /socket.io to the backend.
Express + Prisma + Socket.IO
Auth, posts, hives, practice tracking, DMs and live rooms.
PostgreSQL + pgvector
Relational data and embeddings in one database.
FastAPI + ONNX ML service
Embeddings, the topic model and Ask Bea. Optional: the app still works without it.
The fun parts!
Posts are embedded with bge-small and classified by a logistic-regression head (79% accuracy across 13 hives), which powers both hive suggestions and off-topic flagging.
pgvector cosine similarity combined with a topic score lifted top-3 search quality from 0.57 to 0.90.
Ask Bea is retrieval-augmented: BM25 and dense retrieval fused with RRF, a cut-off tuned by evaluation, and extractive answers with citations. It declines when the hive has no answer instead of making one up.
Models run locally with ONNX Runtime and the API and ML service fit in about 400 MB. The ML service is optional, so if it's down, the app keeps working and AI features switch off.
Built with!
Next case study
Tradexcel