DEV Community

Affan Raza
Affan Raza

Posted on

Bird Explorer: An AI Birdwatching App That Gets You Outside

Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission 🌿

Bird Explorer: An AI Birdwatching App That Gets You Outside

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass.

What I Built

What if AI didn't keep you glued to your screen, but helped you leave it?

That question inspired me to build Bird Explorer, a local-first, AI-powered birdwatching application designed to turn curiosity about nature into real-world exploration.

Most AI applications encourage us to spend more time interacting with a screen. Bird Explorer takes a different approach: it uses AI to help people identify birds, then encourages them to put their phones away and experience the outdoors.

The idea is simple: use AI as a bridge to the physical world, not a destination.

What can you do with Bird Explorer?

  • AI Bird Identification: Upload a bird photograph and identify the species using a locally running vision model.
  • Outdoor Quests: Generate birdwatching missions for 15, 30, or 60 minutes, with distance targets that encourage walking and exploration.
  • GPS-Based Progress: Track walking distance locally and use it to measure quest progress.
  • Bird Journal: Save observations, photographs, descriptions, and confidence information in browser storage.
  • Audio Field Notes: Record short audio notes while observing birds outdoors.
  • Regional Bird Checklist: Explore 48 bird species selected for Jharkhand and the wider eastern and central Indian region.
  • Manual Field Observations: Record sightings without photographs, including habitat, weather, and bird behaviour.
  • Offline-First Experience: Access saved observations, checklist data, journal filters, exports, and supported PWA features without a continuous internet connection.

Bird Explorer is designed for birdwatchers, nature enthusiasts, students, families, and anyone who wants a practical reason to step outside.

The goal isn't to spend an hour looking at a bird through a phone. It's to use technology briefly, explore the world, and record discoveries when needed.

Demo

Live application: https://bird-explorer-phi.vercel.app

Demo video: https://drive.google.com/file/d/1ckssDJGcTO5IQI1Ccgd-OfuprqTO-QIc/view?usp=sharing

The project demonstrates the intended experience: identify a bird, start an outdoor quest, explore with GPS-based progress, record observations, and preserve discoveries in a local journal.

The application also includes a regional checklist, manual field observations, audio notes, and offline-first functionality.

Deployment note: The live application cannot automatically access Ollama running on my personal computer. AI identification and AI-generated quests require the relevant API to reach a running Ollama service. The local AI workflow is demonstrated using Ollama and the models described below.

Code

GitHub repository: https://github.com/affanraza84/bird-explorer

Bird Explorer is built with Next.js and TypeScript, with local AI inference powered by Ollama.

The implementation includes:

  • Bird identification and quest-generation API routes
  • GPS distance calculation and validation
  • IndexedDB-based observation storage
  • Audio recording and playback
  • Regional bird checklist and manual observation workflows
  • PWA manifest, service worker, and offline navigation support
  • Journal search, filtering, statistics, and JSON/CSV exports

The project includes automated tests for journal persistence, quest logic, GPS validation, audio notes, exports, and field observations.

How I Built It

I developed Bird Explorer incrementally, starting with bird identification and expanding it into a broader outdoor observation tool.

1. Local AI Bird Identification

I used Ollama to run open-weight models locally:

  • qwen2.5vl:3b for image-based bird identification.
  • qwen3:4b for text generation, including outdoor quest generation.

The Next.js API validates an uploaded image and sends it to the locally running Ollama service. The vision model returns identification information for the application to display.

This avoids requiring a proprietary cloud vision API for the local identification workflow.

2. Outdoor Quests

I built a quest system with 15-, 30-, and 60-minute durations and corresponding walking-distance targets:

  • 15 minutes: 500 metres
  • 30 minutes: 1 kilometre
  • 60 minutes: 2 kilometres

Quest progress combines task completion, unique species discoveries, and walking distance. Repeated observations of the same species do not artificially inflate the unique-species count.

3. Privacy-First GPS

The GPS system uses the Haversine formula to calculate distances between location samples.

