<?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: Ansh Meshram</title>
    <description>The latest articles on DEV Community by Ansh Meshram (@anshmeshram).</description>
    <link>https://dev.to/anshmeshram</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%2F3741830%2F1fb7f898-715d-4931-811f-e5d74e56f69a.jpeg</url>
      <title>DEV Community: Ansh Meshram</title>
      <link>https://dev.to/anshmeshram</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anshmeshram"/>
    <language>en</language>
    <item>
      <title>Long Notice? Take It Slow. 🦥 Building NoticeNap with Open-Weight AI</title>
      <dc:creator>Ansh Meshram</dc:creator>
      <pubDate>Thu, 22 Oct 2026 09:21:55 +0000</pubDate>
      <link>https://dev.to/anshmeshram/long-notice-take-it-slow-building-noticenap-with-open-weight-ai-2d5j</link>
      <guid>https://dev.to/anshmeshram/long-notice-take-it-slow-building-noticenap-with-open-weight-ai-2d5j</guid>
      <description>&lt;p&gt;&lt;em&gt;Built for Hacktoberfest 2026 — Week 3: Slow and Steady&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Have you ever opened a recruitment notification, scholarship announcement, internship circular, or examination notice and discovered that the information you need is scattered across dozens of pages?&lt;/p&gt;

&lt;p&gt;The deadline is somewhere in the middle. Eligibility criteria are buried in another section. Required documents, application fees, exceptions, and instructions are spread throughout the PDF.&lt;/p&gt;

&lt;p&gt;You end up spending more time searching through paperwork than preparing for the opportunity itself.&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%2Fimages.unsplash.com%2Fphoto-1644334599979-6c7b4d55920e%3Fauto%3Dformat%26fit%3Dcrop%26fm%3Djpg%26ixid%3DNHwxMjA3fDA%253D%26ixlib%3Drb-4.1.0%26q%3D60%26w%3D1600" 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%2Fimages.unsplash.com%2Fphoto-1644334599979-6c7b4d55920e%3Fauto%3Dformat%26fit%3Dcrop%26fm%3Djpg%26ixid%3DNHwxMjA3fDA%253D%26ixlib%3Drb-4.1.0%26q%3D60%26w%3D1600" alt="A sloth hanging from a branch in a lush jungle canopy" width="1600" height="2400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/photos/a-sloth-hanging-from-a-tree-branch-in-the-jungle-tNulHhPcsSk" rel="noopener noreferrer"&gt;Christian Holzinger on Unsplash&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if one PDF upload could turn that overwhelming notice into a clear summary, a list of important dates, and an actionable checklist?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the idea behind &lt;strong&gt;NoticeNap&lt;/strong&gt; — a local-first AI assistant designed to make reading long, information-heavy PDF notices less tedious.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Live frontend:&lt;/strong&gt; &lt;a href="https://noticenap.vercel.app" rel="noopener noreferrer"&gt;https://noticenap.vercel.app&lt;/a&gt;&lt;br&gt;&lt;br&gt;
💻 &lt;strong&gt;Source code:&lt;/strong&gt; &lt;a href="https://github.com/AnshMeshram/NoticeNap" rel="noopener noreferrer"&gt;https://github.com/AnshMeshram/NoticeNap&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built NoticeNap around the spirit of this week's Hacktoberfest theme: &lt;strong&gt;Slow and Steady — build open-source AI that rewards laziness.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not laziness as an excuse to ignore important details, but as a reason to automate repetitive work and spend our energy where it actually matters.&lt;/p&gt;
&lt;h2&gt;
  
  
  🦥 The idea: One upload, a calmer plan
&lt;/h2&gt;

&lt;p&gt;Official notices often contain everything an applicant needs to know, but finding those details manually can be frustrating.&lt;/p&gt;

&lt;p&gt;NoticeNap is designed to turn a PDF notice into structured information that is easier to understand and act on.&lt;/p&gt;

&lt;p&gt;Here is what the workflow aims to provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Quick summary:&lt;/strong&gt; Understand the purpose of a notice without manually reading every page first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Important dates:&lt;/strong&gt; Identify application deadlines, examination dates, and other time-sensitive information when stated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eligibility criteria:&lt;/strong&gt; Review qualifications, age limits, thresholds, and other requirements mentioned in the document.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fees and required documents:&lt;/strong&gt; Find application fees, exemptions, certificates, and supporting documents where specified.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Application steps:&lt;/strong&gt; Turn instructions into a practical sequence of tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source references:&lt;/strong&gt; Trace important findings back to their original PDF pages and supporting text when available.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Action checklist:&lt;/strong&gt; Organize the next steps and track progress.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Export options:&lt;/strong&gt; Save checklist items as Markdown and export valid dates to iCalendar where supported.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document library:&lt;/strong&gt; Revisit previously processed notices and find relevant documents where the corresponding functionality is available.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is simple: instead of repeatedly asking, &lt;em&gt;"Where was that deadline mentioned?"&lt;/em&gt;, you can review the important information in one place and return to the original page whenever you need to verify something.&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%2Fimages.unsplash.com%2Fphoto-1766487373699-8984226fe9f6%3Fauto%3Dformat%26fit%3Dcrop%26fm%3Djpg%26ixid%3DM3wxMjA3fDB8MHx1c2VyLXJlbGF0ZWR8MTV8fHx8ZW58MHx8fHx8%26ixlib%3Drb-4.1.0%26q%3D60%26w%3D1600" 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%2Fimages.unsplash.com%2Fphoto-1766487373699-8984226fe9f6%3Fauto%3Dformat%26fit%3Dcrop%26fm%3Djpg%26ixid%3DM3wxMjA3fDB8MHx1c2VyLXJlbGF0ZWR8MTV8fHx8ZW58MHx8fHx8%26ixlib%3Drb-4.1.0%26q%3D60%26w%3D1600" alt="A relaxed sloth resting high in a tree, an apt mascot for slower paperwork" width="1600" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/photos/a-sloth-sleeps-clinging-to-a-tree-branch-M5SH2SgW7aw" rel="noopener noreferrer"&gt;Sloth photo on Unsplash&lt;/a&gt;. Unsplash images are free to use under the &lt;a href="https://unsplash.com/license" rel="noopener noreferrer"&gt;Unsplash License&lt;/a&gt;; credit is appreciated.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;NoticeNap is an aid for understanding and organizing notices. It is not a replacement for the official document.&lt;/p&gt;
&lt;h2&gt;
  
  
  🎯 Why this fits “Slow and Steady”
&lt;/h2&gt;

&lt;p&gt;Consider a student applying for multiple scholarships or a job seeker tracking several recruitment notifications.&lt;/p&gt;

&lt;p&gt;Each notice requires a similar sequence of work:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the PDF and scan its pages.&lt;/li&gt;
&lt;li&gt;Find eligibility conditions and important dates.&lt;/li&gt;
&lt;li&gt;Identify supporting documents and application steps.&lt;/li&gt;
&lt;li&gt;Note the tasks that still need to be completed.&lt;/li&gt;
&lt;li&gt;Return to the PDF whenever something is unclear.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;NoticeNap aims to make that repeated workflow easier by organizing the information into one reviewable workspace.&lt;/p&gt;

&lt;p&gt;The user still makes the important decisions. They decide whether they qualify, confirm the official deadline, and choose what to do next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The AI handles the tedious first pass. The human stays in control of the final decision.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the kind of laziness I wanted to build for: less repetitive searching, less mental clutter, and more time for meaningful work.&lt;/p&gt;
&lt;h2&gt;
  
  
  ⚙️ How NoticeNap works
&lt;/h2&gt;

&lt;p&gt;NoticeNap combines PDF text extraction, a Python backend, and an open-weight language model served locally through Ollama.&lt;/p&gt;

&lt;p&gt;The intended local processing pipeline is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PDF upload → Text extraction → AI analysis → Structured results → Verification → Action checklist&lt;/strong&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  1. Extract the PDF text
&lt;/h3&gt;

&lt;p&gt;The application uses &lt;strong&gt;PyMuPDF (&lt;code&gt;fitz&lt;/code&gt;)&lt;/strong&gt; to extract readable text page by page.&lt;/p&gt;

&lt;p&gt;Preserving page boundaries matters because a summary without a way to find its original source can be difficult to verify.&lt;/p&gt;

&lt;p&gt;The extraction process maintains page references so that users can return to the relevant section of the notice when references are available.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Analyze the extracted content with local AI
&lt;/h3&gt;

&lt;p&gt;NoticeNap uses &lt;strong&gt;Gemma 2 through Ollama&lt;/strong&gt; for local, open-weight inference when the configured model service is available.&lt;/p&gt;

&lt;p&gt;Instead of requiring every document to be sent to a closed, hosted-model inference API, the intended local setup sends extracted text to the configured Ollama service running in the user's environment.&lt;/p&gt;

&lt;p&gt;The model is used to organize the notice into useful categories, including deadlines, eligibility, fees, documents, instructions, exceptions, and missing information.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Validate and organize the results
&lt;/h3&gt;

&lt;p&gt;The backend uses &lt;strong&gt;Pydantic&lt;/strong&gt; to validate structured data returned through the analysis workflow.&lt;/p&gt;

&lt;p&gt;The important design principle is that missing information must not become an invented fact.&lt;/p&gt;

&lt;p&gt;If a deadline, eligibility condition, or fee cannot be established from the available document content, the appropriate result should be marked &lt;strong&gt;“Not found”&lt;/strong&gt; or &lt;strong&gt;“Needs verification”&lt;/strong&gt;, rather than presented as certain.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Turn findings into actions
&lt;/h3&gt;

&lt;p&gt;Finding information is only half the problem. The next step is remembering what to do with it.&lt;/p&gt;

&lt;p&gt;NoticeNap organizes findings into a checklist, supports tracking task progress, and provides Markdown and calendar export functionality where implemented.&lt;/p&gt;

&lt;p&gt;The intention is to connect document understanding with an actual workflow, rather than stop at a chatbot response.&lt;/p&gt;
&lt;h2&gt;
  
  
  🧰 The technology stack
&lt;/h2&gt;

&lt;p&gt;Here is how the main components fit together.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;Next.js, React, TypeScript&lt;/td&gt;
&lt;td&gt;Application interface and interactions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Styling&lt;/td&gt;
&lt;td&gt;Tailwind CSS&lt;/td&gt;
&lt;td&gt;Responsive layouts and visual styling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Python, FastAPI&lt;/td&gt;
&lt;td&gt;Upload handling, APIs, and analysis orchestration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PDF extraction&lt;/td&gt;
&lt;td&gt;PyMuPDF&lt;/td&gt;
&lt;td&gt;Page-by-page text extraction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open-weight AI&lt;/td&gt;
&lt;td&gt;Gemma 2 through Ollama&lt;/td&gt;
&lt;td&gt;Local summarization and structured extraction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data validation&lt;/td&gt;
&lt;td&gt;Pydantic&lt;/td&gt;
&lt;td&gt;Validation of structured backend data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exports&lt;/td&gt;
&lt;td&gt;Markdown and iCalendar&lt;/td&gt;
&lt;td&gt;Carrying action items into other workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Design workflow&lt;/td&gt;
&lt;td&gt;Google Stitch&lt;/td&gt;
&lt;td&gt;Screen design and interface references&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The application is organized around a workspace with document analysis, action-list, and document-library experiences. The design uses a calm, paper-inspired visual style and a sloth mascot to reinforce the idea of making tedious work feel lighter.&lt;/p&gt;


&lt;h2&gt;
  
  
  🔓 Why open innovation matters for NoticeNap
&lt;/h2&gt;

&lt;p&gt;For a project that processes recruitment notices, scholarship applications, university circulars, and similar documents, &lt;strong&gt;where the document is processed matters almost as much as what the model produces&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A notice may contain personal application details or information a user would rather not send to an external inference service.&lt;/p&gt;

&lt;p&gt;With the intended local configuration, NoticeNap can run the document-processing and model-inference path using components installed in the user's own environment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The PDF is processed by the local backend.&lt;/li&gt;
&lt;li&gt;PyMuPDF extracts its readable text.&lt;/li&gt;
&lt;li&gt;The backend sends that text to the configured local Ollama service.&lt;/li&gt;
&lt;li&gt;Gemma 2 generates the analysis.&lt;/li&gt;
&lt;li&gt;The application validates and displays the structured result.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this configuration, the extracted PDF text does not need to be sent to a third-party model inference API.&lt;/p&gt;

&lt;p&gt;Open-weight AI also gives developers more control over model selection and the execution environment. The project can evolve without making a single closed-model API the foundation of its design.&lt;/p&gt;

&lt;p&gt;There are trade-offs, of course. Local inference requires suitable hardware, installation, and configuration. Downloading a model initially requires internet access, and model performance depends on the available resources and the document being processed.&lt;/p&gt;

&lt;p&gt;I do not consider a local model automatically better at every task. The advantage here is control over the processing environment and the freedom to build around an open-weight model.&lt;/p&gt;
&lt;h3&gt;
  
  
  A note about deployment
&lt;/h3&gt;

&lt;p&gt;The public Vercel URL is a &lt;strong&gt;frontend preview&lt;/strong&gt;, not proof that the complete AI workflow is available as a hosted service.&lt;/p&gt;

&lt;p&gt;A browser visiting that frontend cannot automatically connect to Ollama running on the developer's or visitor's computer. End-to-end processing requires the frontend, FastAPI backend, and model runtime to be configured and reachable in the intended environment.&lt;/p&gt;

&lt;p&gt;For the local-first workflow, those components need to be set up together.&lt;/p&gt;

&lt;p&gt;I think this distinction is important: a project should be transparent about what its interface demonstrates and what its underlying infrastructure actually supports.&lt;/p&gt;
&lt;h2&gt;
  
  
  🛡️ Designing for trust, not just convenience
&lt;/h2&gt;

&lt;p&gt;An incorrect deadline or eligibility condition can have real consequences for an applicant.&lt;/p&gt;

&lt;p&gt;That makes reliability an important part of NoticeNap's design.&lt;/p&gt;

&lt;p&gt;The project emphasizes several safeguards:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Traceability:&lt;/strong&gt; Retain source-page references and supporting excerpts when available.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explicit uncertainty:&lt;/strong&gt; Flag information that is missing or needs verification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured output:&lt;/strong&gt; Validate the shape of extracted information before presenting it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human verification:&lt;/strong&gt; Encourage users to check consequential details against the official notice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clear processing status:&lt;/strong&gt; Distinguish model-based analysis from a rule-based fallback when the model service is unavailable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These safeguards do not eliminate mistakes. Language models can misinterpret content, and source references do not guarantee that an interpretation is correct.&lt;/p&gt;

&lt;p&gt;Scanned, image-only PDFs may also require OCR because ordinary text extraction cannot reliably read text that exists only as an image.&lt;/p&gt;

&lt;p&gt;That is why the original PDF remains the authoritative source.&lt;/p&gt;
&lt;h2&gt;
  
  
  🧪 What I am paying attention to during testing
&lt;/h2&gt;

&lt;p&gt;A useful document assistant needs to handle more than the ideal case.&lt;/p&gt;

&lt;p&gt;The project includes a functional test plan covering scenarios such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extracting text from valid, multi-page PDFs while preserving page references.&lt;/li&gt;
&lt;li&gt;Handling notices where dates or eligibility information are absent.&lt;/li&gt;
&lt;li&gt;Providing clear feedback for invalid uploads and scanned documents that need OCR.&lt;/li&gt;
&lt;li&gt;Detecting unavailable Ollama services or missing models.&lt;/li&gt;
&lt;li&gt;Handling malformed model output instead of treating it as a successful analysis.&lt;/li&gt;
&lt;li&gt;Checking that calendar exports contain only validated dates.&lt;/li&gt;
&lt;li&gt;Evaluating whether Hindi and Marathi explanations preserve names, numbers, dates, and exceptions accurately.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are important because a polished summary is not enough if the underlying details cannot be trusted.&lt;/p&gt;

&lt;p&gt;The next improvements I would prioritize are stronger extraction evaluations, better OCR support, more comprehensive multilingual testing, improved evidence traceability, and a securely configured end-to-end deployment.&lt;/p&gt;
&lt;h2&gt;
  
  
  🚀 Run NoticeNap locally
&lt;/h2&gt;

&lt;p&gt;The project setup uses Node.js 20 or newer, Python 3.11 or newer, npm, and Ollama, along with hardware capable of running the selected model.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Clone the repository
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/AnshMeshram/NoticeNap.git
&lt;span class="nb"&gt;cd &lt;/span&gt;NoticeNap
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  2. Install and start Gemma 2 with Ollama
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull gemma2
ollama serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Keep Ollama running in its own terminal.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Install the backend dependencies
&lt;/h3&gt;

&lt;p&gt;From the repository root, create and activate a Python virtual environment.&lt;/p&gt;

&lt;p&gt;On Windows PowerShell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;python&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-m&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;venv&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;venv&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;\.venv\Scripts\Activate.ps1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On macOS or Linux:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; venv .venv
&lt;span class="nb"&gt;source&lt;/span&gt; .venv/bin/activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then install the dependencies and start FastAPI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; backend/requirements.txt

python &lt;span class="nt"&gt;-m&lt;/span&gt; uvicorn backend.main:app &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--host&lt;/span&gt; 127.0.0.1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 8000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--reload&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Start the frontend
&lt;/h3&gt;

&lt;p&gt;Open another terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;frontend
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the application at:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configuration matters:&lt;/strong&gt; Check the repository's environment examples and current source code to ensure the frontend points to the local FastAPI backend and the backend uses the intended Ollama endpoint and model. The commands above follow the project's documented setup; verify the current repository if any paths or configuration names have changed.&lt;/p&gt;

&lt;p&gt;Source code: &lt;a href="https://github.com/AnshMeshram/NoticeNap" rel="noopener noreferrer"&gt;https://github.com/AnshMeshram/NoticeNap&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💭 What I want NoticeNap to become
&lt;/h2&gt;

&lt;p&gt;I want NoticeNap to help people spend less time hunting through paperwork and more time acting on opportunities.&lt;/p&gt;

&lt;p&gt;A long recruitment notice should become easier to review. A scholarship announcement should become easier to turn into a list of tasks. A university circular should be easier to understand without losing sight of its original requirements.&lt;/p&gt;

&lt;p&gt;There is still work to do, particularly around OCR, extraction reliability, multilingual accuracy, evidence validation, and deployment.&lt;/p&gt;

&lt;p&gt;But I believe this is a useful place for open-source AI: a real, repetitive problem where local inference, structured extraction, and a thoughtfully designed workflow can work together to reduce unnecessary effort.&lt;/p&gt;

&lt;p&gt;The best automation is not necessarily the one that does everything without supervision. Sometimes it is the one that removes the frustrating parts while keeping the important decisions in your hands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let the notice be long. Your to-do list shouldn't.&lt;/strong&gt; 🦥&lt;/p&gt;

&lt;h2&gt;
  
  
  🤝 Feedback and contributions
&lt;/h2&gt;

&lt;p&gt;I'd especially welcome ideas and contributions around PDF extraction accuracy, OCR for scanned notices, evidence-backed summaries, multilingual evaluation, accessibility, and reliable local-first inference.&lt;/p&gt;

