behind the scenes

How it all works.

From birdsong to browser in under 30 seconds. Here's the full pipeline — every piece we built, wired, or configured.

the data pipeline

1
Bird sings
A bird calls or sings within range of the microphone.
2
BirdNET listens
The AI model analyzes 15-second audio windows and identifies the species with a confidence score.
3
Camera fires
Our Python script detects the new identification and triggers a 15-second video recording.
4
Data syncs
The sync service picks up the new detection and POSTs it to our FastAPI backend on Railway.
5
Backend processes
Deduplication groups detections into visits. New species trigger SMS alerts and eBird enrichment.
6
Dashboard updates
The website receives the new visit via Supabase real-time and it pops into the live feed.
the full stack

What we're using.

layertechnology
Edge computeRaspberry Pi 4
Audio AIBirdNET-Pi
MicrophoneShure MV7
CameraPi Camera Module 3
Sync servicePython
DatabaseSupabase (Postgres)
Backend APIFastAPI
FrontendNext.js + React
powered by Cornell Lab of Ornithology

The bird identification model (BirdNET) and species data (eBird) both come from Cornell Lab of Ornithology. Their open research makes projects like this possible. BirdNET can identify over 6,000 bird species worldwide and runs entirely on the Pi — no internet connection needed for identification.