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)
How do I change this?
Privacy & leaderboards settings →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
How do I change this?
Visibility & privacy settings →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
How do I change this?
Visibility & privacy settings →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
How do I change this?
Edit profile (change country) →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
How do I change this?
Edit profile (location & defaults) →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
How do I change this?
Privacy & leaderboards settings →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
How do I change this?
Profile country & privacy settings →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