&lt;p&gt;Explore the project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live frontend:&lt;/strong&gt; &lt;a href="https://noticenap.vercel.app" rel="noopener noreferrer"&gt;https://noticenap.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/AnshMeshram/NoticeNap" rel="noopener noreferrer"&gt;https://github.com/AnshMeshram/NoticeNap&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you were building a local AI tool to automate one repetitive task in your daily life, what would you build?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Created for Hacktoberfest 2026 — Open-Source AI Challenge, Week 3: Slow and Steady.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>From Leftover Rotis to Better Margins: Building DabbaIQ with Open-Source AI</title>
      <dc:creator>Ansh Meshram</dc:creator>
      <pubDate>Sat, 17 Oct 2026 08:10:26 +0000</pubDate>
      <link>https://dev.to/anshmeshram/from-leftover-rotis-to-better-margins-building-dabbaiq-with-open-source-ai-408</link>
      <guid>https://dev.to/anshmeshram/from-leftover-rotis-to-better-margins-building-dabbaiq-with-open-source-ai-408</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge — Week 2: Side Hustle&lt;/a&gt;.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;A kitchen rarely loses money in one dramatic moment. Sometimes it leaks out one extra batch of rice, one ingredient bought too late, or one tray of food that nobody counted after lunch.&lt;/p&gt;

&lt;p&gt;For a small tiffin business, those decisions are connected. &lt;strong&gt;Demand affects preparation. Preparation affects stock. Stock and recipes affect cost. Sales and leftovers should affect tomorrow’s plan.&lt;/strong&gt; But in a busy kitchen, those facts often live in different notebooks, spreadsheets, or someone’s memory.&lt;/p&gt;

&lt;p&gt;I’m building &lt;strong&gt;DabbaIQ&lt;/strong&gt; to connect those decisions in one kitchen operations desk.&lt;/p&gt;

&lt;p&gt;The guiding idea is simple: &lt;strong&gt;Cook the right amount. Waste less. Earn more.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;DabbaIQ is an AI-assisted kitchen operations platform designed for Indian tiffin services, meal-subscription businesses, small caterers, and cloud kitchens. It brings together the daily workflows that decide whether a kitchen runs smoothly—and whether the economics make sense.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Preparation planning:&lt;/strong&gt; organize demand inputs, preparation quantities, safety buffers, and ingredient availability before the rush.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inventory and procurement:&lt;/strong&gt; track ingredients, spot low-stock risks, and support supplier or market-price discovery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recipe costing:&lt;/strong&gt; connect ingredient quantities to estimated per-portion and per-dabba costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sales and dispatch:&lt;/strong&gt; record what went out, instead of treating production as proof of sales.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Waste tracking and reporting:&lt;/strong&gt; record leftovers and compare operational outcomes to help inform the next shift.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The product also has a visual identity rooted in the &lt;em&gt;dabba&lt;/em&gt; itself: a stainless-steel four-tier tiffin. The introduction follows a scroll-driven, tier-by-tier sequence, using each layer to introduce part of the system. It’s a product explanation, not just a generic dashboard with an AI badge added to it.&lt;/p&gt;

&lt;p&gt;DabbaIQ is a working software project, but I’m not claiming that it has already reduced waste by a measured percentage or generated revenue for a paying kitchen. Those are outcomes to validate with operators—not numbers to invent for a launch post.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live frontend:&lt;/strong&gt; &lt;a href="https://dabba-iq.vercel.app/" rel="noopener noreferrer"&gt;https://dabba-iq.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The frontend is deployed. I’m completing production checks on the backend’s database access, cross-origin configuration, and AI endpoint so I can verify the complete workflow—not just the interface. Until those checks pass, treat the link as a preview and not a guarantee that every backend-connected action is working end to end.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/AnshMeshram/dabbaiq" rel="noopener noreferrer"&gt;https://github.com/AnshMeshram/dabbaiq&lt;/a&gt;&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/AnshMeshram" rel="noopener noreferrer"&gt;
        AnshMeshram
      &lt;/a&gt; / &lt;a href="https://github.com/AnshMeshram/DabbaIQ" rel="noopener noreferrer"&gt;
        DabbaIQ
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI-powered kitchen prep &amp;amp; food waste planner for tiffin services and caterers. Cuts food waste with smart demand forecasting, live SerpAPI wholesale ingredient price discovery, MongoDB Atlas persistence, and resilient Temporal-orchestrated preparation workflows.
    &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;🍱 DabbaIQ — AI Kitchen Prep &amp;amp; Food-Waste Planner&lt;/h1&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href="https://nextjs.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1dba0765d6bab4615dc3455470812a32238d5f4b04764cfb47b820e9951b51b2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e6578742e6a732d31362e342e315f28547572626f7061636b292d626c61636b3f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6578742e6a73266c6f676f436f6c6f723d7768697465" alt="Next.js"&gt;&lt;/a&gt;
&lt;a href="https://fastapi.tiangolo.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/660cd096a8c8bc4e8c35eab25cba595a5929d8a2e1f8bdc8fa39ab3e4442667e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f466173744150492d302e3131352e342d3030393638383f7374796c653d666f722d7468652d6261646765266c6f676f3d66617374617069266c6f676f436f6c6f723d7768697465" alt="FastAPI"&gt;&lt;/a&gt;
&lt;a href="https://www.python.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1e74fc08f1a75dc2e7a0eb363fa03dcb61526713d4db09a26cc69b2b2aed7c91/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507974686f6e2d332e3132253230253743253230332e31332d3337373641423f7374796c653d666f722d7468652d6261646765266c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465" alt="Python"&gt;&lt;/a&gt;
&lt;a href="https://cloud.mongodb.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/35f6e9e95a63c3aa4f6da8fbf2ddd4b08e96a7b7f4e73dc9d9e38b74524fbaf7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6f6e676f44422d41746c61735f362e302532422d3437413234383f7374796c653d666f722d7468652d6261646765266c6f676f3d6d6f6e676f6462266c6f676f436f6c6f723d7768697465" alt="MongoDB Atlas"&gt;&lt;/a&gt;
&lt;a href="https://ollama.ai/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6a52213739116eb5a5386c50792fca6453366bd424f792b091dce87ce7e7bb14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f47656d6d615f32253246332d4f6c6c616d615f496e666572656e63652d626c756576696f6c65743f7374796c653d666f722d7468652d6261646765266c6f676f3d676f6f676c65266c6f676f436f6c6f723d7768697465" alt="Open-Weight AI"&gt;&lt;/a&gt;
&lt;a href="https://pytest.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/257b8133171cc472e089739880180575263698928b5aea367d1942257af5c3d5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5079746573742d3130312532463130315f5041535345442d627269676874677265656e3f7374796c653d666f722d7468652d6261646765266c6f676f3d707974657374266c6f676f436f6c6f723d7768697465" alt="Test Suite"&gt;&lt;/a&gt;
&lt;a href="https://dabba-iq.vercel.app/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/983fe29837c2fa78b1d146a56d2ab7b33ef1702a02f4356eb3a98a17e96167b9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f56657263656c2d4c6976655f4170702d626c61636b3f7374796c653d666f722d7468652d6261646765266c6f676f3d76657263656c266c6f676f436f6c6f723d7768697465" alt="Deploy on Vercel"&gt;&lt;/a&gt;
&lt;a href="https://render.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4e2167ce467dbb4a438f1bf3b13207396c5d9918ed18e41522c87ff2039d921b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656e6465722d4261636b656e645f506161532d3436453342373f7374796c653d666f722d7468652d6261646765266c6f676f3d72656e646572266c6f676f436f6c6f723d7768697465" alt="Deploy on Render"&gt;&lt;/a&gt;
&lt;a href="https://github.com/AnshMeshram/DabbaIQ/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2792a6b590e1b7fbcc5f7c80df8da3149453c596df80f16fa86bd82c487bec8d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f773f7374796c653d666f722d7468652d6261646765" alt="License"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;em&gt;"Cook the right amount. Waste less. Earn more."&lt;/em&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;An enterprise-grade, open-weight AI kitchen operations desk built for Indian tiffin subscription services, cloud kitchens, and meal prep entrepreneurs. Designed from a &lt;strong&gt;26-screen Google Stitch canvas&lt;/strong&gt;, pairing &lt;strong&gt;deterministic demand forecasting&lt;/strong&gt; with &lt;strong&gt;Gemma 3 open-weight reasoning&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dabba-iq.vercel.app/" rel="nofollow noopener noreferrer"&gt;🚀 Live Web App (Vercel)&lt;/a&gt; • &lt;a href="https://dabba-iq.vercel.app/experience" rel="nofollow noopener noreferrer"&gt;🍱 3D Tiffin Experience&lt;/a&gt; • &lt;a href="https://github.com/AnshMeshram/DabbaIQ#-system-architecture" rel="noopener noreferrer"&gt;📐 Architecture&lt;/a&gt; • &lt;a href="https://github.com/AnshMeshram/DabbaIQ#-local-development-quickstart" rel="noopener noreferrer"&gt;⚡ Quickstart&lt;/a&gt; • &lt;a href="https://github.com/AnshMeshram/DabbaIQ#-cloud-deployment-guide" rel="noopener noreferrer"&gt;☁️ Deployment&lt;/a&gt; • &lt;a href="https://github.com/AnshMeshram/DabbaIQ#-verified-quality-gates--test-suite" rel="noopener noreferrer"&gt;🧪 101/101 Tests&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📑 Interactive Table of Contents&lt;/h2&gt;
&lt;/div&gt;

&lt;b&gt;Click to expand / collapse navigation&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/AnshMeshram/DabbaIQ#1--problem-statement--mission" rel="noopener noreferrer"&gt;1. 💡 Problem Statement &amp;amp; Mission&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AnshMeshram/DabbaIQ#2--the-26-screen-stitch-experience--route-tour" rel="noopener noreferrer"&gt;2. 🍱 The 26-Screen Stitch Experience &amp;amp; Route Tour&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AnshMeshram/DabbaIQ#3--system-architecture" rel="noopener noreferrer"&gt;3. 📐 System Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AnshMeshram/DabbaIQ#4--deterministic-math-vs-open-weight-ai" rel="noopener noreferrer"&gt;4. 🧠 Deterministic Math vs. Open-Weight AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AnshMeshram/DabbaIQ#5--local-development-quickstart" rel="noopener noreferrer"&gt;5. ⚡ Local Development Quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AnshMeshram/DabbaIQ#6--cloud-deployment-guide-vercel--render" rel="noopener noreferrer"&gt;6. ☁️ Cloud Deployment Guide (Vercel + Render)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AnshMeshram/DabbaIQ#7--verified-quality-gates--101101-test-suite" rel="noopener noreferrer"&gt;7. 🧪 Verified Quality Gates &amp;amp; 101/101 Test Suite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AnshMeshram/DabbaIQ#8--partner--enterprise-integrations" rel="noopener noreferrer"&gt;8. 🔌 Partner &amp;amp; Enterprise Integrations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AnshMeshram/DabbaIQ#9--security--zero-secret-leakage" rel="noopener noreferrer"&gt;9. 🔒 Security &amp;amp; Zero Secret Leakage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/AnshMeshram/DabbaIQ#10--license--hacktoberfest-2026-credits" rel="noopener noreferrer"&gt;10.&lt;/a&gt;…&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/AnshMeshram/DabbaIQ" 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;DabbaIQ is split into a web interface, an API layer, operational data, and optional intelligence/workflow services.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js, React, TypeScript, and Tailwind CSS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python and FastAPI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Application data:&lt;/strong&gt; MongoDB Atlas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-weight AI path:&lt;/strong&gt; Gemma 2 through Ollama for supported local-inference and kitchen-assistance workflows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Market research integration:&lt;/strong&gt; SerpAPI for supplier and market-price discovery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time-series capabilities:&lt;/strong&gt; Tiger Data/TimescaleDB for historical data workflows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow orchestration:&lt;/strong&gt; Temporal integration for processes that benefit from coordinated execution.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most important design decision is the boundary between &lt;strong&gt;calculation and interpretation&lt;/strong&gt;. Ingredient quantities, stock counts, arithmetic, and report totals should be derived from structured records and application logic. A language model can help interpret an unstructured kitchen note, explain a recommendation, or make a plan easier to understand; it should not be allowed to make up stock counts or quietly replace a calculation.&lt;/p&gt;

&lt;p&gt;That boundary is what makes an AI tool useful in an operational setting. A fluent answer is not enough if the number behind it is wrong.&lt;/p&gt;

&lt;p&gt;The system is designed as a feedback loop: records inform a plan; the kitchen executes it; sales and leftovers become new records. The value is not one isolated prediction. It is making the next decision with better context than the previous one.&lt;/p&gt;

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

&lt;p&gt;For a small business, the model choice is not just a technical preference. It affects operating cost, deployment choices, control over data flow, and how much the product depends on one provider.&lt;/p&gt;

&lt;p&gt;Gemma 2 is an open-weight model. Running it through Ollama gives the project a path to local inference in environments where the model, hardware, and configuration are available. That makes it possible to experiment with the model locally, inspect the surrounding application code, and change the inference setup without rebuilding every product workflow around a single closed API.&lt;/p&gt;

&lt;p&gt;Open-weight does &lt;strong&gt;not&lt;/strong&gt; automatically mean free, private, or production-ready. Local inference still uses hardware. A hosted service still needs a reachable, secured model endpoint. And a privacy promise is only as strong as the actual data flow. I want DabbaIQ to make those deployment choices explicit rather than market “AI” as magic.&lt;/p&gt;

&lt;p&gt;The open approach also lets the system keep its most important business rules outside the model. The database and deterministic calculations remain the source of truth; the model adds assistance where language and context are useful. That separation makes it easier to test, replace, and improve individual components over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Could Be a Side Hustle
&lt;/h2&gt;

&lt;p&gt;DabbaIQ is aimed at a narrow customer, on purpose: an independent kitchen that has outgrown notebooks but cannot justify a large restaurant-management system.&lt;/p&gt;

&lt;p&gt;Potential customers include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tiffin and meal-subscription operators preparing recurring batches.&lt;/li&gt;
&lt;li&gt;Small caterers coordinating ingredients, portions, and dispatch.&lt;/li&gt;
&lt;li&gt;Cloud kitchens trying to understand ingredient cost and leftovers.&lt;/li&gt;
&lt;li&gt;Meal-prep businesses that need a clearer link between sales and preparation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The business model I would test first is a &lt;strong&gt;per-kitchen monthly subscription&lt;/strong&gt;, with a simple entry tier for planning and stock visibility and a higher tier for costing, reporting, and more advanced assistance. An initial price experiment might be ₹499–₹999 per kitchen per month—but that is a hypothesis to test, not a price customers have agreed to pay.&lt;/p&gt;

&lt;p&gt;The value proposition should be measurable. During a pilot, I would compare planned portions with actual sales and leftovers across several shifts, record how often stock shortages disrupt preparation, and ask the operator whether the tool saves enough time or money to justify paying for it. If it cannot show that value, the product needs to improve before the pricing does.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I’m Validating Next
&lt;/h2&gt;

&lt;p&gt;I don’t have a paying pilot or verified savings figures to report yet, and I won’t manufacture a testimonial or ROI claim. The next milestone is to work with a real kitchen operator and test the workflow against real shift records—with permission, and without exposing customer or business data unnecessarily.&lt;/p&gt;

&lt;p&gt;The immediate engineering work is equally practical: verify MongoDB connectivity in the deployed environment, allow the correct Vercel origin through CORS, and make sure the configured Ollama/Gemma endpoint is reachable before presenting AI features as online. A deployment is not complete just because the homepage loads; the critical actions have to work too.&lt;/p&gt;

&lt;p&gt;My success metric is not whether the model writes an impressive explanation. It is whether a kitchen owner can make a better preparation or purchasing decision because DabbaIQ connects information that was previously scattered.&lt;/p&gt;

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

&lt;p&gt;I’m submitting for the overall &lt;strong&gt;Side Hustle&lt;/strong&gt; challenge. I’ll select a partner prize category only where the corresponding technology is meaningfully integrated and can be demonstrated in the final build—not simply because a dependency appears in the repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing Thought
&lt;/h2&gt;

&lt;p&gt;A small kitchen doesn’t need AI for the sake of AI. It needs fewer avoidable surprises: fewer last-minute stock gaps, a clearer cost per dabba, and a more useful account of what happened after the lunch rush.&lt;/p&gt;

&lt;p&gt;That’s the problem I’m building DabbaIQ for. The next step is to test it with the people who live that problem every day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live frontend:&lt;/strong&gt; &lt;a href="https://dabba-iq.vercel.app/" rel="noopener noreferrer"&gt;https://dabba-iq.vercel.app/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Source code:&lt;/strong&gt; &lt;a href="https://github.com/AnshMeshram/dabbaiq" rel="noopener noreferrer"&gt;https://github.com/AnshMeshram/dabbaiq&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Trailnote: Plan the Walk. Make the Note. Put the Phone Away.</title>
      <dc:creator>Ansh Meshram</dc:creator>
      <pubDate>Thu, 08 Oct 2026 09:03:53 +0000</pubDate>
      <link>https://dev.to/anshmeshram/trailnote-plan-the-walk-make-the-note-put-the-phone-away-238p</link>
      <guid>https://dev.to/anshmeshram/trailnote-plan-the-walk-make-the-note-put-the-phone-away-238p</guid>
      <description>&lt;h1&gt;
  
  
  🌿 Trailnote — An AI Trail Companion That Tells You to Put Your Phone Away
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;My submission for the Hacktoberfest Open-Source AI Challenge — Week 1: Touch Grass.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plan the walk. Make the note. Put the phone away.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What if an AI outdoor app wasn't designed to keep you using it?&lt;/p&gt;

&lt;p&gt;That was the question behind &lt;strong&gt;Trailnote&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We keep building software that wants more of our attention. More scrolling, more notifications, more interaction, more time staring at a screen.&lt;/p&gt;

&lt;p&gt;So I wanted to try the opposite.&lt;/p&gt;

&lt;p&gt;I built an outdoor trail companion where AI helps you &lt;strong&gt;prepare for a walk&lt;/strong&gt;, and then the product actively encourages you to stop using it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Trailnote?
&lt;/h2&gt;

&lt;p&gt;Trailnote is a local-first digital field notebook for walking and exploring outdoors.&lt;/p&gt;

&lt;p&gt;You tell it where you want to go, how much time you have, what kind of trail you prefer, and what you want to notice. It combines that information with route, elevation and weather data and creates a small field guide for your walk.&lt;/p&gt;

&lt;p&gt;You can search for a place such as &lt;strong&gt;Baner Hill, Pune&lt;/strong&gt;, even if you're currently somewhere else, or simply use your current location.&lt;/p&gt;

&lt;p&gt;The interesting part isn't the planning, though.&lt;/p&gt;

&lt;p&gt;It's what happens after it.&lt;/p&gt;

&lt;p&gt;Trailnote creates a &lt;strong&gt;Trail Card&lt;/strong&gt; that you can save or print before leaving. Once you're outside, Walk Mode becomes deliberately minimal.&lt;/p&gt;

&lt;p&gt;And the instruction is pretty straightforward:&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;PUT YOUR PHONE AWAY.&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Go walk.&lt;/p&gt;

&lt;p&gt;Look around.&lt;/p&gt;

&lt;p&gt;Listen.&lt;/p&gt;

