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).