<?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: LOKESH BETHALA</title>
    <description>The latest articles on DEV Community by LOKESH BETHALA (@lokesh11868).</description>
    <link>https://dev.to/lokesh11868</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%2F4157968%2F79066ebb-57a9-4a9c-966f-5ed38bd21d71.png</url>
      <title>DEV Community: LOKESH BETHALA</title>
      <link>https://dev.to/lokesh11868</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lokesh11868"/>
    <language>en</language>
    <item>
      <title>ExpiryGuard — From "I'll Remember" to "Already Handled".</title>
      <dc:creator>LOKESH BETHALA</dc:creator>
      <pubDate>Sun, 04 Oct 2026 15:16:35 +0000</pubDate>
      <link>https://dev.to/lokesh11868/expiryguard-from-ill-remember-to-already-handled-2pgo</link>
      <guid>https://dev.to/lokesh11868/expiryguard-from-ill-remember-to-already-handled-2pgo</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;I built &lt;strong&gt;ExpiryGuard&lt;/strong&gt; for my friend, who regularly has to keep track of warranties, subscriptions, important documents, product expiry dates, and renewal deadlines.&lt;/p&gt;

&lt;p&gt;The problem isn't simply remembering dates. These dates are often buried inside &lt;strong&gt;receipts, warranty certificates, documents, product labels&lt;/strong&gt;. By the time someone notices the deadline, it may already be too late.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ExpiryGuard turns scattered expiry information into prioritized actions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A user can upload a document or image, speak naturally, scan a barcode of any product, or enter information manually. &lt;strong&gt;Google Gemma&lt;/strong&gt; understands the unstructured information and converts it into structured expiry data. The application then validates the result, evaluates the urgency, prioritizes what needs attention, and stores it in &lt;strong&gt;MongoDB Atlas&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The core workflow is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Capture → Understand → Validate → Prioritize → Act → Remember&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For example, a user can upload a warranty certificate containing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Dell Inspiron 15. Purchased on 12 April 2025. Warranty valid until 12 April 2027."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ExpiryGuard extracts the relevant information, validates the dates, calculates the risk, and determines what action is required.&lt;/p&gt;

