<?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: Aditi</title>
    <description>The latest articles on DEV Community by Aditi (@aditi_2609).</description>
    <link>https://dev.to/aditi_2609</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%2F4153323%2Fa3640fb1-9212-4e5f-89d0-09ba34ca2f7c.jpg</url>
      <title>DEV Community: Aditi</title>
      <link>https://dev.to/aditi_2609</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aditi_2609"/>
    <language>en</language>
    <item>
      <title>WildLens: an offline field notebook that tells you what you just found outside</title>
      <dc:creator>Aditi</dc:creator>
      <pubDate>Sat, 10 Oct 2026 04:25:41 +0000</pubDate>
      <link>https://dev.to/aditi_2609/wildlens-an-offline-field-notebook-that-tells-you-what-you-just-found-outside-3j57</link>
      <guid>https://dev.to/aditi_2609/wildlens-an-offline-field-notebook-that-tells-you-what-you-just-found-outside-3j57</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;WildLens is a small field notebook that lives in your phone's browser. Point the camera at a plant, bird, animal or insect and it tells you what it thinks you're looking at. The identification runs entirely on your device, so your photos are never uploaded, and once the model has downloaded the app is built to keep working with no signal.&lt;/p&gt;

&lt;p&gt;I'm a developer, so I'm well aware of the irony of building an app to get people off screens. That's why I wanted the screen to be the shortest part of the experience: you spot something on a walk, take a photo, get a name in a few seconds, and put the phone back in your pocket. Every result also comes with a short "Look closer" prompt, a small observation task that turns the photo into a reason to keep looking at the real thing.&lt;/p&gt;

&lt;p&gt;I didn't want it to bluff, either. When WildLens isn't sure, it says so. It shows its top three guesses instead of one confident-sounding answer, and if it can't find a living subject in the photo, it tells you that. Anything hazardous gets a safety note, and every plant carries one fixed rule: never eat anything based on a photo.&lt;/p&gt;

&lt;p&gt;What you find can be saved to a local field journal with your own notes and, if you choose, an approximate location. It stays on your device, and you can export or clear it whenever you like.&lt;/p&gt;

&lt;p&gt;I gave it a quiet look on purpose: a parchment background, muted greens, a serif for scientific names, no gradients. It should feel like a notebook, not another app begging for attention.&lt;/p&gt;

&lt;p&gt;It's for anyone who has stood on a trail or in a garden and wondered "what is that?"&lt;/p&gt;

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

&lt;p&gt;Live app: &lt;strong&gt;&lt;a href="https://wildlens-57g9.onrender.com/" rel="noopener noreferrer"&gt;https://wildlens-57g9.onrender.com/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It works best on a phone. Open it, allow camera access, and on first launch let it download the model (about 330 MB) over Wi-Fi. That's a one-time download, and the model is kept in your browser's cache afterwards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it went outside:&lt;/strong&gt; &lt;br&gt;
I tried to identify the plants in my garden and a sweet little cat that always comes to my garden. Then, when I went outside, I tried to identify the flowers that I saw there and kept them in my journal, it worked quite nicely and was amazing.&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/Esu05" rel="noopener noreferrer"&gt;
        Esu05
      &lt;/a&gt; / &lt;a href="https://github.com/Esu05/WildLens" rel="noopener noreferrer"&gt;
        WildLens
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A mobile-first, offline-first PWA with a calm field notebook look to take you out of house to identify plant, bird, animal or insect.
    &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;WildLens&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Point your phone at a plant, bird, animal or insect and find out what it is. An open-weight vision model runs inside your browser, so your photos never leave your device.&lt;/p&gt;
&lt;p&gt;WildLens is a mobile-first, offline-first PWA with a calm "field notebook" look. It is built for the DEV "Touch Grass" challenge: an excuse to go outside, look closely at what is living around you, and keep notes.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;On-device identification.&lt;/strong&gt; The model runs in the browser with WebAssembly. Nothing is uploaded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Honest uncertainty.&lt;/strong&gt; Results are confident, uncertain (top 3 candidates plus a best guess at the group, such as the cat family) or "no subject found". The app never forces a guess.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety notes.&lt;/strong&gt; Shown for anything hazardous. Plants always carry "never eat from photo".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Look closer.&lt;/strong&gt; A short observation prompt for each category, to get you noticing details instead of just tapping a result.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Field journal.&lt;/strong&gt; Observations…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Esu05/WildLens" 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;p&gt;WildLens is a React, TypeScript, Vite and Tailwind app, installable as a PWA, with the journal stored in IndexedDB.&lt;/p&gt;

