Raglooker for Steam
A RAG-powered recommendation engine that turns a plain-language mood into ranked Steam games with an LLM-written explanation.
Python
RAG
LLM
Flask
Ollama
Overview
Raglooker for Steam is a retrieval-augmented recommendation engine for the Steam catalog. Describe the game you’re in the mood for in plain language, and get back ranked matches plus a natural-language explanation from a local LLM. It’s a hybrid retrieval + LLM re-explanation system rather than a single embedding lookup.
How It Works
- Candidate retrieval (BM25): the query is tokenized and scored against a BM25 index built over each game’s name, description, genres, categories, and tags, producing a shortlist of ~100 candidates.
- Re-ranking (hybrid score): candidates are embedded (
nomic-embed-textvia Ollama) alongside the query and scored on a weighted blend of:- 50% embedding cosine similarity
- 30% BM25 score
- 20% popularity (log-scaled positive reviews + recommendations)
- plus small bonuses for direct tag/genre term overlap
- Answer generation: the top 5 ranked games are formatted into a context block and passed to a local LLM (
phi3.5via Ollama), which writes a short, natural-language recommendation summary. - Frontend: a single-page Flask + vanilla JS app renders the LLM’s answer alongside game cards (image, score, tags, platforms, Steam link).
Stack
Flask (backend) · rank-bm25 + Ollama embeddings (retrieval) · Ollama-served phi3.5 (generation) · HTML/CSS/vanilla JS (frontend, no framework) · uv (env/deps)