All projects

in-progress / case study

Omakase

An anime recommendation tool that turns your own watch history and taste notes into a more personal watch menu.

Status
in progress
Surface
Live demo
Latest proof
2026-07-28

Why this project matters

Keeps experimentation publishable without turning local model access into public infrastructure.

Public UI can explain the shape while private provider keys stay out of the site.

Field notes / Omakase

What it is

omakase is a CLI + browser tool that pulls your AniList or MyAnimeList history, combines it with a short taste profile you write in markdown, and asks any LLM — local or cloud — to recommend 5–10 anime tied to your scoring patterns. It supports nine LLM backends out of the box (Ollama, LM Studio, OpenAI, Anthropic, Gemini, DeepSeek, OpenRouter, Groq, Together).

The public demo at omakase.jhinx.dev keeps guest model keys and taste notes request-local. Friends I invite can claim an invitation-only Lite account, save an encrypted provider key, resume their setup, keep recommendation history and a local list, and teach the next menu with Not Interested, Add to My List, or scored Already Watched feedback.

Lite stays recommendation-only. It has no Plex, downloads, acquisition tools, or private Omakase Plus access. The separate Omakase Plus project owns private acquisition and ready-to-watch verification.

Why I built it

Streaming platforms and tracker sites all optimize for engagement. AniList's "recommendations" tab is the same popular shows everyone already watches. I scored 200+ anime, rated 17 of them a 9 or 10, and the platform still recommended Demon Slayer.

The thesis: an LLM that gets to read both your written taste and your scoring patterns can do far better than collaborative filtering — especially in a niche with deep history and strong personal aesthetics like anime. The wine sommelier metaphor is the right one. Omakase = "I'll leave it to the chef."

What I learned

  • LLM JSON mode quality varies wildly across providers — Anthropic and DeepSeek's reasoning models need looser parsing, OpenAI/Gemini/most others honor response_format cleanly. The codebase has a supports_json flag per preset so it falls back gracefully.
  • A 40-line OpenAI-compatible client covers 6 of 9 backends. Anthropic and Gemini each need their own ~50-line client because their wire formats diverge. Ollama is its own thing.
  • Self-hosted UI matters more than I expected. Most people don't want to install a CLI just to try a recommender — the omakase web command was a late add that turned out to be the primary entry point.
  • A personal account does not need to become a public signup system. Owner-issued, one-time links let trusted friends keep personalized recommendation state without opening an access-request queue to strangers.

Status & next steps

The public counter runs at omakase.jhinx.dev with explicit DeepSeek Quick and Deep modes, background recommendation jobs, invitation-only Lite accounts, encrypted saved provider keys, scored feedback, repeat suppression, and one-click regeneration. The CLI and guest BYOK flow remain available, and Omakase Plus remains a separate private product.