<?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: Hartejsingh Sandhu</title>
    <description>The latest articles on DEV Community by Hartejsingh Sandhu (@hartej46).</description>
    <link>https://dev.to/hartej46</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%2F4158730%2F500b7551-d7fa-4715-9555-c911c40e7fa7.jpg</url>
      <title>DEV Community: Hartejsingh Sandhu</title>
      <link>https://dev.to/hartej46</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hartej46"/>
    <language>en</language>
    <item>
      <title>Field Companion: Your Voice-First Nature Guide That Works Deep in the Wild With Zero Signal</title>
      <dc:creator>Hartejsingh Sandhu</dc:creator>
      <pubDate>Mon, 12 Oct 2026 03:45:51 +0000</pubDate>
      <link>https://dev.to/hartej46/field-companion-your-voice-first-nature-guide-that-works-deep-in-the-wild-with-zero-signal-4nh6</link>
      <guid>https://dev.to/hartej46/field-companion-your-voice-first-nature-guide-that-works-deep-in-the-wild-with-zero-signal-4nh6</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;Most modern AI apps are built around screens, dashboards, and constant cloud connectivity. But when you hike into the deep woods, mountain passes, or national parks, cellular signal drops to zero. That is usually the exact moment you encounter an unfamiliar bird singing in the canopy or spot an unknown plant on the trail.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Field Companion (Offline Nature Scanner)&lt;/strong&gt; — an open-source, voice-first mobile companion engineered to get people &lt;strong&gt;off their screens and out into nature&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Instead of typing queries into a chatbot or squinting at a screen under the midday sun:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You listen and speak:&lt;/strong&gt; Tap the mic or let it passively record ambient audio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On-device Bioacoustics:&lt;/strong&gt; It identifies bird vocalizations and wildlife songs in real time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On-device Open-Weight Intelligence:&lt;/strong&gt; Powered by quantized &lt;strong&gt;Gemma&lt;/strong&gt; weights running locally on your phone, it answers questions like &lt;em&gt;"What bird is making that flute-like call right now?"&lt;/em&gt; and guides your eyes back to the trees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline Checklist Grounding:&lt;/strong&gt; It cross-references observations against a local SQLite database of 731 regionally verified species to prevent hallucination without requiring any internet connection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Field Journaling:&lt;/strong&gt; Automatically creates rich journal entries with timestamps, audio clips, and sightings that sync only when you decide to return home.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The goal is simple: &lt;strong&gt;make screen time the shortest part of the hike so you can look up, listen, and touch grass.&lt;/strong&gt;&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Web App &amp;amp; Download Hub:&lt;/strong&gt; &lt;a href="https://offline-nature-scanner-git-main-hartej46s-projects.vercel.app" rel="noopener noreferrer"&gt;https://offline-nature-scanner-git-main-hartej46s-projects.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Production Backend on Render:&lt;/strong&gt; &lt;a href="https://offline-nature-scanner-1.onrender.com" rel="noopener noreferrer"&gt;https://offline-nature-scanner-1.onrender.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standalone Android APK Direct Download:&lt;/strong&gt; &lt;a href="https://offline-nature-scanner-1.onrender.com/download/app" rel="noopener noreferrer"&gt;Download FieldCompanion.apk (69.4 MB)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expo Preview / Instant Test:&lt;/strong&gt; Available via &lt;a href="https://expo.dev/accounts/hartej46/projects/field-companion/builds/4d4abb04-d143-43b5-82c9-0efe27cfa0ef" rel="noopener noreferrer"&gt;Expo Go&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Live Feature Tour:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Audio Identification:&lt;/strong&gt; Analyzes bird songs with acoustic feature extraction and confidence scoring.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual Plant &amp;amp; Wildlife Identification:&lt;/strong&gt; Client-side camera capture with offline heuristic checklists.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Weight Manager:&lt;/strong&gt; Transparent 1-click model weight installer that pulls weights directly onto device storage with zero recurring API costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline PWA Landing Page:&lt;/strong&gt; Even the web landing page uses service workers (&lt;code&gt;sw.js&lt;/code&gt;) so hikers can review the sideloading guide without an active data connection.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;The entire codebase is open-source under the MIT License on GitHub:&lt;/p&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/hartej46" rel="noopener noreferrer"&gt;
        hartej46
      &lt;/a&gt; / &lt;a href="https://github.com/hartej46/Offline-Nature-scanner" rel="noopener noreferrer"&gt;
        Offline-Nature-scanner
      &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;Offline-Nature-scanner&lt;/h1&gt;

