<?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: Ghananil Shirpurkar</title>
    <description>The latest articles on DEV Community by Ghananil Shirpurkar (@ghananilshirpurkar).</description>
    <link>https://dev.to/ghananilshirpurkar</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%2F4155165%2Ffde4c0a7-02ef-4e41-98ae-5709cc15b901.png</url>
      <title>DEV Community: Ghananil Shirpurkar</title>
      <link>https://dev.to/ghananilshirpurkar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ghananilshirpurkar"/>
    <language>en</language>
    <item>
      <title>I Built MossMail</title>
      <dc:creator>Ghananil Shirpurkar</dc:creator>
      <pubDate>Sun, 25 Oct 2026 13:48:54 +0000</pubDate>
      <link>https://dev.to/ghananilshirpurkar/i-built-mossmail-24o9</link>
      <guid>https://dev.to/ghananilshirpurkar/i-built-mossmail-24o9</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;. Built with Codex assistance. #devchallenge #hf26challenge&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;An inbox tells us that something arrived. It rarely helps us decide whether that message deserves our attention right now.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;MossMail&lt;/strong&gt;, a local-first email triage prototype for people whose inbox keeps pulling them away from their work. Its promise is simple: &lt;strong&gt;a calmer inbox, less attention, better decisions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MossMail makes waiting an explicit, reversible choice. Protected senders stay visible. Financial, legal, security, urgent, and deadline-sensitive messages go to review. Uncertain content and attachments also need a person. A low-risk subscription can be parked with a visible review deadline, and a follow-up brings its thread back.&lt;/p&gt;

&lt;p&gt;Select a message to see its short summary or excerpt, suggested next step, and the actual rules behind its recommendation. You can keep it in review or mark it resolved. The product helps you decide where to look; it does not quietly delete mail.&lt;/p&gt;

&lt;p&gt;The current release uses entirely fictional messages. It demonstrates the decision workflow without connecting to a live mailbox or sending, deleting, or archiving anything.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;&lt;a href="https://mossmail.streamlit.app/" rel="noopener noreferrer"&gt;Try MossMail live →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No mailbox connection or model download is needed. Each visitor gets an isolated demo session. Try this small walkthrough:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the invoice and read the financial and deadline reasons keeping it visible.&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;Parked&lt;/strong&gt;, then choose &lt;strong&gt;Simulate follow-up&lt;/strong&gt; on a subscription.&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;Activity&lt;/strong&gt; to inspect the escalation, or try &lt;strong&gt;Preview timer expiry&lt;/strong&gt; to return a message for review.&lt;/li&gt;
&lt;/ol&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%2Fgy6hhyy2ki7rg5gdi4pw.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%2Fgy6hhyy2ki7rg5gdi4pw.png" alt="The live MossMail demo on Streamlit Community Cloud" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The hosted app uses clearly labeled deterministic excerpts and simulated waiting controls. It does not run Gemma or a Temporal server in Community Cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/GhananilShirpurkar/mossmail/blob/main/docs/mossmail-demo.webm" rel="noopener noreferrer"&gt;Watch the 107-second local Gemma demo&lt;/a&gt;&lt;/strong&gt; to see actual local AI summaries. This genuine, silent browser recording uses the same fictional collection and explicitly labels its workflow simulation.&lt;/p&gt;

&lt;p&gt;The separate durable Temporal implementation is exercised by real SDK integration tests and can be run using the server and worker commands in the README.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/GhananilShirpurkar/mossmail" rel="noopener noreferrer"&gt;MossMail on GitHub&lt;/a&gt;&lt;/strong&gt; · &lt;a href="https://github.com/GhananilShirpurkar/mossmail/blob/main/LICENSE" rel="noopener noreferrer"&gt;MIT license&lt;/a&gt; · &lt;a href="https://github.com/GhananilShirpurkar/mossmail/blob/main/docs/validation.md" rel="noopener noreferrer"&gt;Validation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository includes the application, synthetic examples, tests, genuine captures, local setup instructions, and the Community Cloud entrypoint. Its policy and inference code are separate from the Streamlit interface, so the important behavior can be tested directly.&lt;/p&gt;

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