&lt;p&gt;Instead of simply saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"This expires in 20 days."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ExpiryGuard answers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"This needs your attention next — and here's why...."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Key Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma-powered Document Intelligence&lt;/strong&gt; — Extract expiry information from warranties, certificates, receipts, invoices, and other documents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OCR + AI Pipeline&lt;/strong&gt; — Upload an image instead of manually entering every field.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice Input&lt;/strong&gt; — Describe an item naturally and convert it into structured information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Barcode Scanning&lt;/strong&gt; — Quickly identify supported products.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Priority Queue&lt;/strong&gt; — Classify items as Critical, High, Medium, or Low priority.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Expiry Briefing&lt;/strong&gt; — Summarize what needs attention today.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Renewal &amp;amp; Action Workflow&lt;/strong&gt; — Move from simply tracking an expiry to actually handling it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expiry Verification &amp;amp; Conflict Detection&lt;/strong&gt; — Detect suspicious dates, conflicting dates, and other inconsistencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Duplicate Detection&lt;/strong&gt; — Help prevent the same item from being tracked multiple times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Natural-Language Smart Search&lt;/strong&gt; — Ask questions such as &lt;em&gt;"Which warranties expire in the next 60 days?"&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explainable Risk&lt;/strong&gt; — Show users why an item received its priority.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expiry Health Score&lt;/strong&gt; — Provide a quick overview of how well important items are being managed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confidence-Based Confirmation&lt;/strong&gt; — Uncertain AI extraction is shown to the user for confirmation instead of being blindly saved.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Notifications&lt;/strong&gt; — Remind users before important deadlines arrive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The philosophy behind the project is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Gemma understands. The backend validates. The risk engine prioritizes. MongoDB Atlas remembers. The user decides.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://expiry-guard-frontend.onrender.com" rel="noopener noreferrer"&gt;https://expiry-guard-frontend.onrender.com&lt;/a&gt;&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/Lokesh11868" rel="noopener noreferrer"&gt;
        Lokesh11868
      &lt;/a&gt; / &lt;a href="https://github.com/Lokesh11868/Expiry_Guard" rel="noopener noreferrer"&gt;
        Expiry_Guard
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI-powered expiry intelligence built for a friend, powered by Gemma, MongoDB Atlas, turning documents into smart reminders, risk insights, and renewal actions.
    &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;ExpiryGuard&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;An open-source AI-powered expiry intelligence system that turns everyday documents, products, warranties, subscriptions and certificates into actionable reminders before they become problems.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Problem&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Important items expire silently. From warranties and passports to subscriptions and medicines, keeping track of expiration dates is a tedious manual task. When these dates are missed, it results in financial loss, wasted products, or significant bureaucratic headaches.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Solution&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;ExpiryGuard intelligently discovers, understands, tracks, and prioritizes expiration-related information hidden inside everyday items. It automatically determines the risk of expiration and suggests recommended actions, saving users time and preventing loss.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Key Features&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Expiry Intelligence&lt;/strong&gt;: Determines risk score and urgency based on item type and time remaining.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Action Recommendations &amp;amp; Renewals&lt;/strong&gt;: Dedicated tracking for active workflows, renewals, and overdue tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Add Hub&lt;/strong&gt;: Unified upload process through OCR, Voice, Barcode, or manual entry.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Natural-Language Smart Search&lt;/strong&gt;: Instantly query and filter inventory using natural language…&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/Lokesh11868/Expiry_Guard" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The repository contains the complete frontend, backend, AI integration, database integration, and supporting services.&lt;/p&gt;




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

&lt;p&gt;I built ExpiryGuard around &lt;strong&gt;Google Gemma&lt;/strong&gt;, an open-weight AI model, as the core intelligence layer of the application. Instead of using AI as a separate chatbot feature, Gemma is integrated directly into the application's data and decision workflow.&lt;/p&gt;

&lt;p&gt;The architecture follows:&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%2Fx5xss6yff6s9sy1hfuta.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%2Fx5xss6yff6s9sy1hfuta.png" alt="ExpiryGuard architecture showing user inputs flowing through OCR and Google Gemma for structured expiry extraction, validation, risk analysis, MongoDB Atlas storage, and dashboard features." width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemma as the Intelligence Layer
&lt;/h3&gt;

&lt;p&gt;Gemma processes unstructured information and extracts useful fields such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Item name&lt;/li&gt;
&lt;li&gt;Category&lt;/li&gt;
&lt;li&gt;Purchase date&lt;/li&gt;
&lt;li&gt;Expiry date&lt;/li&gt;
&lt;li&gt;Expiry type&lt;/li&gt;
&lt;li&gt;Confidence score&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, a user can provide:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Dell Inspiron 15. Purchased on 12 April 2025. Warranty valid until 12 April 2027."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Gemma converts this into structured information that the application can validate and store.&lt;/p&gt;

&lt;p&gt;Gemma is also used for document understanding, natural-language search, and generating concise expiry briefings.&lt;/p&gt;

&lt;h3&gt;
  
  
  MongoDB Atlas as the Memory Layer
&lt;/h3&gt;

&lt;p&gt;The validated information is stored in &lt;strong&gt;MongoDB Atlas&lt;/strong&gt;, including expiry dates, categories, risk levels, confidence scores, action status, and other metadata.&lt;/p&gt;

&lt;p&gt;This means the AI doesn't just answer once and forget. The extracted knowledge becomes persistent application data that can be searched, prioritized, monitored, and acted upon later.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI + Deterministic Logic
&lt;/h3&gt;

&lt;p&gt;I deliberately kept the final risk calculation outside the LLM.&lt;/p&gt;