&lt;/div&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/hartej46/Offline-Nature-scanner" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/hartej46/Offline-Nature-scanner" rel="noopener noreferrer"&gt;https://github.com/hartej46/Offline-Nature-scanner&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; FastAPI containerized in Docker, with SQLite grounding and acoustic pipelines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile Client:&lt;/strong&gt; React Native + Expo configured for standalone offline Android APK builds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web Landing:&lt;/strong&gt; React 19 + Vite PWA deployed to Vercel and configured for Render static site mirroring.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;The system is designed around a three-tier offline-first architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                            +-------------------------------------------------------+
                            |                  RENDER CLOUD                         |
                            |                                                       |
   [ Mobile Device ]        |   +-----------------------------------------------+   |
           |                |   |  FastAPI Backend (Docker on Render)           |   |
           |-- Download APK-|--&amp;gt;|  - GET /download/app (69.4 MB Standalone APK) |   |
           |                |   |  - Regional Checklist &amp;amp; Journal (SQLite)      |   |
           |-- Model Weights|--&amp;gt;|  - GET /model/download/{id} (Redirect)        |   |
           |   Redirect     |   +-----------------------+-----------------------+   |
           v                |                           |                           |
   +---------------+        +---------------------------|---------------------------+
   | ON-DEVICE AI  |                                    |
   | (100% Offline)|                                    v
   | - Gemma 2B    |                    +-------------------------------+
   | - BirdNET     |                    | Hugging Face / Model Weights  |
   | - SQLite 731  |                    | (One-time download to phone)  |
   +---------------+                    +-------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. Open-Weight Foundation: Google Gemma
&lt;/h3&gt;

&lt;p&gt;To achieve realistic reasoning on mobile hardware without cloud latency or fees, Field Companion utilizes &lt;strong&gt;Gemma&lt;/strong&gt; (&lt;code&gt;gemma-2-2b-it-Q4_K_M.gguf&lt;/code&gt; / &lt;code&gt;gemma-4:e2b&lt;/code&gt;). &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On mobile devices, the model weights live directly inside device document storage.&lt;/li&gt;
&lt;li&gt;The model is prompted with structured JSON grounding schemas constrained by our local checklist. When an observer hears a warbler, Gemma doesn't fabricate global species — it cross-checks the regional bounding box and returns actionable identification advice.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Acoustic Bioacoustics Pipeline
&lt;/h3&gt;

&lt;p&gt;Audio recordings captured through the phone's microphone are analyzed through an acoustic feature extraction pipeline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Peak frequency detection and harmonic spectral ratio calculation.&lt;/li&gt;
&lt;li&gt;Frequency centroid and temporal syllable counting to match bird calls against acoustic patterns (e.g., flute-like whistles vs. rapid trills).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Production Deployment with Render &amp;amp; Docker
&lt;/h3&gt;

&lt;p&gt;The backend companion service is hosted on &lt;strong&gt;Render&lt;/strong&gt; as a Docker Web Service:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built on Python 3.11-slim with system audio libraries (&lt;code&gt;libsndfile1&lt;/code&gt;, &lt;code&gt;ffmpeg&lt;/code&gt;, &lt;code&gt;sqlite3&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Handles model redirection, APK distribution, and automated &lt;code&gt;/health&lt;/code&gt; checks.&lt;/li&gt;
&lt;li&gt;Backed by an automated &lt;code&gt;render.yaml&lt;/code&gt; Blueprint specification for reproducible deployments.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;If this project had been built using closed proprietary APIs (like ChatGPT or proprietary cloud vision services), &lt;strong&gt;it simply would not work in the real world:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Woods Have No Wi-Fi:&lt;/strong&gt; Closed APIs require an internet ping on every question. The moment you cross the trailhead and step under a thick forest canopy, closed AI turns into a useless loading spinner. Open-weight models like Gemma allow the intelligence to sit directly in your pocket.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;True Location Privacy:&lt;/strong&gt; Nature enthusiasts often encounter endangered, vulnerable, or protected species (such as nesting raptors or rare orchids). Sending exact GPS coordinates and timestamps to third-party commercial cloud APIs risks location leaks and tracking. With local models and local SQLite storage, your field observations never leave your device unless you choose to export them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Financial Friction ($0/month):&lt;/strong&gt; Closed APIs charge per token. A student or park ranger making 50 audio and visual queries during an afternoon hike would run up a bill. Open innovation means the model is downloaded once over home Wi-Fi and costs exactly $0 to run indefinitely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Longevity:&lt;/strong&gt; Open-weight weights cannot be deprecated, paywalled, or discontinued by a sudden API shutdown. A hiker can pull out this phone five years from now and it will identify a chickadee just as reliably as it does today.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render&lt;/strong&gt; — Deployed the companion backend Docker Web Service with automatic container healthchecks, persistent regional storage, and dynamic APK streaming on Render.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; — Integrated Google's open-weight Gemma architecture for local offline nature reasoning, acoustic observation verification, and on-device field guidance.&lt;/li&gt;
&lt;/ul&gt;

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