<?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: Parth Kulkarni</title>
    <description>The latest articles on DEV Community by Parth Kulkarni (@parth_kulkarni_f56a656693).</description>
    <link>https://dev.to/parth_kulkarni_f56a656693</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%2F3889208%2F394cdd2c-2f65-41f7-a9c6-42e97f365e36.jpg</url>
      <title>DEV Community: Parth Kulkarni</title>
      <link>https://dev.to/parth_kulkarni_f56a656693</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/parth_kulkarni_f56a656693"/>
    <language>en</language>
    <item>
      <title>Sift</title>
      <dc:creator>Parth Kulkarni</dc:creator>
      <pubDate>Sun, 18 Oct 2026 16:50:24 +0000</pubDate>
      <link>https://dev.to/parth_kulkarni_f56a656693/sift-1m93</link>
      <guid>https://dev.to/parth_kulkarni_f56a656693/sift-1m93</guid>
      <description>&lt;h1&gt;
  
  
  Offline Hinglish DM-to-Dispatch Engine for Instagram Sellers
&lt;/h1&gt;

&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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Across India, thousands of small Instagram thrift stores, crochet artists, home bakers, and independent D2C boutiques run their entire business inside Instagram and WhatsApp DMs. &lt;/p&gt;

&lt;p&gt;There is just one massive bottleneck: &lt;strong&gt;customers don't order in clean forms—they order in messy Hinglish&lt;/strong&gt; (a blend of Hindi and English). A typical DM looks like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Bhai 2 oversized black acid-wash tees bhej do L size mein. Name: Rohan Deshmukh, Ph: 9823011223. Address: Flat 402, Sai Residency, Kothrud, Pune. GPay kar diya hai 1398 rs."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every single night, store owners spend 1.5 to 2 hours manually reading through chat dumps, copying names, phone numbers, sizes, and addresses, and pasting them into Excel sheets to generate courier dispatch labels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sift&lt;/strong&gt; solves this completely offline. It is a local-first AI desktop utility that takes raw, unstructured Hinglish chat dumps and extracts validated, courier-ready dispatch tables in seconds—running 100% locally on the seller's laptop at &lt;strong&gt;₹0.00 ($0.00) inference cost&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who Would Pay For It &amp;amp; The Business Model
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Target Customers:&lt;/strong&gt; Instagram thrift pages, home bakers, small boutiques, and WhatsApp commerce sellers handling 15–100+ orders a day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why They Pay:&lt;/strong&gt; Saving 45+ hours of manual data entry every month without paying per-message cloud API fees or risking customer privacy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing Model:&lt;/strong&gt; Offered as a &lt;strong&gt;₹499/month (~$6/mo)&lt;/strong&gt; flat local license or a &lt;strong&gt;₹1,999 (~$24) one-time local setup&lt;/strong&gt; where I configure Ollama, the open-weight model, and Sift directly on their machine. Because all inference runs on the user's own hardware, my cloud hosting cost is $0, making every sale 100% net profit.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Interactive Demo Link:&lt;/strong&gt; &lt;a href="https://sift12999.streamlit.app/" rel="noopener noreferrer"&gt;https://sift12999.streamlit.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screenshot:&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxeamdcx8jqhnfvba6qg5.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%2Fxeamdcx8jqhnfvba6qg5.png" alt="Sift Local Dashboard Screenshot" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/p-rth12999/Sift" rel="noopener noreferrer"&gt;https://github.com/p-rth12999/Sift&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Sift is architected from the ground up around &lt;strong&gt;local open-weight inference&lt;/strong&gt; and &lt;strong&gt;deterministic schema enforcement&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Local Inference Engine (Ollama):&lt;/strong&gt; Instead of routing messages to a paid cloud endpoint, Sift connects to a local Ollama server (&lt;code&gt;localhost:11434&lt;/code&gt;) running compact open-weight models—specifically &lt;strong&gt;Google's &lt;code&gt;gemma2:2b&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;Meta's &lt;code&gt;llama3.2:3b&lt;/code&gt;&lt;/strong&gt;. These 2B–3B parameter models are the sweet spot for consumer laptops: they consume ~2 GB of RAM, run rapidly on standard laptop CPUs without requiring a discrete GPU, and understand Indian Hinglish slang (&lt;em&gt;"bhej do"&lt;/em&gt;, &lt;em&gt;"GPay kar diya"&lt;/em&gt;, &lt;em&gt;"COD rakhna"&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict Structured Outputs (Pydantic):&lt;/strong&gt; Small models can occasionally get chatty. To make the extraction 100% reliable for a real business workflow, I paired the Ollama Python SDK with &lt;strong&gt;Pydantic&lt;/strong&gt; (&lt;code&gt;OrderExtraction.model_json_schema()&lt;/code&gt;). By passing the JSON schema directly into the model's &lt;code&gt;format&lt;/code&gt; parameter at &lt;code&gt;temperature=0.0&lt;/code&gt;, the open-weight model is constrained at the token level to emit strictly valid JSON matching our exact database columns (&lt;code&gt;customer_name&lt;/code&gt;, &lt;code&gt;phone_number&lt;/code&gt;, &lt;code&gt;item_name&lt;/code&gt;, &lt;code&gt;quantity&lt;/code&gt;, &lt;code&gt;size&lt;/code&gt;, &lt;code&gt;total_amount&lt;/code&gt;, &lt;code&gt;payment_status&lt;/code&gt;, &lt;code&gt;delivery_address&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Cloud Persistence &amp;amp; Dispatch UI (SQLite3 + Streamlit + Pandas):&lt;/strong&gt; Extracted orders are committed immediately to a local SQLite database (&lt;code&gt;sift_orders.db&lt;/code&gt;). The Streamlit dashboard supports &lt;strong&gt;Batch DM Processing&lt;/strong&gt; (splitting bulk chat dumps via &lt;code&gt;---&lt;/code&gt;), live revenue and payment status KPIs, and one-click CSV/Excel dispatch sheet exports.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  System Architecture
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A[📥 Messy Hinglish DMs] --&amp;gt;|Batch Input| B(Streamlit Seller UI)
    B --&amp;gt;|Raw Text| C{Local Ollama Engine\ngemma2:2b / llama3.2:3b}
    D[Pydantic Schema\nOrderExtraction] --&amp;gt;|Token-Level JSON Constraint| C
    C --&amp;gt;|Validated JSON| E[(SQLite Local DB\nsift_orders.db)]
    E --&amp;gt; F[📊 Live Revenue KPIs]
    E --&amp;gt; G[📦 Courier CSV Export]&lt;/code&gt;&lt;/pre&gt;






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

&lt;p&gt;Building Sift with closed, proprietary APIs (like GPT-4o or Claude) would have killed this side hustle before it even launched for three specific reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Unit Economics That Actually Work for Micro-Businesses:&lt;/strong&gt; Indian Instagram sellers operate on razor-thin margins. If a tool charges them per token or requires a $20/month API subscription on top of the software cost, they simply will not buy it—they will go back to manual copy-pasting. Running open-weight models locally on their existing laptop means &lt;strong&gt;marginal cost per parsed order is strictly $0.00&lt;/strong&gt;, allowing me to price Sift at an impulse-buy flat rate with zero server overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100% Customer PII Sovereignty:&lt;/strong&gt; Every single order DM contains highly sensitive Personally Identifiable Information (full names, personal mobile numbers, and exact home addresses). Sending customer residential data to external third-party cloud servers creates privacy and trust barriers. With Sift's local open-weight architecture, &lt;strong&gt;customer data never leaves the seller's laptop&lt;/strong&gt;—in fact, the entire pipeline runs with Wi-Fi completely turned off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Swappability &amp;amp; Zero Vendor Lock-In:&lt;/strong&gt; Using Ollama as a local harness lets sellers seamlessly switch between &lt;code&gt;gemma2:2b&lt;/code&gt; and &lt;code&gt;llama3.2:3b&lt;/code&gt; depending on their laptop's RAM and CPU speed, or fine-tune a small model on regional dialects (Marathi/Hindi/Tamil transliteration) without ever worrying about API deprecations or sudden pricing changes.&lt;/li&gt;
&lt;/ol&gt;




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


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="GitHub Copilot"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;Sift review — Offline Hinglish DM-to-Dispatch Engine&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Review the Sift project files app.py, parser.py, and database.py for the Hacktoberfest Week 2 Side Hustle DEV Challenge, then save/share this agent session to my DEV account and provide the exact agent_session Liquid tag and URL.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Reviewed Sift's Streamlit UI, Pydantic/Ollama parser, SQLite persistence layer, README, and requirements. Verified all three bundled fallback-parser samples: quantities, payment statuses, amounts, names, and addresses matched the sample intent. Verified all three reviewed Python files have no syntax errors.&lt;/p&gt;

                &lt;/div&gt;
                &lt;div&gt;
                  &lt;div class="agent-session-text agent-session-text-collapse"&gt;
                    &lt;p&gt;Findings: (1) High reliability risk: parser.py catches every Exception around Ollama import/call/JSON decoding and silently falls back, so missing Ollama, timeouts, malformed JSON, schema violations, and runtime defects are indistinguishable from a successful parse. Surface the failure and validate the response with OrderExtraction before persisting. (2) Data-integrity risk: OrderExtraction uses unconstrained str/int/float fields even though the prompt says payment_status is strictly Paid/COD/Pending and phone/quantity/amount have stated semantics; enforce those constraints before database insertion. (3) Fallback scope risk: cloud_demo_fallback is explicitly demo-sample-oriented (hard-coded names/items and narrow regexes), so production messages can be misclassified while appearing successful. Label it as demo-only or make the fallback fail visibly for unsupported inputs. (4) Portability risk: database.py uses a process-current-working-directory relative database path, so launching Streamlit from another directory can create/use a different database. Resolve the DB path from the application directory or configure it explicitly. (5) Transaction/resource robustness: database operations manually open/close connections without context managers or rollback handling; an exception can leave resources open and a partial batch can be reported ambiguously. (6) UX consistency: app.py advertises llama3.2:3b in the caption but defaults the selector to gemma2:2b, and always reports the local Ollama engine as active even when the fallback path will be used.&lt;/p&gt;

                  &lt;/div&gt;
                  Show more
                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Static checks: Pylance reported missing imports for streamlit and ollama in the selected interpreter, while pandas and pydantic resolved. This is an environment/dependency installation issue rather than a Python syntax issue; requirements.txt declares both packages. Runtime fallback probe passed for the three bundled samples.&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Challenge context: Hacktoberfest Open-Source AI Challenge: Week 2, theme Side Hustle, asks for open-weight/open-source AI that someone would actually pay for. Judging emphasizes writing quality, theme relevance, creativity, technical execution, and optional partner technology. Submission requires a DEV post using the #hf26challenge tag; the challenge context says October 18 at 11:59 PM PDT, and saving/embedding an agent session is optional but helpful.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        2 of 2 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;(Link to session: &lt;a href="https://dev.to/agent_sessions/sift-review-offline-hinglish-dm-to-dispatch-engine-opp4cu"&gt;https://dev.to/agent_sessions/sift-review-offline-hinglish-dm-to-dispatch-engine-opp4cu&lt;/a&gt;&lt;br&gt;
)&lt;/em&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; Sift integrates Google's open-weight &lt;code&gt;gemma2:2b&lt;/code&gt; model locally via Ollama alongside Pydantic structured outputs to extract Hinglish order entities on consumer laptop CPUs with minimal RAM overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Entire:&lt;/strong&gt; Shared the full end-to-end architectural planning, debugging, and local deployment agent session behind Sift using DevRelay / Entire.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub Copilot:&lt;/strong&gt; Utilized GitHub Copilot inside VS Code to accelerate building the Pydantic validation schema, regex cloud-demo fallback, and SQLite database CRUD operations.&lt;/li&gt;
&lt;/ul&gt;

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