Anime Semantle

About

← Back to Game

What is Anime Semantle?

Every day, one anime title is chosen as the answer. Enter any anime title or character name and you'll receive a similarity score (0.000–1.000) showing how close your guess is to the answer. The higher the score, the closer you are. A score of 1.000 means you found the answer.

How to Play

  1. Type an anime title or popular character name into the input field.
  2. Select from the autocomplete list or press Enter to submit your guess.
  3. The similarity bar and score tell you how close you are to the answer.
  4. A score of 1.000 means correct — share your result!
  5. If you're stuck, press Give Up to reveal today's answer.

How Is the Similarity Score Calculated?

Each anime is converted by an AI into a numerical vector. The similarity score is then computed using the cosine similarity between two vectors — essentially measuring the angle between them. A score close to 1.000 means the two items point in nearly the same direction in meaning-space; close to 0.000 means they are far apart in genre and mood.

Two sources of information feed into the calculation: structural metadata (genre, theme, target demographic) at 70% weight and synopsis text embedding at 30% weight, combined as a weighted average. Because structural data carries more weight, anime in the same genre tend to score highly even if their plots are quite different.

Similarities are not computed in real time. All pairwise similarities are pre-calculated before the game runs, and only the top 3,000 nearest neighbors are stored per item. If your guess does not appear among an item's top 3,000 neighbors, the score shows 0.000 — indicating the two works are very far apart semantically.

The AI Model

Anime Semantle uses the paraphrase-multilingual-MiniLM-L12-v2 model, an open-source Sentence Transformer (Apache 2.0 license) that supports more than 50 languages in a single shared vector space.

Its key property is that text with the same meaning produces similar vectors regardless of language. This means a Korean title and its English counterpart land near each other in the embedding space, which is why both the Korean and English versions of the game can share the same pre-computed similarity data without any separate re-calculation.

The model goes well beyond keyword matching. "A hero defeats the Demon King" and "A warrior vanquishes the lord of evil" use different words but carry the same meaning — and the model reflects that. As a result, anime with similar tone, themes, and narrative structure score highly with each other, even when surface-level plot descriptions differ.

Why This Model?

Larger multilingual embedding models (e.g. LaBSE, multilingual-e5-large) would sharpen semantic distinctions further, but this project recomputes embeddings for 800 anime and 2,331 characters — over 3,000 items — from scratch every quarter, on a free GitHub Actions runner with no GPU. Bigger models mean longer compute time and larger vector dimensions, which push the pre-computed similarity files (top 3,000 neighbors per item) past Cloudflare Pages' 25MB-per-file limit. paraphrase-multilingual-MiniLM-L12-v2 (12 layers, 384 dimensions) was the practical choice that fit within the time and storage constraints of a free CI pipeline while still holding up cross-lingually. The same reasoning ruled out paid embedding APIs — before AdSense approval, the site has no revenue to cover recurring per-call costs every quarter.

How Was the 70/30 Ratio Chosen?

It wasn't a guess. scripts/eval_similarity_ratio.py runs an actual comparison test using two kinds of pairs with a clear expected direction:

Measuring the average similarity for both groups as the structural weight increased from 0.5 to 0.8:

Pushing the structural weight from 0.7/0.3 to 0.8/0.2 kept raising the same-series score, but the Re:Zero/Overlord score plateaued at 0.609 — no further gain. Past 0.7/0.3, extra structural weight stopped helping the model tell "same genre, different story" pairs apart, so that's where the ratio was locked in for production.

Data Scale

The answer pool and full guess dictionary are built from the following data:

The dataset is refreshed automatically every quarter. When new popular titles emerge, they are added to the pool and all similarities are recomputed from scratch.

Curious how this site is actually built? Check out the devlog. For what three AdSense rejections actually taught us, read this retrospective.

Does the Answer Change Every Day?

Yes. No server is needed — the answer is determined locally using a hash of the current date (JST). The puzzle resets at midnight Japan Standard Time.

Strategy Tips

FAQ

Q. What if I can't guess the answer?
Press the Give Up button to reveal today's answer. A new puzzle will be available tomorrow at midnight.

Q. Why does a score show as 0.000?
It means your guess is not among the answer's top 3,000 nearest neighbors — the two works are very far apart semantically. Try a completely different genre.

Q. What's in the answer pool?
The top 800 globally-ranked anime titles and their popular characters — from long-running classics to the latest seasonal hits, across 17 genres.

Q. Can I enter character names?
Yes. Both anime titles and popular character names are valid guesses. Characters from the answer title typically score very high.

Q. Does it work on mobile?
Yes. Play directly in any mobile browser — no app required.

Q. Is there a daily guess limit?
No. Guess as many times as you like. Only the answer is fixed — it resets at midnight.