AKJ
All projects

Case study

HOBBYHIVE

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

OVERVIEW

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 IT WORKS

How the pieces fit!

  1. 1

    Next.js frontend

    Proxies /api and /socket.io to the backend.

  2. 2

    Express + Prisma + Socket.IO

    Auth, posts, hives, practice tracking, DMs and live rooms.

  3. 3

    PostgreSQL + pgvector

    Relational data and embeddings in one database.

  4. 4

    FastAPI + ONNX ML service

    Embeddings, the topic model and Ask Bea. Optional: the app still works without it.

INTERESTING PROBLEMS

The fun parts!

Keeping every hive on-topic

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.

Search by meaning, not keywords

pgvector cosine similarity combined with a topic score lifted top-3 search quality from 0.57 to 0.90.

A coach that admits when it doesn't know

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.

Running AI on a 1 GB VM

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.

STACK

Built with!

Frontend
Next.js 15, TypeScript, Tailwind CSS, Redux, Framer Motion
Backend
Express, Prisma, Socket.IO, PostgreSQL + pgvector
ML
FastAPI, ONNX Runtime, bge-small embeddings, scikit-learn
Deploy
systemd units on a 1 GB VM

Next case study

Tradexcel