Skip to content

Repository files navigation

スゴイ・レコメンド

⛩ SUGOI//RECS

Your next anime, ranked with reasons.

A local-first anime discovery engine that searches beyond the obvious picks.

Choose one anime you genuinely like. SUGOI//RECS maps its content signals across 12,000+ titles, rejects weak matches, controls franchise repetition, and explains why every recommendation earned its place.

Launch SUGOI RECS View source on GitHub

Python Streamlit scikit-learn License Status

12,017 titles · 43 genres · 4 discovery modes · explainable ranking


SUGOI RECS anime discovery home screen

✦ The signal

Anime catalogs are excellent at giving you more. SUGOI//RECS is built to give you better next choices.

It combines content similarity, genre overlap, format, rating, audience signals, and diversity-aware reranking to produce a focused recommendation set. Stronger adjusted matches appear first; weaker results remain relevant; filler never gets promoted just to complete a page.

The goal is not an endless feed. It is a shorter path to something worth watching.

What makes it different

  • Ranked with intent — results descend from the strongest adjusted match to weaker, still-relevant recommendations.
  • Reasons, not mystery — cards explain shared genres, format alignment, rating proximity, or strong content similarity.
  • Diversity without randomness — reranking reduces duplicate-heavy franchise pages while protecting relevance.
  • No mandatory cloud backend — the recommendation model and catalog run locally.
  • Artwork cannot break discovery — online enrichment runs separately from the core recommendation experience.
  • Useful beyond recommendations — mood discovery, comparison, and catalog analysis turn it into a complete anime exploration tool.

◈ Recommendation experience

SUGOI RECS high-confidence anime recommendations

Each result includes its rank, a query-relative match score, rating, format, episode count, genres, and a short explanation of the signals it shares with the selected anime.

Important: Match % is a relative ranking indicator for the current query—not a probability that a person will enjoy the anime.

四 The four modes

Mode What it does Best for
✦ Recommend Starts from one anime and returns up to 36 relevance-gated, diversity-aware matches. “I loved this—what next?”
◈ Discover Explores 12 curated moods or a custom genre mix without requiring a starting title. “I know the vibe, not the name.”
⇄ Compare Places two anime side by side across semantic similarity, genre DNA, format, rating, episodes, and audience. “How similar are these really?”
⌁ Taste Lab Searches and filters the full catalog with rating, genre, format, popularity, sorting, and analytical summaries. “Let me explore the data myself.”

Curated discovery signals

Adrenaline · Dark & cerebral · Romance · Chaos comedy · Otherworldly · Future shock · Cozy & healing · Mind games · Sports rush · Nightmare fuel · Historical · Character drama

⚡ How ranking works

SUGOI//RECS is a transparent content-based recommendation system. It does not call an LLM to invent recommendations and it does not simply sort a popularity chart.

flowchart LR
    A["Selected anime"] --> B["Tags + genres + format"]
    B --> C["TF-IDF vectors"]
    C --> D["Cosine similarity"]
    D --> E["Adaptive relevance gates"]
    E --> F["Quality + audience signals"]
    F --> G["Diversity-aware reranking"]
    G --> H["Ordered, explainable matches"]
Loading

Ranking stages

  1. Signal construction — tags, genres, and format are combined into model text.
  2. Vectorization — TF-IDF with unigram and bigram features creates a sparse vector representation for every title.
  3. Similarity — cosine similarity measures closeness to the selected anime.
  4. Candidate quality — rating and audience signals refine the base relevance score.
  5. Adaptive gates — weak semantic matches and misleading genre overlaps are removed.
  6. Diversity control — redundancy and franchise penalties prevent the first page from becoming a wall of near-identical sequels and specials.
  7. Final ordering — eligible picks are sorted by their adjusted selection score and converted into a query-relative display percentage.
Why the score is explainable

The system can identify concrete reasons for each recommendation because its ranking uses inspectable catalog features. A result can cite shared genres, the same anime format, a similar audience rating, or very strong content similarity. The displayed percentage is normalized within the selected recommendation pool so it should be read as relative confidence, not personal-liking probability.

🖼 Artwork without blocking the experience

The local recommendation engine is the main system. Artwork and synopsis enrichment are optional background enhancements requested only for currently visible cards.

flowchart LR
    A["Visible cards"] --> B["AniList batch lookup"]
    B -->|"Unavailable / missing"| C["Jikan MAL-ID fallback"]
    C -->|"Still unresolved"| D["Kitsu title search"]
    D --> E["Strict title validation"]
    E -->|"Safe match"| F["Poster + metadata cache"]
    E -->|"No safe match"| G["Designed archive card"]
Loading
  • AniList requests are batched for visible recommendation pages.
  • Jikan provides an individual MyAnimeList-ID fallback.
  • Kitsu is accepted only after exact or near-exact title validation, reducing sequel, remake, and same-franchise poster mix-ups.
  • Successful metadata is cached at runtime.
  • Temporary service failures are retriable and are never treated as permanent misses.
  • If every service is unavailable, the interface remains usable with local fallback cards.

🌐 Live deployment

The stable application is deployed on Streamlit Community Cloud:

The hosted app includes the same recommendation engine, 12 curated discovery moods, comparison tools, Taste Lab, API fallback chain, and local catalog as the downloadable version. On an inactive Streamlit deployment, the first visit may take a moment while the app wakes up.

🛠 Run locally

Windows — one click

  1. Install Python 3.10 or newer.
  2. Clone or download this repository.
  3. Double-click RUN_SUGOI.bat.
  4. Keep the launcher window open while using the app.