&lt;p&gt;Notice the leaves.&lt;/p&gt;

&lt;p&gt;Pay attention to things you normally walk past.&lt;/p&gt;

&lt;p&gt;Then, when you come back, open Trailnote again and record what you actually experienced.&lt;/p&gt;

&lt;p&gt;That becomes your field journal.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why build it this way?
&lt;/h2&gt;

&lt;p&gt;I didn't want to make another hiking chatbot.&lt;/p&gt;

&lt;p&gt;There are already plenty of applications that can tell you where to go, what to eat, what to see, and what to do next.&lt;/p&gt;

&lt;p&gt;I wanted Trailnote to feel closer to an old field notebook than a social or fitness application.&lt;/p&gt;

&lt;p&gt;The digital part prepares the experience.&lt;/p&gt;

&lt;p&gt;The physical world is where the experience actually happens.&lt;/p&gt;

&lt;p&gt;So the basic flow became:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PLAN → PREPARE → SAVE → LEAVE → EXPLORE → RETURN → REFLECT&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That idea ended up influencing almost every part of the application.&lt;/p&gt;




&lt;h2&gt;
  
  
  The AI is local
&lt;/h2&gt;

&lt;p&gt;The core AI in Trailnote is &lt;strong&gt;Gemma 2 running locally through Ollama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I specifically wanted the AI layer to be something I could run on my own machine rather than making the whole application dependent on a proprietary cloud AI API.&lt;/p&gt;

&lt;p&gt;Gemma isn't responsible for things that don't need an AI model.&lt;/p&gt;

&lt;p&gt;For example, I don't ask the model to guess the distance of a trail or invent the current temperature.&lt;/p&gt;

&lt;p&gt;Those things come from deterministic systems.&lt;/p&gt;

&lt;p&gt;Gemma is used where language and interpretation actually help: creating the naturalist-style trail briefing, generating things to look for during the walk, understanding the user's interests, and shaping field notes into more polished naturalist prose.&lt;/p&gt;

&lt;p&gt;The application validates the generated output with Zod and has a deterministic fallback when local inference isn't available.&lt;/p&gt;

&lt;p&gt;That separation was one of the more important architectural decisions I made while building this.&lt;/p&gt;




&lt;h2&gt;
  
  
  The map doesn't need Google
&lt;/h2&gt;

&lt;p&gt;For Trailnote, I wanted the geographic layer to be open as well.&lt;/p&gt;

&lt;p&gt;The location search and reverse geocoding use &lt;strong&gt;OpenStreetMap through Nominatim&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Walking routes are generated with &lt;strong&gt;OSRM&lt;/strong&gt;, while &lt;strong&gt;Leaflet&lt;/strong&gt; handles the interactive map.&lt;/p&gt;

&lt;p&gt;Weather comes from &lt;strong&gt;Open-Meteo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So when I search for something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Baner Hill, Pune&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;the application finds the location, gets its coordinates, generates a route around that location, retrieves the weather for those coordinates, and then passes the relevant information into the trail-generation pipeline.&lt;/p&gt;

&lt;p&gt;The user's current GPS location and the location they actually want to walk are treated as two separate things.&lt;/p&gt;

&lt;p&gt;That sounds small, but it makes the application much more useful.&lt;/p&gt;




&lt;h2&gt;
  
  
  A trail card instead of another screen
&lt;/h2&gt;

&lt;p&gt;One of my favourite parts of Trailnote is the Trail Card.&lt;/p&gt;

&lt;p&gt;The generated trail can be turned into a physical-looking field card containing the route, distance, elevation, weather, things to notice, what to bring, safety information, and space for handwritten notes.&lt;/p&gt;

&lt;p&gt;It can be printed before the walk.&lt;/p&gt;

&lt;p&gt;This is intentional.&lt;/p&gt;

&lt;p&gt;I didn't want to solve the problem of excessive screen time by creating a better screen.&lt;/p&gt;

&lt;p&gt;I wanted to give the user something they could &lt;strong&gt;take with them and then stop looking at the application&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  And then you come back
&lt;/h2&gt;

&lt;p&gt;After the walk, Trailnote becomes useful again.&lt;/p&gt;

&lt;p&gt;You can record what you saw, heard and felt, add a favourite moment, write a reflection, and optionally attach a photograph.&lt;/p&gt;

&lt;p&gt;Those entries stay local to the device.&lt;/p&gt;

&lt;p&gt;There is no MongoDB database, Firebase backend or Supabase database behind the journal. The project uses local browser storage because, for a personal field notebook, I didn't see a reason to send someone's private observations to a server.&lt;/p&gt;

&lt;p&gt;The original note is also kept separate from the optional AI-shaped version.&lt;/p&gt;

&lt;p&gt;I wanted the AI to help with the writing without pretending that it was the person who actually went outside.&lt;/p&gt;




&lt;h2&gt;
  
  
  The technology behind it
&lt;/h2&gt;

&lt;p&gt;Trailnote is built with &lt;strong&gt;Next.js 15, React 19, TypeScript and vanilla CSS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The AI layer uses &lt;strong&gt;Gemma 2 + Ollama + Zod&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For the outdoor data layer, it uses &lt;strong&gt;OpenStreetMap/Nominatim, OSRM, Open-Meteo and Leaflet&lt;/strong&gt;, with browser geolocation for the current-location option.&lt;/p&gt;

&lt;p&gt;The application is local-first, uses browser storage for personal data, supports printable Trail Cards, and has a small PWA setup for mobile use.&lt;/p&gt;

&lt;p&gt;The whole thing is currently deployed on Netlify.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why open source AI made sense here
&lt;/h2&gt;

&lt;p&gt;This project probably could have been built faster by calling a hosted AI API and moving on.&lt;/p&gt;

&lt;p&gt;But using an open-weight model locally changed how I thought about the application.&lt;/p&gt;

&lt;p&gt;The AI doesn't have to be permanently connected.&lt;/p&gt;

&lt;p&gt;Personal field notes don't have to be uploaded just to get some writing assistance.&lt;/p&gt;

&lt;p&gt;The model isn't locked into one proprietary API.&lt;/p&gt;

&lt;p&gt;And the rest of the stack follows the same philosophy: open geographic data, open routing, open weather data and open-source libraries.&lt;/p&gt;

&lt;p&gt;That's what I like about the open approach here.&lt;/p&gt;

&lt;p&gt;It's not just that the model is open.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The whole application becomes more understandable, replaceable and local.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The part I'm most proud of
&lt;/h2&gt;

&lt;p&gt;The most interesting thing I learned while building Trailnote is that AI doesn't always need to be the main character.&lt;/p&gt;

