Data systems · 2026
WhatAnimeShouldIWatch
A privacy-conscious recommendation graph built from public MyAnimeList ratings.
An end-to-end ingestion, anonymization, graph-generation, and visualization system with TypeScript web and Rust/Dioxus desktop clients.
- Storage
- Anonymized SQLite
- Graph guard
- 2M-edge default cap
- Clients
- Web + desktop
The pipeline
Collect useful preference data without publishing user identities.
The collector reads public MyAnimeList scores, hashes users with a private stable salt, stores ratings in SQLite, and normalizes every score relative to that person’s average. The result keeps preference shape while separating it from a public username.
The graph
Taste becomes a network rather than a flat ranking.
The build step creates user-to-anime relationships and weighted anime-to-anime edges. Shared positive and negative deviations expose clusters that a global popularity list cannot see.
- Controlled expansion from seed users
- Compressed release-backed web artifacts
- Configurable two-million-edge safety cap
- Optional model training and GNN baseline evaluation
Interfaces
The same graph can be explored in a browser or on the desktop.
A TypeScript/Vite client serves the public visualization through GitHub Pages. A corresponding Rust/Dioxus application brings the graph into a native desktop workflow.