<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anush Deotare</title>
    <description>The latest articles on DEV Community by Anush Deotare (@anushdeotare11).</description>
    <link>https://dev.to/anushdeotare11</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3959029%2F82d1010b-47bd-4f40-b9ca-9b792dda2a9f.png</url>
      <title>DEV Community: Anush Deotare</title>
      <link>https://dev.to/anushdeotare11</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anushdeotare11"/>
    <language>en</language>
    <item>
      <title>Dawn Chorus: An Offline Bird-Call Bingo Built on BirdNET and Gemma (hacktoberfest week 1 dev challenge)</title>
      <dc:creator>Anush Deotare</dc:creator>
      <pubDate>Sat, 10 Oct 2026 21:09:08 +0000</pubDate>
      <link>https://dev.to/anushdeotare11/dawn-chorus-an-offline-bird-call-bingo-built-on-birdnet-and-gemma-hacktoberfest-week-1-dev-4jjo</link>
      <guid>https://dev.to/anushdeotare11/dawn-chorus-an-offline-bird-call-bingo-built-on-birdnet-and-gemma-hacktoberfest-week-1-dev-4jjo</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Dawn Chorus is a listening-walk bird bingo that runs entirely on my laptop.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The app shows a bingo card of the 12 birds most likely near me this week.&lt;/li&gt;
