<?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: Ohm Anand</title>
    <description>The latest articles on DEV Community by Ohm Anand (@ohmanand7643).</description>
    <link>https://dev.to/ohmanand7643</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%2F4159270%2F52a27cdb-50f5-4091-b076-5e55ddf4dde4.jpg</url>
      <title>DEV Community: Ohm Anand</title>
      <link>https://dev.to/ohmanand7643</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ohmanand7643"/>
    <language>en</language>
    <item>
      <title>OrderMint: Turning Customer Chats into Orders with Local AI</title>
      <dc:creator>Ohm Anand</dc:creator>
      <pubDate>Sun, 18 Oct 2026 18:04:35 +0000</pubDate>
      <link>https://dev.to/ohmanand7643/ordermint-turning-customer-chats-into-orders-with-local-ai-118o</link>
      <guid>https://dev.to/ohmanand7643/ordermint-turning-customer-chats-into-orders-with-local-ai-118o</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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OrderMint — Local-First AI Order Management for Small Sellers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Small businesses often receive orders through WhatsApp messages, Instagram DMs, and other informal conversations. Turning these messages into structured orders, checking quantities, calculating totals, and preparing bills manually takes time and can lead to mistakes.&lt;/p&gt;

&lt;p&gt;I built OrderMint to simplify that workflow.&lt;/p&gt;

&lt;p&gt;A seller can turn an informal customer message into a structured order draft, review the extracted items, correct details, and approve the order before generating a bill.&lt;/p&gt;

&lt;p&gt;Key features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI-assisted extraction of products, quantities, and order notes.&lt;/li&gt;
&lt;li&gt;Product catalog matching and deterministic validation.&lt;/li&gt;
&lt;li&gt;Human review before order approval.&lt;/li&gt;
&lt;li&gt;SQLite-backed order persistence.&lt;/li&gt;
&lt;li&gt;Printable bills and daily order summaries.&lt;/li&gt;
&lt;li&gt;Local AI inference with a fallback when the model is unavailable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Who would pay for it?&lt;/strong&gt; Home bakers, tiffin services, cloud kitchens, and Instagram sellers who want a simpler way to manage incoming orders without adopting an expensive, complicated system.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Hosted application:&lt;/strong&gt; &lt;a href="https://ordermint-nw7h.onrender.com" rel="noopener noreferrer"&gt;https://ordermint-nw7h.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The hosted frontend is currently experiencing a deployment issue, so the live interface may not load correctly. I’m working on resolving it rather than presenting a broken demo as functional.&lt;/p&gt;

&lt;p&gt;For now, you can inspect the source code below. If a working local demo recording is available, I’ll add it here.&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/ohm-7643/OrderMint" rel="noopener noreferrer"&gt;https://github.com/ohm-7643/OrderMint&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is built with React, Vite, Node.js, Express, and SQLite. The repository contains the application code and setup instructions.&lt;/p&gt;

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

&lt;p&gt;I built OrderMint using &lt;strong&gt;Qwen3-8B&lt;/strong&gt;, an open-weight model running locally through Ollama.&lt;/p&gt;

&lt;p&gt;The architecture consists of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React + Vite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Node.js + Express&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; SQLite with better-sqlite3&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI inference:&lt;/strong&gt; Qwen3-8B through Ollama&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation:&lt;/strong&gt; Deterministic checks and fallback logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model assists with interpreting customer messages, while application logic validates the output and checks it against the product catalog. The seller remains responsible for reviewing and approving the final order.&lt;/p&gt;

&lt;p&gt;I also added automated tests and synthetic order-evaluation cases to check application behavior.&lt;/p&gt;

&lt;p&gt;One important design decision was to avoid making the AI model the sole authority for business-critical data. The model helps interpret the message, but validation and human approval remain part of the workflow.&lt;/p&gt;

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

&lt;p&gt;Open innovation made it possible for me to experiment with a capable language model locally without building the entire product around a paid, proprietary inference API.&lt;/p&gt;

&lt;p&gt;Using an open-weight model through Ollama gave me more control over the inference environment and allowed me to explore a local-first approach to customer-order processing.&lt;/p&gt;

&lt;p&gt;It also made the project easier to experiment with as a student developer working with limited resources. I could focus on the actual product workflow — extraction, validation, persistence, and review — instead of depending entirely on a closed API.&lt;/p&gt;

&lt;p&gt;Open-source tools across the stack made it possible to build and test the application using technologies that other developers can inspect, learn from, and extend.&lt;/p&gt;

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