&lt;p&gt;I used Python, Streamlit, Pydantic, SQLite, Ollama, and the Temporal Python SDK. Codex assisted with implementation, tests, documentation, and browser verification.&lt;/p&gt;

&lt;p&gt;The inspiration was Khushighosh's &lt;a href="https://github.com/Khushighosh/let-it-die" rel="noopener noreferrer"&gt;Let It Die repository&lt;/a&gt; and its &lt;a href="https://dev.to/khushighosh/let-it-die-the-lazy-email-agent-on-tabpfn-gemma-and-temporal-10o0"&gt;DEV article&lt;/a&gt;. I inspected the MIT-licensed repository before building. Local summaries and deferred-message workflows were the conceptual starting point.&lt;/p&gt;

&lt;p&gt;MossMail independently implements a risk-first policy, review interface, structured summary boundary, MIME preparation, and transactional event ledger. No upstream source, dataset, predictions, caches, credentials, or Git history was copied. It also avoids treating a predicted lack of reply as proof that an email is unimportant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma helps with reading.&lt;/strong&gt; The default model is configurable &lt;code&gt;gemma3:4b&lt;/code&gt;; the actual local demonstration used the installed &lt;code&gt;gemma2:2b&lt;/code&gt; through Ollama. Responses must match a JSON schema. Missing models, connection failures, uncertain parsing, and invalid output produce an honestly labeled excerpt. Email text is untrusted data, and the summarizer has no mailbox tools or policy authority.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Temporal makes waiting durable.&lt;/strong&gt; A workflow records parking through an activity, waits for a timer or signal, and applies a safe local transition. Expiry returns a message for review. Activity retries are deduplicated, stale parking cycles cannot overwrite newer ones, and signals arriving during an in-flight expiry activity are processed before completion. Integration tests cover timers, signals, retry after commit, worker replacement, replay, and that signal race.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The cloud demo stays lightweight.&lt;/strong&gt; A separate entrypoint isolates each visitor's synthetic state in a temporary database and bypasses Ollama. The local application retains its Gemma integration and persistent local state.&lt;/p&gt;

&lt;p&gt;An optional hosted TabPFN adapter is implemented with explicit consent and numeric-only features. Hosted inference was not run for this submission, and no model-quality metric or TabPFN prize claim is made.&lt;/p&gt;

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

&lt;p&gt;Running Gemma locally lets the reading assistance work without sending message text to a hosted language-model provider. The model can be swapped through configuration, while the application remains usable if inference fails. Model weights are not bundled, and Gemma's own terms apply.&lt;/p&gt;

&lt;p&gt;Temporal's open-source workflow tools make the waiting behavior inspectable and testable. I can reproduce a failure after a committed write, restart a worker, replay history, and check whether a follow-up still reaches the review queue.&lt;/p&gt;

&lt;p&gt;The policy is readable Python. Someone can change protected senders, shorten the waiting period, or improve MIME handling while keeping those decisions visible. The useful open contribution is that whole boundary: code, examples, explanations, tests, and limitations.&lt;/p&gt;

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

&lt;p&gt;This project was built with Codex assistance. The implementation, validation notes, and commit history document the work. A public agent-session transcript is not included.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;The intended payoff is fewer repeated decisions about low-risk messages: give them a deadline, let them wait, and return when there is new context or a reason to review.&lt;/p&gt;