&lt;p&gt;Gemma &lt;strong&gt;understands&lt;/strong&gt; the input, while the backend &lt;strong&gt;validates&lt;/strong&gt; it and a deterministic risk engine calculates the final priority based on factors such as time remaining, expiry type, urgency, and action status.&lt;/p&gt;

&lt;p&gt;This gives the system a safer and more explainable workflow:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI proposes → Application validates → Risk engine decides → User confirms&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The frontend is built with &lt;strong&gt;React, Vite, Tailwind CSS, and Chart.js&lt;/strong&gt;, while the backend uses &lt;strong&gt;FastAPI&lt;/strong&gt; and Python. OCR, barcode scanning, notifications, and observability are integrated around the core AI workflow.&lt;/p&gt;

&lt;p&gt;The result is an AI-powered expiry management system where &lt;strong&gt;Gemma provides the intelligence, MongoDB Atlas provides the memory, and the application turns both into actionable decisions.&lt;/strong&gt;&lt;/p&gt;




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

&lt;p&gt;Open innovation made it possible for me to build ExpiryGuard around a real problem without treating AI as a closed black box.&lt;/p&gt;

&lt;p&gt;At the core of the application, &lt;strong&gt;Google Gemma&lt;/strong&gt; transforms messy, real-world information from documents, voice input, and other sources into structured expiry data. Because the AI is integrated into my own application workflow, I can decide how its output is validated, stored, prioritized, and presented to the user.&lt;/p&gt;

&lt;p&gt;This is especially important for ExpiryGuard because &lt;strong&gt;AI should understand the information, but it should not have complete control over the final decision&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The workflow:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Gemma understands → Backend validates → Risk engine decides → MongoDB Atlas remembers → User confirms&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Open innovation also made it possible to combine different technologies around the same problem. &lt;strong&gt;Gemma&lt;/strong&gt; provides the intelligence layer, while &lt;strong&gt;MongoDB Atlas&lt;/strong&gt; provides the persistent memory layer that allows extracted information to become useful over time.&lt;/p&gt;

&lt;p&gt;A closed AI API could provide an answer, but ExpiryGuard goes further by turning that answer into &lt;strong&gt;structured, persistent, searchable, prioritized, and actionable information&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Most importantly, open innovation lowers the barrier for developers to experiment, build, and create solutions for problems that may be too specific for existing products.&lt;/p&gt;

&lt;p&gt;For me, that's the real value:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The model doesn't have to be the product. It can be the intelligence inside a product built for a real person.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;h3&gt;
  
  
  &lt;strong&gt;Best Use of Gemma&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemma&lt;/strong&gt; powers the core AI intelligence layer.&lt;/li&gt;
&lt;li&gt;Converts unstructured documents, voice input, and user descriptions into structured expiry data.&lt;/li&gt;
&lt;li&gt;Integrated directly into the workflow:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Unstructured Input → Gemma → Structured Data → Validation → Risk Analysis → Action&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gemma is an essential part of the product, not an add-on chatbot.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Best Use of MongoDB Atlas&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Atlas&lt;/strong&gt; serves as ExpiryGuard's persistent memory layer.&lt;/li&gt;
&lt;li&gt;Stores expiry dates, categories, AI confidence, risk levels, action status, and supporting metadata.&lt;/li&gt;
&lt;li&gt;Makes AI-generated information &lt;strong&gt;persistent, searchable, prioritized, and actionable&lt;/strong&gt; over time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Best Use of Render&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Render&lt;/strong&gt; hosts the React frontend and FastAPI backend as separate services.&lt;/li&gt;
&lt;li&gt;Provides the production environment for accessing the AI-powered expiry workflow remotely.&lt;/li&gt;
&lt;li&gt;Deployment architecture:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;React Frontend → FastAPI Backend → Gemma AI → MongoDB Atlas&lt;/strong&gt;&lt;/p&gt;

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