&lt;p&gt;I’m submitting OrderMint for the &lt;strong&gt;Side Hustle&lt;/strong&gt; challenge.&lt;/p&gt;

&lt;p&gt;The project explores a practical business use case for open-source AI: helping small sellers spend less time managing orders and more time serving customers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Next
&lt;/h2&gt;

&lt;p&gt;My next priorities are to resolve the hosted frontend issue, test the workflow with actual small-business sellers, improve extraction accuracy using real feedback, and evaluate whether the tool can save enough time to justify a paid product.&lt;/p&gt;

&lt;p&gt;I’d especially appreciate feedback from people who manage orders through chat messages and want a simpler workflow.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>buildinpublic</category>
      <category>ai</category>
    </item>
    <item>
      <title>A Map Is Evidence, Not an Answer: Building Ghost Shore for 1850s Bengaluru</title>
      <dc:creator>Ohm Anand</dc:creator>
      <pubDate>Sun, 11 Oct 2026 18:25:10 +0000</pubDate>
      <link>https://dev.to/ohmanand7643/a-map-is-evidence-not-an-answer-building-ghost-shore-for-1850s-bengaluru-5f14</link>
      <guid>https://dev.to/ohmanand7643/a-map-is-evidence-not-an-answer-building-ghost-shore-for-1850s-bengaluru-5f14</guid>
      <description>&lt;p&gt;&lt;em&gt;Submission for the Hacktoberfest Open-Source AI Challenge — Week 1: Touch Grass.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What if an old map could help us investigate the city we walk through today?&lt;/p&gt;

&lt;p&gt;Imagine looking at a map from the 1850s. You notice a label, a strange outline, or a patch of hatching. You wonder whether it represents a water body, an old tank, or a landscape feature that no longer exists.&lt;/p&gt;

&lt;p&gt;It's tempting to jump straight to the answer.&lt;/p&gt;

&lt;p&gt;But a historical map is not ground truth. A plausible interpretation is not a verified discovery. And an AI assistant that sounds confident can make the gap between the two even harder to see.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That is the problem behind Ghost Shore.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ghost Shore is an evidence-first historical map explorer for a c.1854 &lt;em&gt;Plan of Bangalore&lt;/em&gt;. It combines a feature catalog, a source-grounded research assistant, and a field expedition companion designed to take research beyond the screen.&lt;/p&gt;

&lt;p&gt;The central idea is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI should help us ask better questions about the real world—not manufacture certainty.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; &lt;a href="https://github.com/ohm-7643/ghost-shore-" rel="noopener noreferrer"&gt;Ghost Shore on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://ghost-shore-r449.onrender.com" rel="noopener noreferrer"&gt;https://ghost-shore-r449.onrender.com&lt;/a&gt;&lt;/p&gt;

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

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

&lt;p&gt;Historical maps are fascinating because they show us a different version of a place we think we know.&lt;/p&gt;

&lt;p&gt;But comparing an old map with a modern city involves several difficult questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What does the historical document actually show?&lt;/li&gt;
&lt;li&gt;How reliable is its alignment with modern geography?&lt;/li&gt;
&lt;li&gt;Which interpretations are supported by evidence?&lt;/li&gt;
&lt;li&gt;What additional sources or observations would help us investigate them?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted to build a tool that keeps those questions visible instead of hiding uncertainty behind an attractive visualization.&lt;/p&gt;

&lt;p&gt;Ghost Shore does not claim to have discovered a vanished lake, reconstructed a lost landscape, or proved that a historical feature survives today. Its three cataloged candidates remain marked &lt;code&gt;pending_human_review&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That distinction is intentional.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  1. An interactive historical map explorer
&lt;/h3&gt;

&lt;p&gt;The frontend uses vanilla HTML, CSS, and JavaScript, with a lightweight Python backend.&lt;/p&gt;

&lt;p&gt;The viewer is designed around image-pixel coordinates rather than pretending that every point on an old map can be placed accurately on a modern street map.&lt;/p&gt;

&lt;p&gt;The original historical scan is currently excluded from the public repository while its redistribution rights are being verified. Consequently, a fresh deployment or clone may not have access to the scan. The repository documents this limitation rather than substituting an invented historical image.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. A catalog that preserves uncertainty
&lt;/h3&gt;

&lt;p&gt;Ghost Shore stores candidate features in JSON and validates their structure against a JSON schema.&lt;/p&gt;