&lt;li&gt;I put my phone in my pocket, in airplane mode with the screen off, and record the walk with the normal voice recorder.&lt;/li&gt;
&lt;li&gt;Afterwards I upload the recording. An open-source model identifies the birds by their calls, and a local model writes a short field-journal page.&lt;/li&gt;
&lt;li&gt;The journal ends with the birds I missed, which is the reason to go out again tomorrow.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The screen is the shortest part of the experience. A "Grass Ratio" card compares the minutes I spent outside with the seconds I spent on screen. It's for anyone curious about the sounds around them, including places with no signal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real test:&lt;/strong&gt; I walked 30 minutes on DATE. BirdNET found 10 species, including 5 of the 12 bingo birds, and I confirmed Myna, House Crow, Rock Pigeon myself. Screen time: 2 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://drive.google.com/file/d/1XLtsqh7feIgi8ejf-uN9auIWegdudc3x/view?usp=sharing" rel="noopener noreferrer" class="c-link"&gt;
            hacktoberfest.mov - Google Drive
          &lt;/a&gt;
        &lt;/h2&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fssl.gstatic.com%2Fdocs%2Fdoclist%2Fimages%2Fdrive_favicon_2026_32dp.png" width="32" height="32"&gt;
          drive.google.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;A short captioned walkthrough: the bingo card, airplane mode, the walk with the screen dark, then the results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/anushdeotare11" rel="noopener noreferrer"&gt;
        anushdeotare11
      &lt;/a&gt; / &lt;a href="https://github.com/anushdeotare11/dawn-chorus" rel="noopener noreferrer"&gt;
        dawn-chorus
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Dawn Chorus&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Put your phone away. Listen to the morning.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dawn Chorus is a listening-walk bird bingo that runs entirely on your own laptop. You get a checklist of the birds likely to be near you this week, you go for a walk with your phone recording in your pocket and the screen off, and when you get back an open-source model tells you who was singing. A local language model then writes you a short field-journal page about the walk.&lt;/p&gt;
&lt;p&gt;Built for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05" rel="nofollow"&gt;Hacktoberfest Open-Source AI Challenge, Week 1: "Touch Grass"&lt;/a&gt;. The idea: &lt;strong&gt;the screen should be the shortest part of the experience.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7fd8c5cfae00f902144ae873b08692d953b5295bfe0d7fc2a6b166542869b927/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e392d626c7565"&gt;&lt;img src="https://camo.githubusercontent.com/7fd8c5cfae00f902144ae873b08692d953b5295bfe0d7fc2a6b166542869b927/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e392d626c7565" alt="Python 3.9"&gt;&lt;/a&gt; &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/d8c3924b5b3fe9b96c1357920973e707584a1d774da044ffbf1880174f18d04e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64652d4d49542d677265656e"&gt;&lt;img src="https://camo.githubusercontent.com/d8c3924b5b3fe9b96c1357920973e707584a1d774da044ffbf1880174f18d04e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64652d4d49542d677265656e" alt="License MIT"&gt;&lt;/a&gt; &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b15652df0052d1e3391e6d47328bf4d1e3cdf4f0e0cdb2c20dbe8f750393a738/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72756e732d6f66666c696e652d73756363657373"&gt;&lt;img src="https://camo.githubusercontent.com/b15652df0052d1e3391e6d47328bf4d1e3cdf4f0e0cdb2c20dbe8f750393a738/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72756e732d6f66666c696e652d73756363657373" alt="Offline first"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The story, real walk results and demo video are in the DEV post: &lt;a href="https://dev.to/" rel="nofollow"&gt;Dawn Chorus on DEV&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/anushdeotare11/dawn-chorus#how-it-works" rel="noopener noreferrer"&gt;How it works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anushdeotare11/dawn-chorus#features" rel="noopener noreferrer"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anushdeotare11/dawn-chorus#quick-start" rel="noopener noreferrer"&gt;Quick start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anushdeotare11/dawn-chorus#taking-a-walk" rel="noopener noreferrer"&gt;Taking a walk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anushdeotare11/dawn-chorus#upload-straight-from-your-phone" rel="noopener noreferrer"&gt;Upload straight from your phone&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anushdeotare11/dawn-chorus#running-fully-offline" rel="noopener noreferrer"&gt;Running fully offline&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anushdeotare11/dawn-chorus#why-open-source-ai" rel="noopener noreferrer"&gt;Why open-source AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anushdeotare11/dawn-chorus#limitations-please-read" rel="noopener noreferrer"&gt;Limitations (please read)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anushdeotare11/dawn-chorus#project-structure" rel="noopener noreferrer"&gt;Project structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/anushdeotare11/dawn-chorus#testing-and-preflight" rel="noopener noreferrer"&gt;Testing and&lt;/a&gt;…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/anushdeotare11/dawn-chorus" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;BirdNET&lt;/strong&gt; identifies birds from audio. Its location and week model also builds the bingo card and filters out birds that don't live nearby.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 (4B)&lt;/strong&gt;, served locally by Ollama, writes the field journal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlit&lt;/strong&gt; and &lt;strong&gt;ffmpeg&lt;/strong&gt; handle the interface and audio.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two lessons shaped the design:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Filtering by location matters.&lt;/strong&gt; Without it, the detector reported dozens of species from a short clip.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language models invent things.&lt;/strong&gt; With an empty detection list, Gemma wrote about a Robin and a Cardinal that don't live here. Now the card is checked against the detections, and a plain template replaces it if it mentions a bird that wasn't heard.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It works with no signal.&lt;/strong&gt; BirdNET runs on the laptop, so a forest trail is no problem. A hosted audio API wouldn't work there.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recordings stay private.&lt;/strong&gt; A walk recording holds a location and other people's voices. Nothing is uploaded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No per-request cost.&lt;/strong&gt; Analyzing a long walk every day is free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A specialist model fits better.&lt;/strong&gt; BirdNET is trained for exactly this task, and I could inspect and fix its over-reporting myself.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One caveat: Gemma is replaceable by almost any small local model. BirdNET is the part a general closed API couldn't replace offline. Its weights are also non-commercial.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I planned the project with Claude and built it with Antigravity, testing each round myself and sending back what failed. [[OPTIONAL: paste your DevRelay session link, or delete this section]]&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; Gemma 3 (4B) runs locally through Ollama and writes the field journal, fully offline, with a check that keeps its output honest.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
      <category>hacktoberfest</category>
    </item>
  </channel>
</rss>
