<?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: Varun Raj</title>
    <description>The latest articles on DEV Community by Varun Raj (@varun_raj_).</description>
    <link>https://dev.to/varun_raj_</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3899829%2F89d0fe3b-72fa-43ae-a867-f921ab4f6a77.jpg</url>
      <title>DEV Community: Varun Raj</title>
      <link>https://dev.to/varun_raj_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/varun_raj_"/>
    <language>en</language>
    <item>
      <title>GeoSmart: Citizen-Driven Waste Issue Reporting Using Visual and Location Intelligence with a Route Optimization</title>
      <dc:creator>Varun Raj</dc:creator>
      <pubDate>Mon, 27 Apr 2026 10:04:29 +0000</pubDate>
      <link>https://dev.to/varun_raj_/geosmart-citizen-driven-waste-issue-reporting-using-visual-and-location-intelligence-with-a-route-4mac</link>
      <guid>https://dev.to/varun_raj_/geosmart-citizen-driven-waste-issue-reporting-using-visual-and-location-intelligence-with-a-route-4mac</guid>
      <description>&lt;p&gt;&lt;strong&gt;Team Members&lt;/strong&gt;&lt;br&gt;
This project was developed by:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a class="mentioned-user" href="https://dev.to/varun_raj_"&gt;@varun_raj_&lt;/a&gt; -BALA SUNDAR VARUN RAJ KALA&lt;/li&gt;
&lt;li&gt;
&lt;a class="mentioned-user" href="https://dev.to/vitthanala_kalyanvenkat_"&gt;@vitthanala_kalyanvenkat_&lt;/a&gt; -KALYAN VENKAT&lt;/li&gt;
&lt;li&gt;
&lt;a class="mentioned-user" href="https://dev.to/varshith_uppalapati"&gt;@varshith_uppalapati&lt;/a&gt; - VARSHITH &lt;/li&gt;
&lt;li&gt;
&lt;a class="mentioned-user" href="https://dev.to/nikhil_gajula"&gt;@nikhil_gajula&lt;/a&gt; - NIKHIL&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We would like to express our sincere gratitude to &lt;a class="mentioned-user" href="https://dev.to/chanda_rajkumar"&gt;@chanda_rajkumar&lt;/a&gt; for their valuable guidance and support throughout this project.&lt;/p&gt;

&lt;p&gt;Their insights into system design, architecture, and development played a key role in shaping GEOSMART.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GEOSMART — Smart Waste Management System using Python Full Stack, MongoDB, GIS and AI&lt;/strong&gt;&lt;br&gt;
GEOSMART is a Python Full Stack Smart Waste Management Platform that transforms traditional municipal complaint systems into an AI-powered intelligent waste command centre. It combines citizen complaint registration, image-based AI verification, geographic hotspot detection, severity scoring, A* route optimization, and a real-time analytics dashboard — all in one unified runtime backed by MongoDB for application persistence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why GEOSMART — the civic problem it solves&lt;/strong&gt;****&lt;br&gt;
Urban waste management remains one of the most critical challenges for modern cities. Overflowing garbage bins, illegal dumping, delayed municipal response, and lack of complaint transparency create serious public health concerns and environmental damage. Most complaint systems today are reactive — citizens raise complaints manually, authorities verify them physically, and response often comes late because there is no intelligent prioritization mechanism.&lt;/p&gt;