&lt;p&gt;Each candidate can carry its own evidence, provenance, uncertainty, and review status. The catalog supports searching, filtering, and inspecting individual candidate dossiers.&lt;/p&gt;

&lt;p&gt;A label printed on a historical map is an observation about a document. It is not, by itself, proof of a feature's exact identity, extent, or present-day existence.&lt;/p&gt;

&lt;p&gt;That difference matters when building tools for historical research.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. An AI research assistant with explicit limits
&lt;/h3&gt;

&lt;p&gt;The assistant is designed to work with a candidate record and source excerpts supplied to it.&lt;/p&gt;

&lt;p&gt;Its documented validation checks include rejecting unsupported verbatim claims, unsupplied coordinates and URLs, and claims that a feature has disappeared. These are safeguards, not a guarantee that every possible error or misleading interpretation will be caught.&lt;/p&gt;

&lt;p&gt;The project has two paths:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mock mode:&lt;/strong&gt; deterministic, offline behavior that does not require a model API request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live mode:&lt;/strong&gt; an implemented integration with Thinking Machines Tinker, intended to use a language model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An important limitation: I have not verified successful live inference end to end. The web interface uses the mock path by default, so a response shown there must not be mistaken for a live model-generated result. I have not trained or fine-tuned a model.&lt;/p&gt;

&lt;p&gt;I prefer to make that limitation explicit rather than claim an AI capability I haven't demonstrated.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Touch Grass: taking research outside
&lt;/h3&gt;

&lt;p&gt;The field expedition companion connects desk research with structured observations in the real world.&lt;/p&gt;

&lt;p&gt;It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A 12-item observation checklist.&lt;/li&gt;
&lt;li&gt;Browser-local notes saved using &lt;code&gt;localStorage&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;A printable field worksheet.&lt;/li&gt;
&lt;li&gt;Safety guidance for daylight observations from public places.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The checklist covers topography, visible surface infrastructure, ecological and heritage indicators, and questions that may need further archival research.&lt;/p&gt;

&lt;p&gt;The safety rules are part of the design: stay on public paths, never trespass, and never enter storm drains, canal beds, construction sites, or dangerous terrain.&lt;/p&gt;

&lt;p&gt;Most importantly, an observation is not proof. A depression in a street, an unusual road name, or a visible drain cannot independently establish that a particular historical feature existed there.&lt;/p&gt;

&lt;p&gt;The goal is to gather better questions and observations—not to force a discovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  The uncomfortable engineering decision: don't fake precision
&lt;/h2&gt;

&lt;p&gt;I experimented with georeferencing the historical sheet using ground control points.&lt;/p&gt;

&lt;p&gt;The recorded trial had an RMSE of approximately 87.63 metres. The candidate regions also lie outside the area covered by those control points, meaning their locations would require extrapolation.&lt;/p&gt;

&lt;p&gt;That makes a confident modern map overlay difficult to justify.&lt;/p&gt;

&lt;p&gt;Instead of displaying precise-looking latitude and longitude coordinates, Ghost Shore keeps the candidate geometry in the source image's pixel space.&lt;/p&gt;

&lt;p&gt;This is not a solved georeferencing problem. It is a deliberate decision not to present uncertain results as accurate ones.&lt;/p&gt;

&lt;p&gt;Sometimes the most useful feature in a research tool is the claim it refuses to make.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned about AI guardrails
&lt;/h2&gt;

&lt;p&gt;A validator can help constrain what an assistant says, but it cannot make the underlying sources trustworthy.&lt;/p&gt;

&lt;p&gt;A statement may appear verbatim in a source excerpt and still be used out of context. A source itself may be incomplete or mistaken.&lt;/p&gt;

&lt;p&gt;That is why I see the validator as one layer of a research workflow, not an automatic truth detector.&lt;/p&gt;

&lt;p&gt;The deterministic mock mode is useful here, too: it allows the offline behavior and validation rules to be exercised without depending on a live model request. The live integration still needs an end-to-end verification.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it is built
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; HTML, CSS and vanilla JavaScript.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python standard-library HTTP server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data:&lt;/strong&gt; JSON feature catalog and JSON Schema validation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image tooling:&lt;/strong&gt; Pillow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tests:&lt;/strong&gt; Python &lt;code&gt;unittest&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI integration:&lt;/strong&gt; an offline mock path and an implemented, not yet end-to-end-verified, Tinker integration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The repository is open source under the MIT license for its code and documentation. The historical scan is a separate asset whose redistribution rights are still being checked.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed during challenge week?
&lt;/h2&gt;

