Rastrum

Rastrum Algorithms

Every ranked surface in Rastrum has an entry in this catalog. The intent is for you to see the "why" of each ranking, not just the result.

Each ranked surface ships with a "Why am I seeing this?" link that opens a modal with the inputs, time window, and a link to the relevant settings. This page is the consolidated reference.

Principles

  • No black box: every ranking documents its inputs explicitly.
  • No hidden profiling: if an input uses your activity or location, we say so.
  • A lever for every input: if you want to turn it off, there is a clear setting.
  • No engagement bait: Rastrum surfaces are not sorted by likes or reactions.

Why am I seeing this ranking?

Observers are ranked by activity within the filter you have selected.

community_observers

Inputs used

  • The sort field you picked (observations, species, or recent activity)
  • Country filter (your profile country, or the one in the URL)
  • Taxon filter (when set, only observers active in that group count)
  • Approximate centroid (only when "Nearby" is on and you are signed in)

Time window

Last 30 days for activity-based sorts (7-day option also available)

Why am I seeing these observations?

A simple chronological feed — newest first, no personalization.

explore_recent

Inputs used

  • Public sync timestamp (most recent first)
  • Public visibility (private observations are excluded)
  • No engagement signals — order does not depend on likes, IDs, or follows

Time window

All public observations, paginated 20 at a time

Why am I seeing this species ordering?

Species are sorted by their most recent public observation.

explore_species_recent

Inputs used

  • Most-recent public observation timestamp per species
  • Species with at least one public observation are included
  • Filter chips you have set (kingdom, conservation, endemic, etc.)

Time window

All-time pool, but the order key is the latest observation date

Why am I seeing these missing species?

Species you have not yet logged, sorted by rarity bucket so the rarest gaps surface first.

falta_dex_missing

Inputs used

  • Rarity bucket of each missing species (rare → common)
  • Region pool for your country (your profile country, set in Edit profile)
  • Your existing pokédex (only species you have NOT yet observed are included)
  • No personalisation beyond country — same pool regardless of who is signed in

Time window

Snapshot of the current region pool — refreshed when the page loads

Why am I seeing these probable species?

A density estimate from wild public observations near the location and month of the photo you are about to log. Filters to wild-only (excludes cultivated plants and captive/domestic animals).

contextual_species_chips

Inputs used

  • Approximate location (geohash-5 cell, ≈ ±2.4 km) of the photo or your device
  • Current calendar month (seasonality)
  • Count of wild public community observations matching that cell + month, descending
  • Distance to the closest matching observation (tiebreaker)
  • No model, no curated baseline — these are real community sightings only
  • Filtered to establishment_means = wild — excludes cultivated plants and captive/domestic animals
  • Filter toggle: "New to me only" — hides species already in the user's dex (has_observed_by_viewer)

Time window

Wild public observations within the same geohash-5 cell, in the current month, all years

Why am I seeing these percentiles?

A private comparison against an anonymous cohort of active MX observers — only you see this card.

profile_percentile_cards

Inputs used

  • Cohort definition: users with ≥ 5 observations in the last 90 days, country MX
  • Your four metrics: Shannon diversity, distinct habitats, validations cast, geographic spread (km²)
  • Each percentile is your rank within the cohort for that one metric
  • Hidden when the cohort is too small (n < 50) — no rank shown until the comparison is meaningful
  • No public leaderboard — these numbers never leave your screen

Time window

Last 90 days for the cohort; metrics are recomputed on each page visit

Why am I seeing this banner?

A non-personal count of distinct observers in your country who have synced at least one observation today.

active_observers_today

Inputs used

  • Country code from your profile (or inferred from your most-used region)
  • Distinct count of observers who synced ≥ 1 public observation since 00:00 UTC today
  • Aggregate only — no observer IDs, names, or locations are surfaced
  • Banner is hidden entirely when no profile country is set (never shows "in NULL")

Time window

Today (UTC) — resets at 00:00 UTC each day

How do I change this?

Edit profile (country) →

Why am I seeing these observations?

Most recent observations from observers in your country, with a global fallback if there are fewer than 3.

home_recent_nearby

Inputs used

  • Sync timestamp (most recent first)
  • Country code from your profile (used to scope to nearby observers)
  • Public visibility (private observations are excluded)
  • No engagement signals — order does not depend on likes, IDs, or follows

Time window

Top 3 most recent synced public observations

What we do NOT do

  • There is no opaque personalised feed like TikTok or Instagram.
  • We do not sell your activity or location to third parties.
  • Private observations never appear in public surfaces, even when your account is public.

Catalog: src/lib/algorithms.ts

Report an issue

Show diagnostics

Environment

 

Console errors

 

Failed requests