The launcher creates .venv, installs the dependencies, and starts Streamlit. Later launches reuse the environment.

Windows — terminal

git clone https://github.com/Rishikeshsanin/Sugoi-recs.git
cd Sugoi-recs

py -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe -m streamlit run app.py

macOS / Linux

git clone https://github.com/Rishikeshsanin/Sugoi-recs.git
cd Sugoi-recs

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
streamlit run app.py

The local URL is normally http://localhost:8501.

☾ Offline mode

Recommendations, Discover, Compare, and Taste Lab use the bundled catalog and remain available without the artwork services. To explicitly disable online enrichment in PowerShell:

$env:SUGOI_OFFLINE = "1"
.\.venv\Scripts\python.exe -m streamlit run app.py

Unavailable posters become designed genre-colored archive cards rather than broken images or permanently loading placeholders.

技 Tech stack

Technology Role
Python Application and recommendation logic
Streamlit Interactive interface and cloud deployment
pandas Catalog cleaning, filtering, and exploration
NumPy Numerical scoring operations
scikit-learn TF-IDF vectorization and cosine similarity
Plotly Taste Lab analytical visualizations
Requests Optional API enrichment

Project map

Sugoi-recs/
├── app.py                 # Streamlit UI, fragments, navigation and state
├── sugoi_core.py          # Recommendation, discovery, comparison and filtering
├── artwork_service.py     # Background API fallback and metadata cache
├── anime_df.pkl           # Bundled local catalog snapshot
├── requirements.txt       # Runtime dependencies
├── RUN_SUGOI.bat          # Windows one-click launcher
├── run_sugoi.ps1          # PowerShell launcher implementation
├── QA_REPORT.md           # Validation evidence and tested scenarios
├── Screenshot (518).png   # Main discovery interface
├── Screenshot (519).png   # High-confidence recommendation results
├── LICENSE
└── README.md

API and website credits

The APIs below are used only for optional online enrichment.

  • Documentation: docs.anilist.co
  • GraphQL endpoint: https://graphql.anilist.co
  • Role in SUGOI//RECS: primary batched artwork and metadata lookup
  • Documentation: docs.api.jikan.moe
  • REST base URL: https://api.jikan.moe/v4
  • Underlying website: MyAnimeList
  • Role in SUGOI//RECS: individual MyAnimeList-ID fallback

Jikan is an unofficial, read-only MyAnimeList API and is not affiliated with MyAnimeList.

  • Documentation: Kitsu JSON:API
  • JSON:API base URL: https://kitsu.io/api/edge
  • Role in SUGOI//RECS: final title-validated artwork and metadata fallback

Data note

The bundled catalog is a static local snapshot. It may not contain every recent anime release, and its ratings or audience figures should not be interpreted as live values. AniList, Jikan, and Kitsu enrich visible entries at runtime; they are not represented as the source of the bundled recommendation dataset.

🧪 Quality assurance

SUGOI//RECS has been validated across recommendation quality, application state, live artwork behavior, and offline resilience.

  • 12,017 catalog rows, 12,015 unique titles, and 43 genres validated
  • Descending match and adjusted relevance order checked
  • Semantic and genre relevance gates checked across major seed titles
  • View More tested from 6 through 36 recommendations without pool reordering
  • All 12 discovery moods and custom genre discovery tested
  • Compare and recommend-from-comparison paths tested
  • Taste Lab filters, sorts, metrics, and state preservation tested
  • Complete network failure tested without breaking local features
  • Live artwork stress-tested at 6, 12, and 18 visible cards
  • Desktop and narrower browser layouts inspected

Read the complete QA_REPORT.md.

Project status

Stable · deployed · actively maintained

The core recommendation engine, all four exploration modes, artwork fallbacks, offline behavior, Windows launcher, QA coverage, and public Streamlit deployment are complete.

Roadmap

  • Local content-based recommendation engine
  • Relevance and diversity-aware reranking
  • Human-readable recommendation reasons
  • Twelve mood-based discovery paths
  • Custom vibe discovery
  • Head-to-head anime comparison
  • Taste Lab catalog explorer
  • Three-stage artwork fallback pipeline
  • Offline-safe core experience
  • Windows one-click launcher
  • Public Streamlit deployment
  • On-demand local poster-file cache
  • Multi-anime taste profiles
  • Watchlist import and export
  • “Not interested” feedback signal
  • Seasonal catalog refresh pipeline
  • Automated GitHub Actions test suite

Contributing

Ideas, bug reports, and focused pull requests are welcome.

  1. Fork the repository.
  2. Create a branch: git checkout -b feature/your-feature.
  3. Keep ranking behavior deterministic and explainable.
  4. Verify local and offline behavior.
  5. Include before/after screenshots for interface changes.
  6. Open a pull request with a clear description of the user impact.

License

The original source code in this repository is available under the MIT License.

Third-party anime names, artwork, descriptions, and metadata are supplied by their respective services and rights holders and are not covered by this repository's code license.

Disclaimer

SUGOI//RECS is an independent, fan-made project. It is not affiliated with, endorsed by, or sponsored by AniList, MyAnimeList, Jikan, Kitsu, any anime publisher, studio, or rights holder.


次に観る一本を、もっとスマートに。

Stronger signals. Less scrolling.

Built by Rishikesh Sanin for anime fans who want a reason behind the recommendation.

Launch app · Report an issue · Back to top

About

A local-first anime discovery engine with explainable rankings, mood discovery, head-to-head comparisons, catalog exploration, and resilient artwork enrichment. Your next anime, ranked with reasons.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages