<?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: Dhwanan Bharadva</title>
    <description>The latest articles on DEV Community by Dhwanan Bharadva (@dkb73).</description>
    <link>https://dev.to/dkb73</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%2F4163906%2Fa44a0ac9-810f-41fa-b0d8-8160a3baa1a1.jpg</url>
      <title>DEV Community: Dhwanan Bharadva</title>
      <link>https://dev.to/dkb73</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dkb73"/>
    <language>en</language>
    <item>
      <title>Plant Your Planet | geospatial &amp; temporal analytical guide</title>
      <dc:creator>Dhwanan Bharadva</dc:creator>
      <pubDate>Sun, 11 Oct 2026 20:01:13 +0000</pubDate>
      <link>https://dev.to/dkb73/plant-your-plant-geospatial-temporal-analytical-guide-3m06</link>
      <guid>https://dev.to/dkb73/plant-your-plant-geospatial-temporal-analytical-guide-3m06</guid>
      <description>&lt;h1&gt;
  
  
  PlantMyPlanet
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;Built in collaboration with &lt;a class="mentioned-user" href="https://dev.to/rajan_patel_544aa43c80bfe"&gt;@rajan_patel_544aa43c80bfe&lt;/a&gt; &lt;/p&gt;

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

&lt;p&gt;PlantMyPlanet is a garden planner that starts with the ground under your feet, rather than relying on a generic plant list. &lt;/p&gt;

&lt;p&gt;By dropping a pin, the app reads that spot's specific soil and climate data, matches it against the FAO EcoCrop catalog ($2,568$ crops), and determines what can actually thrive there. Once you pick a crop and choose a scale, it generates a stage-by-stage care plan to follow outdoors. A contextual chat advisor stays tied directly to your planting—tracking days in the ground, current growth stage, and logs from your garden.&lt;/p&gt;

&lt;p&gt;It is designed for anyone who wants to grow something this season and is tired of receiving advice written for a climate they do not possess.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Outdoor Loop:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Stand where you want to plant and mark the coordinates.&lt;/li&gt;
&lt;li&gt;See which crops fit that soil pH, texture, rainfall, and temperature.&lt;/li&gt;
&lt;li&gt;Plant one today and follow the checklist.&lt;/li&gt;
&lt;li&gt;Come back with field observations—pests, moisture, leaves—and ask questions about that specific plant.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzdft972lvgdbwf3kq1jj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzdft972lvgdbwf3kq1jj.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F81599ooyalv3row2y98v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F81599ooyalv3row2y98v.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fez0r6p3dnpgha9azqcc6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fez0r6p3dnpgha9azqcc6.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fefi7q60ocnycbgqlnkug.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fefi7q60ocnycbgqlnkug.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi3ef73k0ateevas01has.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi3ef73k0ateevas01has.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F03vurockhrzm637kpj2f.png" alt=" " width="800" height="520"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Demo &amp;amp; Local Setup
&lt;/h2&gt;

&lt;p&gt;To run the application locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
python db/ingest_ecocrop.py
uvicorn app.main:app &lt;span class="nt"&gt;--host&lt;/span&gt; 0.0.0.0 &lt;span class="nt"&gt;--port&lt;/span&gt; 8000 &lt;span class="nt"&gt;--reload&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Open &lt;a href="http://localhost:8000" rel="noopener noreferrer"&gt;http://localhost:8000&lt;/a&gt; in your browser.&lt;/li&gt;
&lt;li&gt;Walkthrough video: &lt;code&gt;demo/demo-video.mov&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repo:&lt;/strong&gt; &lt;a href="https://github.com/dkb73/plantTheplanet" rel="noopener noreferrer"&gt;github.com/dkb73/plantTheplanet&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;The recommendation engine does not simply "ask a model what to plant." The language model only engages after the empirical numbers are already computed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Site Reading:&lt;/strong&gt; For a given latitude and longitude, SoilGrids ($0–5\text{ cm}$: pH, clay, sand, silt, organic carbon, nitrogen, CEC, coarse fragments) and NASA POWER (temperature, rainfall, cloud cover) are fetched in parallel. Open-Meteo adds a $16$-day forecast, solar radiation, and elevation. These records consolidate into a single list of property rows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-Source Classification:&lt;/strong&gt; Laya, a local semantic router running on CPU, translates these numbers into the categories utilized by EcoCrop: texture (heavy / medium / light), fertility, drainage, and light (clear skies through heavy shade) without requiring a GPU or closed classifier API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Matching:&lt;/strong&gt; PostgreSQL stores the EcoCrop dataset. A crop is retained only if it satisfies hard bounds for latitude, elevation, temperature, rainfall, and pH. Survivors receive a $0-100$ suitability score derived from optimal growth ranges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-Weight Advice:&lt;/strong&gt; Plans and chat interactions route through OpenRouter, utilizing free open-weight models in fallback order:

&lt;ul&gt;
&lt;li&gt;NVIDIA Nemotron $3.5$ Lightning&lt;/li&gt;
&lt;li&gt;Liquid LFM $2.5$ $1.2\text{B}$&lt;/li&gt;
&lt;li&gt;Google Gemma (&lt;code&gt;google/gemma-4-31b-it:free&lt;/code&gt;, &lt;code&gt;google/gemma-4-26b-a4b-it:free&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt Structure:&lt;/strong&gt; The prompt is anchored in the planting context: crop type, days since planting, current stage, unfinished tasks, and recent field notes. If an API key is missing, plan generation falls back to a deterministic agronomic timeline instead of failing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tech Stack:&lt;/strong&gt; Python, FastAPI, PostgreSQL $16$, lightweight HTML/JS frontend.&lt;/p&gt;




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

&lt;p&gt;A closed "what should I plant?" API obscures its reasoning, locking answers to the model owner. Here, the core logic is public and verifiable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open Datasets:&lt;/strong&gt; SoilGrids, NASA POWER, Open-Meteo, and FAO EcoCrop are fully open. Users can inspect the pH, rainfall window, and crop limits to see why a plant was included or excluded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Routing:&lt;/strong&gt; Laya runs locally, meaning texture and drainage classifications do not depend on external vendor endpoints or GPU accounts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swappable Open Weights:&lt;/strong&gt; Gemma and other free open-weight models serve as an intelligent voice on top of objective records, rather than acting as the source of the soil test itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resilience:&lt;/strong&gt; Removing API keys still leaves the deterministic matcher and fallback plans fully operational to guide what goes into the ground.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;Best Use of Gemma&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Hacktoberfest #OpenSource #TouchGrass #PlantMyPlanet #Gemma #OpenWeightAI
&lt;/h1&gt;

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