It accumulates distance across successive movement segments and filters noisy readings, including inaccurate GPS samples, small stationary movements, and implausible speed spikes.

GPS processing happens in the browser. Exact coordinates are kept in transient memory for distance calculations rather than being persisted or transmitted to a backend.

4. Local Bird Journal

I used IndexedDB to store bird observations and image Blobs in the browser.

The journal supports searching, filtering, observation details, metadata editing, and JSON/CSV exports. Audio field notes are stored alongside observations, with schema migrations designed to preserve existing records.

The manual observation workflow means users can record a sighting even when they cannot photograph a bird.

5. Offline-First PWA

I added a web app manifest, service worker, installation prompt, offline status indicator, and navigation fallback.

Previously saved observations and supported journal features remain accessible offline.

One important distinction: offline application access does not automatically mean offline AI inference on every device. AI identification and model-generated quests require the Next.js API to reach a running Ollama service.

Technology Stack

  • Frontend: Next.js, React, TypeScript, Tailwind CSS
  • AI runtime: Ollama
  • AI models: Qwen2.5-VL 3B and Qwen3 4B
  • Storage: IndexedDB and localStorage
  • Browser APIs: Geolocation, MediaRecorder, Service Worker
  • Testing: Automated tests, ESLint, TypeScript, production build
  • Deployment: Vercel for the web application

I used an AI coding agent throughout the implementation process, working through multiple milestones from initial bird identification to GPS validation, offline support, and regional field observations.

Why Does Open Innovation Matter?

Open innovation matters because it changes where inference happens and who controls the data.

Privacy and Data Ownership

A bird photograph can reveal more than the bird itself. It may also capture someone's surroundings or other contextual information.

With local inference, bird photographs can be processed on the user's own machine without sending them to a proprietary cloud AI provider. The journal also uses browser storage rather than a cloud-hosted journal database.

The application is designed to avoid transmitting or persisting raw GPS coordinates.

Control Over the AI Stack

Ollama and downloadable open-weight models give me more control over the inference environment.

I can experiment with compatible models, change model versions, and evaluate different trade-offs without rebuilding the entire application around one proprietary AI API.

This makes the AI layer more flexible and gives developers greater control over how models are integrated into their applications.

Cost and Accessibility

Local inference avoids per-request fees from a hosted AI API, although it still requires compatible hardware, storage, and electricity.

Users can run the models on suitable local hardware without needing a dedicated cloud AI account.

AI That Encourages Real-World Activity

The most important benefit isn't simply that the model runs locally. It's that the application is designed around an outdoor activity.

The AI helps initiate the experience, but the actual value comes from walking, observing wildlife, learning species, and recording discoveries.

The screen should be the shortest part of the experience.

My Agent Session

I documented the development process in my DevRelay Agent Session, covering the implementation milestones, technical decisions, and testing workflow.

Explore the Bird Explorer Agent Session — Milestones 1–7

The session provides additional context on how the application evolved from a bird-identification prototype into a broader outdoor observation tool.

What I Learned

Building Bird Explorer reinforced an important engineering lesson: adding AI is not the same as building a useful AI product.

The work involved connecting model inference with reliable application behaviour, validating structured output, handling model failures, preserving browser data through schema migrations, filtering noisy GPS readings, and making the experience useful when offline.

I also learned to separate AI-generated suggestions from deterministic application logic. The model can suggest a quest, but the application should remain responsible for validation, progress tracking, and completion rules.

What's Next?

Potential improvements include expanding the regional bird database, improving species-identification evaluation, adding richer habitat-distribution insights, and supporting standardized wildlife-observation exports.

I would also like to test the application during real birdwatching sessions and gather feedback about whether the quests genuinely encourage people to spend more time outdoors.

Final Thoughts

Bird Explorer began with a simple idea: technology should sometimes help us use technology less.

By combining local AI, GPS-guided quests, field observations, and offline-first storage, I wanted to build something that makes stepping outside a little more interesting.

The goal isn't to watch more birds on a screen. It's to discover more birds in the real world.

devchallenge #hf26challenge

Top comments (0)