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.

Role
Creator and engineer
Stack
TypeScript · Python · SQLite · Rust · Dioxus
Storage
Anonymized SQLite
Graph guard
2M-edge default cap
Clients
Web + desktop
01

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.

02

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
03

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.