Rastrum Rastrum

Features

What v1.0 ships today: identification cascade, observation logging, social and curation, data export, offline PWA, and privacy.

What Rastrum ships today

v1.0 features are what runs in production. Every row maps to a module with a dedicated spec and code on main.

01 Identification (cascade-driven)

A single input (photo, audio, video, evidence) runs through a cascade that prioritises free plugins first, then on-device, then BYO-key APIs. First result with confidence ≥ 0.7 wins.

PlantNet

Cloud · free (500/day quota) · 78K plant species

Claude Haiku 4.5

Cloud · BYO key · multi-taxon vision fallback

BirdNET-Lite (audio)

On-device · CC BY-NC-SA · ~50 MB · ~6,000 birds

EfficientNet-Lite0

On-device · MIT · ~18 MB INT8 · ImageNet base

Phi-3.5-vision (WebLLM)

On-device · ~2.4 GB · low-confidence fallback

MegaDetector v5a

On-device · ~134 MB · camera-trap pipeline

/identify

Quick no-save photo probe

/chat

Photo + audio attachments → cascade → Llama-3.2-1B interprets

02 Observation logging

Geolocated capture with EXIF auto-fill, multi-media support, and coordinate obscuration for sensitive species.

/observe

Two-pass GPS + EXIF + sensitive-species obscuration

Multi-image

Gallery with primary + remove

Audio

MediaRecorder ≤30 s

Video

≤30 s (H.265/AV1)

In-app camera

getUserMedia + file-input fallback

Map location picker

Drag-pin + search + reverse geocode

My observations

/profile/observations — thumbnail history

Batch EXIF importer

/profile/import — multi-photo + per-row review

Camera-trap batch

/profile/import/camera-trap — single GPS + per-photo EXIF

03 Social + curation

No-dark-patterns social layer: activity feed, follows, comments, watchlists, opt-in streaks, and expert-weighted consensus.

Follows + comments + watchlists

Astro components: FollowButton, Comments, WatchlistView

Streaks (opt-in)

Daily grace window, nightly recompute

Discovery badges

39 seed badges, nightly evaluator (5 cat × 4 tiers)

Expert application UI

ExpertApplyView + 3× weighted consensus

Activity feed

Server-side triggers + 12 event kinds

Bell-icon unread badge

Avatar-dropdown badge (99+ overflow)

04 Data + export

Your work, your data. Export Darwin Core, publish to GBIF, or wire AI agents to the MCP server.

Darwin Core CSV

Presets: DwC, SNIB, CONANP

Darwin Core Archive ZIP

For GBIF IPT (export-dwca Edge Function)

Personal API tokens

rst_* with scopes, SHA-256 hashed

REST API

/functions/v1/api/{observe,identify,observations,export}

MCP server

/functions/v1/mcp for Claude Desktop, Cursor, VS Code, Copilot

05 Offline + PWA

Works in the field. Local outbox, on-device models, offline pmtiles maps, and one-tap PWA install.

Install button

Android Chrome direct · iOS Safari hint

Service worker

Network-first HTML, cache-first hashed assets

Dexie outbox

IndexedDB for offline observations

pmtiles MX

~48 MB offline-map archive

On-device model cache

BirdNET, EfficientNet, Phi-vision in IndexedDB

06 Privacy + governance

BYO API keys never leave the browser. On-device AI never phones home. Sensitive species obscured. CARE/FPIC posture for indigenous data.

NOM-059 / CITES obscuration

RLS-driven obscure_level

Per-record license

CC-BY default, BY-NC, CC0

CARE / FPIC

Indigenous-data care posture

BYO keys client-side only

localStorage, never server-persisted

Network-free on-device AI

BirdNET, EfficientNet, Phi-vision, Llama

07 Internationalisation

EN/ES from day one with structural parity. 11 locale-paired routes with per-language slugs. Ready for Zapoteco/Mixteco when FPIC lands.

Full EN/ES parity

Every string lives in src/i18n/{en,es}.json

11 locale-paired routes

/en/observe ↔ /es/observar, /en/profile ↔ /es/perfil, …

Shared *View components

Shared body between locales

Source of truth: docs/progress.json (v0.1 → v1.0 done items), src/lib/identifiers/index.ts (registered plugins), and supabase/functions/ (deployed Edge Functions).

Report an issue

We'll include this in your report