&lt;p&gt;Ghost Shore existed before this challenge week, and I want to be transparent about that.&lt;/p&gt;

&lt;p&gt;During this week, I focused on preparing the project for public evaluation, reviewing its documentation and limitations, and working toward a deployable demonstration. This is not a claim that the entire project was created from scratch during the challenge.&lt;/p&gt;

&lt;p&gt;The challenge has also pushed me to think beyond whether an application runs: can another person understand its limits, inspect its evidence, and use it responsibly?&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/ohm-7643/ghost-shore-" rel="noopener noreferrer"&gt;https://github.com/ohm-7643/ghost-shore-&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository includes setup instructions, the feature catalog, schema validation, and the offline assistant example. Full map-viewer functionality requires a lawfully reusable copy of the historical scan at the documented path.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://ghost-shore-r449.onrender.com" rel="noopener noreferrer"&gt;https://ghost-shore-r449.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Contributions that would help include archival sources, better-supported control points, human review of candidate features, tests for the validator, and improvements to the accessibility and usability of the field worksheet.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Verify the live AI integration end to end.&lt;/li&gt;
&lt;li&gt;Improve georeferencing with additional and held-out control points.&lt;/li&gt;
&lt;li&gt;Build a more explicit human-review workflow for candidate features.&lt;/li&gt;
&lt;li&gt;Resolve the scan's redistribution rights or find a suitable reusable source.&lt;/li&gt;
&lt;li&gt;Test the field worksheet in actual use and improve it based on feedback.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  One question for you
&lt;/h2&gt;

&lt;p&gt;If you were building an AI tool around uncertain historical evidence, &lt;strong&gt;where would you make it say “I don't know” most clearly—and how would you do that without making the tool useless?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'd love to hear how other developers approach uncertainty, provenance, and responsible AI in real-world projects.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>I built a local AI workout planner for my gym-obsessed friend</title>
      <dc:creator>Ohm Anand</dc:creator>
      <pubDate>Sun, 04 Oct 2026 20:47:55 +0000</pubDate>
      <link>https://dev.to/ohmanand7643/i-built-a-local-ai-workout-planner-for-my-gym-obsessed-friend-1fac</link>
      <guid>https://dev.to/ohmanand7643/i-built-a-local-ai-workout-planner-for-my-gym-obsessed-friend-1fac</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;My friend Ritesh is a proper gym guy.&lt;/p&gt;

&lt;p&gt;He already enjoys lifting and spends a lot of time training, so motivation isn't really his problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structure is.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Some days he'd train chest, another day triceps, and there wasn't always a clear structure for how his muscle groups should fit together across the week.&lt;/p&gt;

&lt;p&gt;Legs were another problem. He didn't know many leg exercises, so they were easier to neglect.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;LiftMate&lt;/strong&gt; around that problem.&lt;/p&gt;

&lt;p&gt;LiftMate asks for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Training goal&lt;/li&gt;
&lt;li&gt;Experience level&lt;/li&gt;
&lt;li&gt;Training days&lt;/li&gt;
&lt;li&gt;Session duration&lt;/li&gt;
&lt;li&gt;Available equipment&lt;/li&gt;
&lt;li&gt;Muscle priorities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It then builds a structured workout around those constraints.&lt;/p&gt;

&lt;p&gt;But I didn't want it to be just another app that generates a workout and leaves you there.&lt;/p&gt;

&lt;p&gt;The actual flow is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plan → Train → Log → Progress&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can start the workout, log every set, complete the session and get a recommendation for what to do next time.&lt;/p&gt;

&lt;p&gt;I showed the working version to Ritesh, and the project was built around the way he actually trains rather than around a generic fitness-app idea.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;&lt;a href="https://youtu.be/8RSpDZ2O5Mw" rel="noopener noreferrer"&gt;Watch the LiftMate Demo&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The demo shows the complete flow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Onboarding → Personalized Workout → Local AI Personalization → Active Workout → Set Logging → Completion → Progression&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A look inside LiftMate
&lt;/h3&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%2Fyj671flmlozsjvboyf4j.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%2Fyj671flmlozsjvboyf4j.png" alt=" " width="800" height="500"&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%2F3qcint9y7bxfme2e9n8u.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%2F3qcint9y7bxfme2e9n8u.png" alt=" " width="800" height="452"&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%2Ftdqxglqtoqy00tlmvlpy.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%2Ftdqxglqtoqy00tlmvlpy.png" alt=" " width="800" height="451"&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%2Flewrrh5tx0qbdgon6jwu.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%2Flewrrh5tx0qbdgon6jwu.png" alt=" " width="800" height="451"&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%2Forgu2qt1654zuslqrgs0.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%2Forgu2qt1654zuslqrgs0.png" alt=" " width="799" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The screenshots show the onboarding flow, personalized workout, AI explanation, active workout and completed session.&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/ohm-7643/LiftMate" rel="noopener noreferrer"&gt;https://github.com/ohm-7643/LiftMate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository contains the complete LiftMate application, including the frontend, backend, database, workout planner, AI integration and validation logic.&lt;/p&gt;

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