&lt;p&gt;To solve this real-world civic challenge, we built GEOSMART. The platform is designed to make the entire complaint-to-resolution lifecycle intelligent, transparent, and geographically aware. Instead of a passive ticketing portal, GEOSMART becomes an active waste intelligence layer sitting between citizens and municipal operations.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;GEOSMART combines Complaint Intelligence + Artificial Intelligence + Geographic Intelligence + Operational Optimization into a single Python Full Stack platform. Flask is the runtime contract, and MongoDB is the application persistence layer for all complaints, hotspots, user records, and analytics data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This matters because the scale and complexity of urban waste complaints cannot be managed through spreadsheets or manual ticketing. By unifying AI inference, GIS mapping, severity scoring, and route planning inside one application, GEOSMART gives municipal teams the situational awareness they need to act faster and with much higher confidence about where to deploy resources first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;System architecture&lt;/strong&gt;&lt;br&gt;
GEOSMART was designed as a complete Python Full Stack application so that all core services — APIs, AI inference, complaint management, routing, analytics, and administration — run inside one unified runtime. The frontend provides a responsive municipal portal built with HTML, TailwindCSS, and JavaScript. Flask acts as the application runtime, and MongoDB serves as the central storage backbone for all dynamic records including complaints, hotspots, user profiles, and AI verification results.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"frontend"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"HTML + TailwindCSS + JavaScript"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"backend"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Flask (Python)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"database"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"MongoDB"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"machine_learning"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"YOLO"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CNN"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mapping"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"GIS + Leaflet Maps"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"routing"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"A* Pathfinding"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"analytics"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Chart.js"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flask was chosen because it integrates easily with Python ML libraries like TensorFlow, OpenCV, and Ultralytics YOLO. It handles authentication, complaint APIs, AI model inference, hotspot generation, route planning, admin dataset validation, model training pipeline, and dashboard analytics — all within the same Python process. That single-runtime design removes the deployment complexity that comes from splitting web serving and ML inference across separate services.&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.amazonaws.com%2Fuploads%2Farticles%2Fpy0gvhmig724w8djonbr.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.amazonaws.com%2Fuploads%2Farticles%2Fpy0gvhmig724w8djonbr.png" alt=" " width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MongoDB as the application persistence layer&lt;/strong&gt;&lt;br&gt;
MongoDB acts as the central storage backbone of GEOSMART. Complaint records are dynamic documents containing user information, uploaded evidence, GPS coordinates, AI prediction results, verification flags, severity scores, hotspot linkages, status updates, and timestamps. Instead of rigid SQL tables, MongoDB allows flexible document storage that grows naturally as complaint metadata becomes richer over time.&lt;/p&gt;