&lt;p&gt;The demo shows that behavior. Real-world time saved, changes in inbox-checking habits, and risk-detection accuracy have not been measured; those remain future evaluation work.&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; — actual local &lt;code&gt;gemma2:2b&lt;/code&gt; inference through Ollama, demonstrated in the recorded application with model and source labels.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Temporal&lt;/strong&gt; — a durable workflow with activities, timers, signals, bounded retries, idempotent local effects, worker-recovery tests, and history replay.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The live Streamlit demo is a convenient way to explore the product. The local recording and integration tests provide the evidence for these two partner integrations. No other partner category is claimed.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>PitchCraft Local — A Freelance Proposal Generator That Runs Locally</title>
      <dc:creator>Ghananil Shirpurkar</dc:creator>
      <pubDate>Sat, 17 Oct 2026 10:21:00 +0000</pubDate>
      <link>https://dev.to/ghananilshirpurkar/pitchcraft-local-a-freelance-proposal-generator-that-runs-locally-3o84</link>
      <guid>https://dev.to/ghananilshirpurkar/pitchcraft-local-a-freelance-proposal-generator-that-runs-locally-3o84</guid>
      <description>&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%2Fxebc6uqm672f02ssmuxg.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%2Fxebc6uqm672f02ssmuxg.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;br&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%2Ftqd0q2kqyncgvw3msudp.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%2Ftqd0q2kqyncgvw3msudp.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;br&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%2F4hcrrxupcclxckbd64zu.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%2F4hcrrxupcclxckbd64zu.png" alt=" " width="800" height="569"&gt;&lt;/a&gt;&lt;br&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%2Fwk1y46o2zbaxus5mf59x.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%2Fwk1y46o2zbaxus5mf59x.png" alt=" " width="800" height="569"&gt;&lt;/a&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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;PitchCraft Local&lt;/strong&gt; is a command-line tool that turns a client's brief into an editable freelance proposal with itemized pricing — powered by a local open-weight AI model.&lt;/p&gt;

&lt;p&gt;Freelancers often spend time translating vague client requirements into a clear scope of work, estimating hours, calculating costs, and preparing professional proposals. PitchCraft Local helps streamline that process without requiring a paid AI subscription or cloud-based LLM API.&lt;/p&gt;

&lt;p&gt;Here's what it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Generates proposals:&lt;/strong&gt; Converts a client's brief into a structured scope of work, estimated hours, and project phases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calculates pricing independently:&lt;/strong&gt; Uses deterministic Python calculations and decimal-based arithmetic instead of trusting the model to calculate money.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supports editable output:&lt;/strong&gt; Produces Markdown proposals alongside structured JSON for review and further processing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flags uncertainty:&lt;/strong&gt; Highlights unknown services, missing information, and estimates that need human confirmation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keeps inference local:&lt;/strong&gt; Uses Ollama with Qwen 2.5 3B, with no external inference API or application telemetry.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The target users are independent freelancers, solo developers, and small service businesses that repeatedly prepare project quotations.&lt;/p&gt;

&lt;p&gt;The goal isn't to replace a freelancer's judgment. It's to reduce repetitive drafting and arithmetic so they can focus on scope clarification, realistic estimates, and client communication.&lt;/p&gt;

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

&lt;p&gt;The repository includes screenshots of the CLI running locally, including model readiness checks, generated proposals, and tests.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/GhananilShirpurkar/pitchcraft-local/tree/main/docs" rel="noopener noreferrer"&gt;View the local demo screenshots and details&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/GhananilShirpurkar/pitchcraft-local/blob/main/docs/DEMO.md" rel="noopener noreferrer"&gt;Read the demo documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/GhananilShirpurkar/pitchcraft-local/blob/main/docs/VERIFICATION.md" rel="noopener noreferrer"&gt;See the verification notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project runs from a terminal and is designed for resource-constrained hardware, including an Intel i3 machine with 8 GB RAM. CPU inference may be slow, depending on the brief and machine.&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/GhananilShirpurkar/pitchcraft-local" rel="noopener noreferrer"&gt;GhananilShirpurkar/pitchcraft-local&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is written in Python and includes a CLI, configurable service catalogue, example client briefs, offline tests, and an evaluation runner.&lt;/p&gt;

&lt;p&gt;Start with the repository README for installation instructions and a complete walkthrough.&lt;/p&gt;

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

&lt;p&gt;I built PitchCraft Local around &lt;strong&gt;Python, Ollama, Qwen 2.5 3B, Pydantic, and deterministic pricing logic&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I deliberately chose a small local model because my development machine has an Intel i3 processor and 8 GB of RAM. Instead of relying on a large hosted model, I wanted to explore how useful a constrained, locally running model could be for a specific business workflow.&lt;/p&gt;

&lt;p&gt;The pipeline looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Input:&lt;/strong&gt; A client brief and the freelancer's configured service catalogue, rates, and terms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local inference:&lt;/strong&gt; Qwen 2.5 3B drafts the project scope, estimates hours, and organizes the work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation:&lt;/strong&gt; Pydantic validates the proposal structure, while application logic checks catalogue references and flags unknown services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing:&lt;/strong&gt; Python resolves the applicable rates and computes monetary amounts using &lt;code&gt;Decimal&lt;/code&gt; arithmetic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output:&lt;/strong&gt; The application generates Markdown and JSON files for the freelancer to review and edit.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A key design decision was to keep financial calculations outside the model. An LLM can help interpret a brief, but it shouldn't be trusted to perform authoritative pricing arithmetic.&lt;/p&gt;

&lt;p&gt;I also added bounded inference attempts, offline tests, loopback-only runtime communication, and safeguards against treating client-provided text as trusted instructions.&lt;/p&gt;

&lt;p&gt;The project is an MVP, not a production-ready commercial product. Its generated scope, estimates, and wording still require human review.&lt;/p&gt;

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

&lt;p&gt;Open innovation made it possible to experiment with an AI-powered business tool without depending on a proprietary inference API.&lt;/p&gt;

&lt;p&gt;Using an open-weight model through Ollama gave me control over the runtime, the inference configuration, and how data moves through the application. It also let me build and test the workflow on modest hardware instead of designing around an expensive hosted model.&lt;/p&gt;

&lt;p&gt;More importantly, this project explores a practical engineering question: &lt;strong&gt;How much of a useful AI product can be built with a small local model when the surrounding software is designed carefully?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The answer isn't that the model can do everything. It's that the model can handle language-heavy drafting while conventional code handles validation, pricing, file safety, and predictable business rules.&lt;/p&gt;

&lt;p&gt;That separation makes the application easier to test, inspect, and improve.&lt;/p&gt;

&lt;p&gt;One important caveat: the repository's MIT license covers the project code, not the model weights. The selected Qwen 2.5 3B model uses a separate Qwen Research License, which must be reviewed for the intended use.&lt;/p&gt;

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

&lt;p&gt;I haven't included a DevRelay agent-session link in this submission. The repository and its implementation are available above.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Primary fit:&lt;/strong&gt; Side Hustle — a practical tool aimed at helping freelancers reduce repetitive proposal preparation.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>I Built ChronoDump: An AI That Turns Thought Dumps into Reminders</title>
      <dc:creator>Ghananil Shirpurkar</dc:creator>
      <pubDate>Sat, 03 Oct 2026 17:02:49 +0000</pubDate>
      <link>https://dev.to/ghananilshirpurkar/i-built-chronodump-an-ai-that-turns-thought-dumps-into-reminders-3e4h</link>
      <guid>https://dev.to/ghananilshirpurkar/i-built-chronodump-an-ai-that-turns-thought-dumps-into-reminders-3e4h</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;ChronoDump&lt;/strong&gt;, a local-first AI Telegram bot for people who have a lot of thoughts, tasks, and deadlines but don't want to stop and organize them manually.&lt;/p&gt;

&lt;p&gt;The idea came from a simple problem: sometimes you don't need another productivity app — you just need somewhere to &lt;strong&gt;dump your thoughts&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can send ChronoDump a messy voice note or text such as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I need to finish chapter 4 tonight by 10, the report is due on 3rd January, remind me to drink water in two minutes, and I need to pick up my laundry sometime this weekend.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ChronoDump transcribes and understands the dump, turns it into structured notes and action items, extracts deadlines, resolves time expressions, and automatically arms reminders.&lt;/p&gt;

&lt;p&gt;When a time expression is ambiguous, it &lt;strong&gt;doesn't guess&lt;/strong&gt;. Instead, it asks for clarification directly in Telegram.&lt;/p&gt;

&lt;p&gt;The goal was to build something that feels like a small personal assistant rather than another task-management interface.&lt;/p&gt;

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

&lt;p&gt;The working project is demonstrated through screenshots of the Telegram bot.&lt;/p&gt;

&lt;p&gt;The screenshots show:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Voice note → structured notes&lt;/li&gt;
&lt;li&gt;Extracted action items&lt;/li&gt;
&lt;li&gt;Automatically armed reminders&lt;/li&gt;
&lt;li&gt;Ambiguous-time clarification&lt;/li&gt;
&lt;li&gt;Reminder notifications&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;+30m&lt;/code&gt; snooze&lt;/li&gt;
&lt;li&gt;Marking reminders as done&lt;/li&gt;
&lt;li&gt;Undo after completing a reminder&lt;/li&gt;
&lt;li&gt;Direct text input&lt;/li&gt;
&lt;/ul&gt;

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

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

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

&lt;p&gt;ChronoDump is built around &lt;strong&gt;local/open-weight AI&lt;/strong&gt; rather than a closed cloud API.&lt;/p&gt;

&lt;p&gt;The pipeline is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Telegram → Whisper → Qwen3 → Pydantic → Temporal Engine → APScheduler → SQLite → Telegram&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;aiogram 3&lt;/strong&gt; — Telegram bot framework&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;faster-whisper&lt;/strong&gt; — local voice transcription&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen3 4B + Ollama&lt;/strong&gt; — local language understanding&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pydantic v2&lt;/strong&gt; — structured model output&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python &lt;code&gt;datetime&lt;/code&gt; + &lt;code&gt;zoneinfo&lt;/code&gt;&lt;/strong&gt; — deterministic time handling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;APScheduler&lt;/strong&gt; — reminder scheduling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQLite&lt;/strong&gt; — local persistence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQLAlchemy&lt;/strong&gt; — database access&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The core design principle is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;LLM interprets. Python validates and reasons about time. APScheduler executes. SQLite remembers.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The LLM understands the user's intent, while deterministic Python code handles actual timestamps and scheduling. This prevents the model from directly deciding when a reminder should fire.&lt;/p&gt;

&lt;p&gt;ChronoDump also includes a clarification flow for vague expressions such as &lt;strong&gt;“this weekend”&lt;/strong&gt; or &lt;strong&gt;“later today”&lt;/strong&gt; instead of silently making assumptions.&lt;/p&gt;

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

&lt;p&gt;ChronoDump is designed around the idea that useful AI doesn't always need to live behind a proprietary API.&lt;/p&gt;

&lt;p&gt;Using open-weight models and local inference makes it possible to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep personal voice notes and task data local&lt;/li&gt;
&lt;li&gt;Avoid sending private dumps to a third-party AI provider&lt;/li&gt;
&lt;li&gt;Run without relying on paid inference APIs&lt;/li&gt;
&lt;li&gt;Swap models as better open models become available&lt;/li&gt;
&lt;li&gt;Inspect and modify the AI pipeline&lt;/li&gt;
&lt;li&gt;Self-host the entire system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a tool that processes personal thoughts, reminders, deadlines, and voice notes, &lt;strong&gt;privacy and control are part of the product itself&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Open innovation made it possible to build this assistant using components that can be inspected, replaced, and self-hosted rather than locking the project to a single proprietary AI provider.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Build for a Friend&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-source AI / Open Innovation&lt;/strong&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%2Fqvur9ecizlot9iik6284.jpeg" alt=" " width="720" height="1600"&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%2Fbxy43m8139dzjdk366ur.jpeg" alt=" " width="720" height="1600"&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%2Fgs88kj0hpa5fn0z925mn.jpeg" alt=" " width="720" height="1600"&gt;
&lt;/li&gt;
&lt;/ul&gt;

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