&lt;p&gt;The AI at its core is &lt;strong&gt;BioCLIP&lt;/strong&gt;, an open-weight vision model from the Imageomics Institute (MIT licensed) that was trained on biodiversity images across the tree of life. I exported its image encoder to ONNX once, in Google Colab, and the app runs it in the browser with ONNX Runtime Web (WebAssembly). There's no server and no API key.&lt;/p&gt;

&lt;p&gt;Identification works like this. The photo is center-cropped and normalised, the encoder turns it into a vector, and that vector is compared with precomputed vectors for each species. BioCLIP responds best to full taxonomic names, so a small build script looks up every species on GBIF, and I embed "a photo of" plus the taxonomic string. Those text embeddings ship as a small file, so the phone only ever runs the image half of the model. A softmax turns the similarities into probabilities, and a set of "not nature" prompts catches photos that shouldn't become a species (a living room should never be reported as a gecko). When no single species wins clearly, the scoring adds up probabilities by genus, family, order and class, so it can lean on "probably this family" instead of a wrong species.&lt;/p&gt;

&lt;p&gt;The model file is far too big for GitHub, so it lives in a Hugging Face model repo. The app downloads it once and keeps it in the browser cache. The app itself is a static site on Render.&lt;/p&gt;

&lt;p&gt;The first version didn't work well. I started with OpenAI's CLIP (ViT-B/32, 8-bit) through Transformers.js, and it was wrong almost every time. I grew the label list, rewrote the prompts and tried prompt ensembling to separate a cat from a cheetah. Each tweak helped a little, but none fixed the real problem: CLIP is a general-purpose model, and BioCLIP actually knows biology.&lt;/p&gt;

&lt;p&gt;What saved me was keeping the whole UI behind one small &lt;code&gt;NatureIdentifier&lt;/code&gt; interface. Switching models meant adding a new identifier class and updating the scoring, with no changes to any screen. After the swap, the answers finally started to make sense.&lt;/p&gt;

&lt;p&gt;It's honest about its limits. It knows a few hundred species, not every organism on earth. Look-alikes (small brown birds, frogs, grasses) are hard for any model. And it's a notebook companion, not a safety tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Credits:&lt;/strong&gt; BioCLIP (Imageomics Institute), OpenCLIP, ONNX Runtime Web, GBIF for taxonomy, and Hugging Face for hosting the model files.&lt;/p&gt;

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

&lt;p&gt;I started with the trail. If you're hiking with no signal, a cloud vision API is just a spinner. Because the model weights are open, I could put the model on the phone itself: no connection needed, no per-photo cost, no API key to leak and no rate limit to hit.&lt;/p&gt;

&lt;p&gt;Privacy mattered just as much. A wildlife photo carries a time and often a place, which is exactly the kind of data I didn't want sitting on a server I don't control. With a local model, the photo never leaves the device.&lt;/p&gt;

&lt;p&gt;Open also meant I wasn't locked in when my first choice turned out to be wrong. With a closed API, "this model isn't good at biology" is a support ticket. With open weights it was a change I could make myself. Species are just text too, so adding a bird means adding a line, not retraining anything.&lt;/p&gt;

&lt;p&gt;WildLens is mostly other people's open work, glued together carefully: BioCLIP, ONNX Runtime, GBIF's taxonomy, Hugging Face's hosting. A closed API would have given me a black box that needed internet. Open innovation gave me a notebook that works at the edge of the trail.&lt;/p&gt;

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

&lt;p&gt;I used an AI coding assistant throughout, for scaffolding, for debugging the in-browser WebAssembly setup, and for the one-time model export. The decisions about what to build and what to keep were mine, and I tested the results myself.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Render:&lt;/strong&gt; WildLens is deployed on Render as a static site, which serves the PWA front end. The model itself runs on the user's device.&lt;/p&gt;




&lt;p&gt;Thanks for reading. If you try it, I'd love to hear what you found out there. Now go outside.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Current Daily: She was Busy for a Newspaper read, Now reading it in a few minutes</title>
      <dc:creator>Aditi</dc:creator>
      <pubDate>Mon, 05 Oct 2026 06:46:48 +0000</pubDate>
      <link>https://dev.to/aditi_2609/too-busy-for-a-newspaper-read-now-read-important-news-in-a-few-minutes-4mp7</link>
      <guid>https://dev.to/aditi_2609/too-busy-for-a-newspaper-read-now-read-important-news-in-a-few-minutes-4mp7</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Current Daily is a free daily study pack for my friend Asha, who is preparing for the UPSC Civil Services exam. Reading a whole newspaper every day takes hours, and most of it is not exam material. So I built her a daily current affairs digest that can generate 15 news points and 10 historical events of the day and send them on Telegram. In the evening, it will remind her to revise it.&lt;/p&gt;