&lt;p&gt;This document-oriented design fits GEOSMART well because no two complaint records look exactly the same. A litter complaint may carry different verification metadata than an overflow complaint. A hotspot document aggregates multiple complaint references and carries its own severity calculation. MongoDB handles that variation cleanly without forcing the project into rigid table design for every evolving civic data type.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"complaint_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CMP-001"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"issue_type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"overflow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"priority"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"high"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ward 11"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"latitude"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;12.9349&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"longitude"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;77.6107&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Pending"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"severity_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;72&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"verification"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"YOLO"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"predicted_class"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"organic waste"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.89&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"verified"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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.amazonaws.com%2Fuploads%2Farticles%2Fwv4fltc50i436xuyfpot.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.amazonaws.com%2Fuploads%2Farticles%2Fwv4fltc50i436xuyfpot.png" alt=" " width="800" height="233"&gt;&lt;/a&gt;&lt;br&gt;
Because these collections are separated by responsibility, the system can query them efficiently for different tasks. Flask can retrieve active complaints in a ward, detect hotspot clusters, fetch user complaint history, and power the analytics dashboard — all through the same MongoDB connection. This makes the database useful not only as a storage engine but also as an operational intelligence layer for municipal teams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Complaint flow — from citizen to resolution&lt;/strong&gt;&lt;br&gt;
The GEOSMART pipeline begins when a citizen submits a complaint. Each submission carries a waste issue type, location description, GPS coordinates, an uploaded image, a description, and a priority estimate. Flask receives the complaint, stores the raw record in MongoDB, then immediately passes the uploaded image through the AI verification pipeline before updating the complaint document with model results and a computed severity score.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Complaint&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;document&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;stored&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;MongoDB&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"complaint_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CMP-001"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"issue_type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"overflow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ward 11"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"latitude"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;12.9349&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"longitude"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;77.6107&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Pending"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"severity_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;72&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"verification"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"YOLO"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"predicted_class"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"organic waste"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.89&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"verified"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Hotspot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;document&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;stored&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;MongoDB&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hotspot_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"HS-11"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"zone"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ward 11"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"complaints"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"severity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Critical"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"center_lat"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;12.932&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"center_lon"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;77.612&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This automated verification step is what makes GEOSMART different from a plain complaint portal. Instead of routing every complaint to a human reviewer first, the system uses YOLO and CNN models to confirm whether the uploaded image actually contains waste and what category of waste it represents. That confidence score feeds directly into the severity calculation, which then determines complaint priority in the municipal queue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image-based AI verification using YOLO and CNN&lt;/strong&gt;&lt;br&gt;
GEOSMART uses two AI models for waste image verification. YOLO handles real-time object detection within the complaint image, identifying whether waste objects are present and localizing them. CNN handles waste classification, assigning the detected waste to a category such as organic, recyclable, or hazardous. Both models run inside Flask using the Ultralytics YOLO library and TensorFlow, which means inference happens in the same Python process that handles complaint storage and routing — no external model server required.&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.amazonaws.com%2Fuploads%2Farticles%2F5ydz41gr9vygkftaryxk.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.amazonaws.com%2Fuploads%2Farticles%2F5ydz41gr9vygkftaryxk.png" alt=" " width="800" height="426"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;CNN analysis in action — plastic bottle detected, classified as useful for recycling with disposal guidance&lt;/em&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.amazonaws.com%2Fuploads%2Farticles%2Fucr7nzco1kwy10rkjrhd.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.amazonaws.com%2Fuploads%2Farticles%2Fucr7nzco1kwy10rkjrhd.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;High-confidence paper classification at 84% — model correctly guides dry paper to recyclable stream&lt;/em&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.amazonaws.com%2Fuploads%2Farticles%2Fylvmsefugq15vk43ezvh.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.amazonaws.com%2Fuploads%2Farticles%2Fylvmsefugq15vk43ezvh.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Metal can classified at 87% confidence — sent to dry-waste or scrap stream after food residue removal&lt;/em&gt;&lt;br&gt;
The admin panel exposes a model training interface so that municipal teams can upload new labeled datasets and trigger retraining runs directly from the platform. This means GEOSMART improves over time as more verified complaint images accumulate in the system. The training pipeline and the inference pipeline share the same Flask runtime, which makes model versioning and deployment straightforward compared to a system where training and serving are split across different infrastructure.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;YOLO detects waste objects in uploaded complaint images. CNN classifies the detected waste into categories. Both models run inside the Flask runtime using Python ML libraries, and admins can trigger retraining directly from the GEOSMART admin panel using accumulated MongoDB complaint data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Geographic hotspot detection using GIS&lt;/strong&gt;&lt;br&gt;
Once complaints are verified and stored in MongoDB, GEOSMART runs a geographic clustering layer that groups nearby complaints into hotspots. Each hotspot captures a zone identifier, the number of contributing complaints, an aggregated severity rating, and a center coordinate. The platform renders these hotspots on an interactive Leaflet map so that municipal teams can see at a glance which wards are experiencing the heaviest waste pressure.&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.amazonaws.com%2Fuploads%2Farticles%2Fb4lxo03rvyk5n6wpul3g.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.amazonaws.com%2Fuploads%2Farticles%2Fb4lxo03rvyk5n6wpul3g.png" alt=" " width="800" height="298"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Community hotspot snapshot showing Ward 11 cluster with dispatch recommendation, ETA, and full hotspot queue ranked by severity&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The hotspot layer updates dynamically as new complaints come in. A ward that receives several high-severity complaints within a short window will have its hotspot severity escalated automatically, which surfaces it higher in the municipal priority queue. This geographic intelligence layer is what transforms GEOSMART from a complaint list into a situational awareness tool.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"runtime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Flask-served Python web app"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"complaint_api"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/api/complaints"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ai_inference"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/api/verify"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hotspot_engine"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/api/hotspots"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"route_planner"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/api/route"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"analytics_dashboard"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/api/analytics"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"admin_training"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/api/admin/train"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mongodb_collections"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"complaints"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"hotspots"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"users"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"map_layer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Leaflet.js + GIS coordinates from MongoDB"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"deployment"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Flask run / Gunicorn"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;A* route optimization for municipal teams&lt;/strong&gt;&lt;br&gt;
Knowing which areas have the most severe waste complaints is only part of the operational problem. Municipal teams also need to know the most efficient order in which to visit those sites. GEOSMART includes an A* pathfinding layer that takes the active hotspot map and produces an optimized collection route for field teams.&lt;/p&gt;

&lt;p&gt;The route planner reads hotspot center coordinates from MongoDB, ranks them by severity, and then applies A* search to compute a route that minimizes total travel distance while prioritizing critical zones. The resulting route is displayed on the Leaflet map alongside the hotspot layer, giving field teams a complete operational picture in a single view. This optimization step is one of the most practically valuable features in GEOSMART because it directly reduces vehicle time and fuel cost for municipal operations.&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.amazonaws.com%2Fuploads%2Farticles%2F5wn2owidgn8bzsrx3big.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.amazonaws.com%2Fuploads%2Farticles%2F5wn2owidgn8bzsrx3big.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Severity scoring and complaint prioritization&lt;/strong&gt;&lt;br&gt;
GEOSMART does not treat all complaints equally. Each verified complaint receives a severity score computed from the AI model confidence, the type of waste detected, the number of existing complaints in the same geographic zone, and any escalation flags raised by previous unresolved complaints in that ward. This score determines the complaint's position in the municipal queue and feeds into the hotspot severity calculation.&lt;/p&gt;