&lt;p&gt;The most important design decision I made was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;I didn't let the AI design the entire workout.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;LiftMate has a deterministic workout planner that handles the parts that should be predictable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exercise selection&lt;/li&gt;
&lt;li&gt;Equipment constraints&lt;/li&gt;
&lt;li&gt;Muscle-group priorities&lt;/li&gt;
&lt;li&gt;Sets and reps&lt;/li&gt;
&lt;li&gt;Rest periods&lt;/li&gt;
&lt;li&gt;Session duration&lt;/li&gt;
&lt;li&gt;Weekly training structure&lt;/li&gt;
&lt;li&gt;Progression&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then I added &lt;strong&gt;Qwen3-8B&lt;/strong&gt;, running locally through &lt;strong&gt;Ollama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Qwen has a much smaller job.&lt;/p&gt;

&lt;p&gt;It personalizes the workout.&lt;/p&gt;

&lt;p&gt;The model can prioritize a couple of exercises based on the user's goals and provide a short coaching note.&lt;/p&gt;

&lt;p&gt;The AI response is then validated before it reaches the user.&lt;/p&gt;

&lt;p&gt;LiftMate checks that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The exercises are actually allowed&lt;/li&gt;
&lt;li&gt;The user's equipment supports them&lt;/li&gt;
&lt;li&gt;There are no duplicates&lt;/li&gt;
&lt;li&gt;They fit the planned focus&lt;/li&gt;
&lt;li&gt;The prescriptions stay within allowed limits&lt;/li&gt;
&lt;li&gt;The response has the expected structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the local model fails, times out or returns something invalid, LiftMate falls back to the deterministic workout.&lt;/p&gt;

&lt;p&gt;So the architecture is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User Profile → Deterministic Planner → Qwen3-8B → Validation → Workout&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That separation was intentional.&lt;/p&gt;

&lt;p&gt;I wanted the model to make the experience more personal without making the whole application depend on whatever the model happens to generate.&lt;/p&gt;

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

&lt;p&gt;I could have called a closed AI API and asked it to generate a workout.&lt;/p&gt;

&lt;p&gt;That would have been easier.&lt;/p&gt;

&lt;p&gt;But for LiftMate, running an open-weight model locally made more sense.&lt;/p&gt;

&lt;p&gt;With &lt;strong&gt;Qwen3-8B running through Ollama&lt;/strong&gt;, the AI personalization can happen on the user's own machine. A fitness profile doesn't have to be sent to a third-party AI provider just to decide which exercises to prioritize.&lt;/p&gt;

&lt;p&gt;It also gives me control.&lt;/p&gt;

&lt;p&gt;I can inspect the prompts, change the rules, swap the model, or experiment with another open model without rebuilding the whole application around one provider.&lt;/p&gt;

&lt;p&gt;More importantly, I don't have to blindly trust the model.&lt;/p&gt;

&lt;p&gt;The deterministic planner remains responsible for the actual workout structure, while the model adds personalization on top.&lt;/p&gt;

&lt;p&gt;That was probably the biggest thing I learned from this project:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Open-source AI doesn't have to mean letting the model do everything.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For LiftMate:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI personalizes.&lt;br&gt;&lt;br&gt;
Rules keep it reliable.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;I didn't use DevRelay for this project, so I'm leaving this optional section out.&lt;/p&gt;

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

&lt;p&gt;No partner category claimed.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>sdsdfvdvfrgbt</title>
      <dc:creator>Ohm Anand</dc:creator>
      <pubDate>Sat, 03 Oct 2026 08:56:06 +0000</pubDate>
      <link>https://dev.to/ohmanand7643/sdsdfvdvfrgbt-pd8</link>
      <guid>https://dev.to/ohmanand7643/sdsdfvdvfrgbt-pd8</guid>
      <description></description>
    </item>
  </channel>
</rss>