&lt;p&gt;Every morning, the app reads headlines from PIB, The Hindu, and BusinessLine, keeps the points that matter for UPSC, tags each one with a GS paper (GS1 to GS4) and a topic, and adds up to 10 historical events for the date. The pack is posted to a public Telegram channel and shown on a website that can be filtered by GS paper. In the evening, a short revision message goes out with recent points. Anyone can join the channel, with no sign-up.&lt;/p&gt;

&lt;p&gt;Every point links to its source article, so it can be checked in seconds.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://current-daily.vercel.app/" rel="noopener noreferrer"&gt;https://current-daily.vercel.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Telegram channel: &lt;a href="https://t.me/Current_Daily_Reminder" rel="noopener noreferrer"&gt;https://t.me/Current_Daily_Reminder&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I handed it to Asha, and she said it was nice and really less time-consuming than before and she could read it in the short break during her study sessions.&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/Esu05" rel="noopener noreferrer"&gt;
        Esu05
      &lt;/a&gt; / &lt;a href="https://github.com/Esu05/Current-Daily" rel="noopener noreferrer"&gt;
        Current-Daily
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An app to bring you current affairs and historical event of the day.
    &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;Current Daily&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A free daily study pack for everyone. Every morning it collects the day's news, keeps the points that matter for the Civil Services exam, adds important historical events for the date, and delivers everything on a website and a Telegram channel. Every evening it sends a short revision reminder.&lt;/p&gt;
&lt;p&gt;The filtering and summarising is done by &lt;strong&gt;Gemma 3 (4B)&lt;/strong&gt;, an open-weight model that runs through &lt;strong&gt;Ollama&lt;/strong&gt;. There is no paid API, no API key, and no cost per run.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;For readers&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;You do not need to install anything.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the website to read the day's pack and filter it by GS paper (GS1 to GS4).&lt;/li&gt;
&lt;li&gt;Join the Telegram channel to get the pack every morning and a revision reminder every evening.&lt;/li&gt;
&lt;li&gt;Tap the source link on any point to read the full article.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is a first-pass filter, not a replacement for reading the newspaper or…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Esu05/Current-Daily" 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;Model:&lt;/strong&gt; Gemma 3 (4B), an open-weight model, running locally through Ollama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pipeline:&lt;/strong&gt; Node.js scripts collect RSS headlines and drop obvious junk (city news, sports, crime, Hindi headlines). Each remaining headline goes to Gemma on its own. Gemma gives a 1 to 5 usefulness score and picks a topic, and items scoring 3 or more are kept, up to 15.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GS tags are decided by code, not the model.&lt;/strong&gt; Gemma picks a topic such as Polity or Economy, and a lookup table maps it to a GS paper. Small models were unreliable at choosing the paper directly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Links cannot be mismatched.&lt;/strong&gt; Each URL comes from the feed item that was screened, never from the model. An early version let the model pick items by number from one long list, and it attached the wrong links to summaries. Screening one headline per call fixed that.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;History:&lt;/strong&gt; Wikipedia's "On this day" feed, filtered to remove disasters and entertainment, then Gemma picks up to 10 events useful for GS1.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automation:&lt;/strong&gt; A GitHub Actions workflow installs Ollama, pulls Gemma, builds the pack, commits it, and posts to Telegram every morning. A second workflow sends the evening revision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React, Vite and Tailwind, deployed on Vercel. Each daily commit redeploys the site.&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 costs nothing to run.&lt;/strong&gt; There is no API key and no per-call bill, which makes a daily job possible on a student budget.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nothing leaves my own runner.&lt;/strong&gt; The model runs inside the job itself, and no reader data goes to a third-party AI service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It is swappable.&lt;/strong&gt; Changing the model is one line. A larger model judges relevance better, and a fine-tuned one could follow a specific exam style or write in Hindi.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anyone can fork it&lt;/strong&gt; and adapt the feeds and rules for their own exam.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where it fell short: a 4B model is lenient on borderline items, sometimes returns broken output, and can garble numbers and dates. I handle that with rules around the model, a blocklist that grows from real output, and a source link on every card. Indian Express blocks GitHub's servers, so it is not in the automated run.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Best Use of Gemma&lt;/li&gt;
&lt;li&gt;Best Use of GitHub Copilot (project automated with GitHub Actions)&lt;/li&gt;
&lt;/ul&gt;

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