&lt;p&gt;This prioritization layer is the operational intelligence at the heart of GEOSMART. Without it, municipal teams would work through complaints in arrival order regardless of actual impact. With it, critical overflow situations in high-density wards automatically surface above routine litter reports, and the system never lets a high-severity complaint sit unacknowledged because of queue depth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-time analytics dashboard&lt;/strong&gt;&lt;br&gt;
The GEOSMART analytics dashboard gives administrators a live view of complaint volume, resolution rates, hotspot distribution, AI verification accuracy, and field team activity. Chart.js renders the visualization layer, pulling aggregated data from MongoDB through Flask API endpoints. The dashboard updates as complaints are submitted and resolved, which means administrators always have an accurate operational picture without needing to run manual reports.&lt;/p&gt;

&lt;p&gt;Because all complaint, hotspot, and resolution data is stored as structured documents in MongoDB, the analytics layer can aggregate across any dimension — by ward, by waste type, by time window, or by resolution speed. This makes GEOSMART useful not only for day-to-day operations but also for longer-term planning decisions about where to increase bin capacity, improve collection frequency, or target public awareness campaigns.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The analytics dashboard reads complaint and hotspot data from MongoDB through Flask APIs and renders real-time charts with Chart.js. Because all operational records share the same MongoDB persistence layer, administrators can drill into any ward, waste category, or time window without needing separate reporting infrastructure.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Frontend portal and admin panel&lt;/strong&gt;&lt;br&gt;
The frontend provides a responsive municipal portal built with HTML, TailwindCSS, and JavaScript. Citizens access the complaint registration page, live complaint tracking dashboard, and hotspot visualization map. Municipal administrators access the route planner view, waste analysis page, admin model training panel, and user profile management area. TailwindCSS handled mobile-friendly UI construction, while JavaScript managed client-side interactivity, Leaflet map rendering, and real-time API communication with Flask.&lt;/p&gt;

&lt;p&gt;The admin model training panel deserves special mention. It exposes the AI training pipeline directly in the browser so that non-developer administrators can upload labeled waste image datasets, trigger training runs, and review model accuracy metrics without writing code. This design decision means that GEOSMART improves its AI accuracy over time through normal administrative workflows rather than requiring a separate ML operations team.&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.amazonaws.com%2Fuploads%2Farticles%2F0n1elmot71c0ygvxxbh9.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.amazonaws.com%2Fuploads%2Farticles%2F0n1elmot71c0ygvxxbh9.png" alt=" " width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;br&gt;
Flask, MongoDB, GIS, and AI became the right combination for GEOSMART for four reasons. First, Flask gave the project a single Python runtime for UI delivery, complaint APIs, AI inference, hotspot generation, route planning, and analytics. Second, MongoDB provided a flexible persistence model for complaint documents, hotspot records, and user data whose structures naturally vary and evolve as the platform adds new intelligence features. Third, the GIS and Leaflet layer transformed raw complaint coordinates into actionable geographic intelligence that field teams can act on immediately. Fourth, A* route optimization converted that geographic intelligence into concrete operational guidance, reducing the human overhead of deciding where to go next.&lt;/p&gt;

&lt;p&gt;For a civic AI application, this kind of unification is not just a deployment convenience. It improves reliability and impact. A smart waste management system becomes much more effective when its complaint intake, AI verification, geographic analysis, and routing optimization share one execution environment, and when its persistence layer is designed for evolving document-shaped civic data. That is the real architectural win of the GEOSMART Python Full Stack platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Execution&lt;/strong&gt;&lt;br&gt;
The final deployed version of GEOSMART is available through the hosted application, the project repository, and the embedded demo recording below. This makes the implementation easy to inspect both as source code and as a running system.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;GitHub Repository&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/kalyan4518/GEOSMART" rel="noopener noreferrer"&gt;https://github.com/kalyan4518/GEOSMART&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Video Demonstration&lt;br&gt;
The project walkthrough is embedded below and can be played directly inside this file.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/S4aL_IdGCYc"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/S4aL_IdGCYc" rel="noopener noreferrer"&gt;Watch GEOSMART Demo on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;GEOSMART is a Flask-based Python Full Stack project that uses MongoDB for application persistence, including complaint records, hotspot data, user profiles, and AI verification results. GIS and A* route optimization are integrated to deliver geographic and operational intelligence for municipal waste management teams.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mongodb</category>
      <category>python</category>
      <category>flask</category>
    </item>
  </channel>
</rss>
