I’m excited to share a project I’ve been working on — a bird identification app built specifically for Portland, Oregon and the Pacific Northwest.
What It Does
The Portland Bird ID app will let you identify local birds in two ways: snap a photo and get an instant ID, or hold up your phone and let it listen to a bird call. We’re launching with 30 of the most common species you’ll encounter at spots like Oaks Bottom Wildlife Refuge, Fernhill Wetlands, and your own backyard — from American Robins and Steller’s Jays to Bald Eagles and Varied Thrushes — with more on the way. Portland’s birding hotspots have over 200 documented species, and we’ll be expanding the app’s library over time.
Why Not Just Use Merlin?
Cornell Lab’s Merlin is a fantastic app — I use it myself. But it’s designed to cover over 10,000 species worldwide. When you point it at a bird in Portland, it’s sorting through thousands of possibilities. My app starts with the 30 species you’re most likely to actually see here, and will grow as I add more local species to the training data.
There’s another advantage that birders might not think about: regional variation. A Song Sparrow’s call in Portland sounds different from one in Virginia. Dark-eyed Juncos here are the beautiful “Oregon” form with their warm brown sides — not the gray “Slate-colored” form you’d see back East. By training the AI exclusively on Pacific Northwest birds, with photos I’ve taken right here in Portland and audio recordings from our region, the app learns what our birds look and sound like.
The Technical Side
Under the hood, I’m using machine learning — specifically TensorFlow and a model architecture called MobileNet — to teach a computer to recognize birds from photos. The process works like this: I feed the model hundreds of labeled photos of each species, and it learns the visual patterns — beak shape, color, wing bars, posture — that distinguish a Cooper’s Hawk from a Red-tailed Hawk.
For sound identification, the approach is surprisingly similar. The app converts audio into a visual pattern called a spectrogram — essentially a picture of sound — and then identifies it the same way it would a photo. A bandpass filter focused on the 1–10 kHz range where bird calls live helps cut out background noise like traffic and wind.
I’ve collected over 2,200 high-quality bird call recordings from Xeno-canto, a global database of wildlife sounds contributed by birders worldwide. Combined with my own photography of Portland birds, this gives the model a solid foundation to learn from.
Why a Local App Matters
Global bird ID apps like Merlin are incredible tools, but a hyper-local app has some real advantages:
- Higher accuracy — Starting with 30 local species instead of thousands means the model makes fewer mistakes, and accuracy will only improve as we expand
- Regional calls and dialects — Bird songs vary by geography. Our Song Sparrows don’t sound like East Coast Song Sparrows. Training on Pacific Northwest recordings means better accuracy for the birds we actually hear
- Local plumage differences — Subspecies look different in different regions. Our Dark-eyed Juncos are the “Oregon” form — training on local photos captures these subtle differences
- Hotspot maps — The app will show you exactly where in Portland to find specific species, from Oaks Bottom to Powell Butte
- Local photos — Every training image was taken right here in the Portland metro area, capturing how these birds actually appear in our parks and neighborhoods
What’s Coming
We’re launching with 30 species and will continue adding more — our goal is to eventually cover 150+ species found across the Portland metro area. The app will also include local hotspot maps showing where to find specific species around Portland, integration with my existing bird photography and field guides on this site, and it will be available as a free tool for the Portland birding community.
I’ll keep sharing updates here as the project progresses. If you’re a Portland birder with photos of local species you’d like to contribute to the training data, I’d love to hear from you — head to my contact page and let me know!