&lt;p&gt;The obvious version of this project would have been:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Chat with an AI about hiking."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But that's not particularly interesting to me.&lt;/p&gt;

&lt;p&gt;The version I wanted was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Let AI prepare something useful, then go outside."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That distinction ended up becoming the product.&lt;/p&gt;

&lt;p&gt;The application should disappear at exactly the moment the real experience begins.&lt;/p&gt;




&lt;h2&gt;
  
  
  Built for Touch Grass
&lt;/h2&gt;

&lt;p&gt;The Hacktoberfest Week 1 challenge asks us to build something around the idea of &lt;strong&gt;Touch Grass&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Trailnote takes that literally.&lt;/p&gt;

&lt;p&gt;Most applications optimise for engagement.&lt;/p&gt;

&lt;p&gt;Trailnote optimises for &lt;strong&gt;getting you away from the application&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The screen is useful before the walk.&lt;/p&gt;

&lt;p&gt;The world is the destination.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plan the walk.&lt;br&gt;&lt;br&gt;
Make the note.&lt;br&gt;&lt;br&gt;
Put the phone away.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🌿&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://trailnote.netlify.app/" rel="noopener noreferrer"&gt;https://trailnote.netlify.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Code:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/AnshMeshram/TrailNote" rel="noopener noreferrer"&gt;https://github.com/AnshMeshram/TrailNote&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is open source, and I'd genuinely love feedback on the idea, the UX, and especially the balance between AI assistance and getting people away from their screens.&lt;/p&gt;

&lt;p&gt;If you try it, pick somewhere you've actually wanted to walk, make a plan, and then go outside.&lt;/p&gt;

&lt;p&gt;That's the whole point.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏆 Submission
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;Category:&lt;/strong&gt; Best Use of Gemma&lt;/p&gt;

&lt;p&gt;Trailnote uses &lt;strong&gt;Gemma 2 through Ollama for local natural-language generation&lt;/strong&gt;, including trail briefings, observation prompts and field-note shaping.&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge #gemma #opensource
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>PackPal - Local AI Travel Companion</title>
      <dc:creator>Ansh Meshram</dc:creator>
      <pubDate>Mon, 05 Oct 2026 07:02:17 +0000</pubDate>
      <link>https://dev.to/anshmeshram/packpal-local-ai-travel-companion-3130</link>
      <guid>https://dev.to/anshmeshram/packpal-local-ai-travel-companion-3130</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;&lt;strong&gt;PackPal&lt;/strong&gt; is a local-AI travel companion built for a friend who wanted a simpler way to organize trips with friends. It combines personalized packing lists, weather/activity-aware recommendations, smart luggage optimization, itineraries, travelers, and group expense splitting in one place.&lt;/p&gt;

&lt;p&gt;PackPal uses &lt;strong&gt;Gemma 2 through Ollama&lt;/strong&gt; for local AI reasoning, while deterministic TypeScript handles calculations such as luggage weights and expense settlements.&lt;/p&gt;

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

&lt;p&gt;🚀 &lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://pack-pal-tau.vercel.app/" rel="noopener noreferrer"&gt;https://pack-pal-tau.vercel.app/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;💻 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/AnshMeshram/PackPal" rel="noopener noreferrer"&gt;https://github.com/AnshMeshram/PackPal&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;PackPal is built with &lt;strong&gt;Next.js, React, TypeScript, Tailwind CSS, MongoDB Atlas, SerpApi, Ollama, and Gemma 2&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Gemma 2 is at the core of the application and handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🎒 Personalized packing recommendations&lt;/li&gt;
&lt;li&gt;🧳 Luggage optimization&lt;/li&gt;
&lt;li&gt;🏃 Activity-to-packing reasoning&lt;/li&gt;
&lt;li&gt;🔄 Natural-language trip changes&lt;/li&gt;
&lt;li&gt;💸 Natural-language expense extraction&lt;/li&gt;
&lt;li&gt;🗺️ Destination interpretation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The architecture separates AI reasoning from deterministic application logic:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma understands and recommends → TypeScript validates and calculates.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For example, Gemma extracts information from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Rahul paid ₹1,800 for dinner for everyone."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then PackPal's deterministic expense engine calculates the actual balances and settlements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SerpApi&lt;/strong&gt; provides live travel/search context, &lt;strong&gt;MongoDB Atlas&lt;/strong&gt; provides persistence, &lt;strong&gt;ElevenLabs&lt;/strong&gt; enables optional voice output, and &lt;strong&gt;Sentry&lt;/strong&gt; provides monitoring.&lt;/p&gt;

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

&lt;p&gt;PackPal was intentionally built around &lt;strong&gt;open-weight AI and local inference&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Running Gemma 2 through Ollama means the core AI can run locally instead of requiring every request to be sent to a closed AI API.&lt;/p&gt;

&lt;p&gt;This provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔐 Greater privacy for personal trip information&lt;/li&gt;
&lt;li&gt;💰 Lower recurring AI inference costs&lt;/li&gt;
&lt;li&gt;📴 Potential for offline/local usage&lt;/li&gt;
&lt;li&gt;🔄 Freedom to swap or upgrade models&lt;/li&gt;
&lt;li&gt;🛠️ More control over how the AI behaves&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a personal travel assistant, keeping sensitive trip and group information under the user's control is especially valuable.&lt;/p&gt;

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

&lt;p&gt;DevRelay agent session: &lt;a href="https://dev.to/agent_sessions/packpal-privacy-first-ai-travel-journal-packing-companion-430lto"&gt;https://dev.to/agent_sessions/packpal-privacy-first-ai-travel-journal-packing-companion-430lto&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;🏆 &lt;strong&gt;Best Use of Gemma&lt;/strong&gt; — Gemma 2 is the core AI model powering PackPal.&lt;/li&gt;
&lt;li&gt;🔎 &lt;strong&gt;Best Use of SerpApi&lt;/strong&gt; — Provides live search and destination context.&lt;/li&gt;
&lt;li&gt;🗄️ &lt;strong&gt;Best Use of MongoDB Atlas&lt;/strong&gt; — Persistent application data layer.&lt;/li&gt;
&lt;li&gt;🎙️ &lt;strong&gt;Best Use of ElevenLabs&lt;/strong&gt; — Optional voice generation.&lt;/li&gt;
&lt;li&gt;🛡️ &lt;strong&gt;Best Use of Sentry Agent Tracing&lt;/strong&gt; — Monitoring and debugging.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  devchallenge #weekendchallenge #hf26challenge
&lt;/h1&gt;

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