<?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: Saikat Das</title>
    <description>The latest articles on DEV Community by Saikat Das (@saikatdash).</description>
    <link>https://dev.to/saikatdash</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%2F4152267%2F3775a65b-c4b3-446a-807a-d518458da1cf.png</url>
      <title>DEV Community: Saikat Das</title>
      <link>https://dev.to/saikatdash</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saikatdash"/>
    <language>en</language>
    <item>
      <title>Slowday: A Little Rewards Shelf That Remembers for You</title>
      <dc:creator>Saikat Das</dc:creator>
      <pubDate>Mon, 26 Oct 2026 07:04:37 +0000</pubDate>
      <link>https://dev.to/saikatdash/slowday-a-little-rewards-shelf-that-remembers-for-you-9h4</link>
      <guid>https://dev.to/saikatdash/slowday-a-little-rewards-shelf-that-remembers-for-you-9h4</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;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I keep finding coupons, loyalty points, and little reward offers in emails and messages, then forgetting about them until they expire.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Slowday&lt;/strong&gt;, a calm rewards shelf that helps people keep those offers in one place and remember the details that matter.&lt;/p&gt;

&lt;p&gt;Users can paste an offer email or enter the details themselves. AI can extract the merchant, reward name, value, expiry date, redemption link, and instructions. The result is a draft: users can review and edit it before saving.&lt;/p&gt;

&lt;p&gt;Slowday also includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An overview of active and redeemed rewards&lt;/li&gt;
&lt;li&gt;An “Expiring soon” view&lt;/li&gt;
&lt;li&gt;Search across saved offers&lt;/li&gt;
&lt;li&gt;A way to mark rewards as redeemed and move them back to the to-do list&lt;/li&gt;
&lt;li&gt;Manual entry when AI is unavailable&lt;/li&gt;
&lt;li&gt;Browser storage, with no account required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is to make using a reward take less effort than remembering where you saved it.&lt;/p&gt;

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

&lt;p&gt;link : &lt;a href="https://reward-redemption.netlify.app/" rel="noopener noreferrer"&gt;https://reward-redemption.netlify.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The React frontend is deployed on Netlify. The screenshot currently shows the AI service as unavailable because the separate Ollama backend still needs to be connected. Manual entry is available in the meantime.&lt;/p&gt;

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/SaikatDash" rel="noopener noreferrer"&gt;
        SaikatDash
      &lt;/a&gt; / &lt;a href="https://github.com/SaikatDash/reward-redemption-day" rel="noopener noreferrer"&gt;
        reward-redemption-day
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &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;Slowday — Reward Inbox&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;A calm, public-ready rewards shelf that does the remembering for you.&lt;/strong&gt; Paste a coupon, points notice, or offer email and hosted AI pulls out the merchant, value, expiry, and redemption steps. Review the result, save it, then mark the reward redeemed when you use it.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What happens to your data&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Saved rewards stay in the visitor's browser storage. The site does not create accounts or send the saved shelf to its server.&lt;/li&gt;
&lt;li&gt;Offer text is sent to the configured AI endpoint only when the visitor selects &lt;strong&gt;Extract details&lt;/strong&gt;. It is processed by the operator's chosen inference provider; configure that provider's retention and privacy policies before inviting the public.&lt;/li&gt;
&lt;li&gt;The model returns a draft. Visitors review and edit the details before saving. The extractor is instructed to leave uncertain expiry dates blank.&lt;/li&gt;
&lt;li&gt;The browser makes no third-party analytics, font, or tracking requests. The AI service is…&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/SaikatDash/reward-redemption-day" 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;Slowday’s frontend is built with React and Vite. A small Python API handles AI extraction, and the browser stores each visitor’s rewards locally.&lt;/p&gt;

&lt;p&gt;For extraction, I configured the API to use &lt;strong&gt;Qwen2.5 3B&lt;/strong&gt; through &lt;strong&gt;Ollama’s OpenAI-compatible API&lt;/strong&gt;. When someone clicks &lt;strong&gt;Extract details&lt;/strong&gt;, the API sends the offer text to the configured model and asks for structured JSON. The model is instructed to leave unclear expiry dates blank. Users can check and edit the returned fields before saving anything.&lt;/p&gt;

&lt;p&gt;The Docker Compose setup runs the API and Ollama together while keeping Ollama on the private container network. For the Netlify deployment, the frontend needs the API URL in &lt;code&gt;VITE_API_BASE_URL&lt;/code&gt;, and the backend needs the Netlify site origin in &lt;code&gt;ALLOWED_ORIGINS&lt;/code&gt;. Connecting that backend is the remaining step to enable AI extraction on the public demo.&lt;/p&gt;

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

&lt;p&gt;Open-weight AI gives Slowday a model that can run on infrastructure I control. I can choose where offer text is processed and change the model without rewriting the user interface or tying the app to one inference provider.&lt;/p&gt;

&lt;p&gt;The data boundary is deliberate. Saved rewards stay in the visitor’s browser. If the visitor asks AI to read an offer, that text is sent to the site’s Ollama server for extraction. This keeps reward lists out of a shared application database while making the AI step clear to the user.&lt;/p&gt;

&lt;p&gt;Self-hosting avoids a per-request model-provider API dependency, but it does not make inference cost-free: the server still needs storage and compute. The model also creates a draft, not a bookkeeping decision, so people stay in control of what they save.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;After that, I want to see how well the fields work on real coupon and loyalty emails, especially whether the expiry date and redemption instructions are easy to confirm. I’d also like to learn which reminders or organization features would help people use their rewards without adding more noise.&lt;/p&gt;

&lt;p&gt;Disclosure: AI helped draft this post; I’ll review the details before publishing.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>PocketLedger: A Private AI Expense Tracker for Freelancers</title>
      <dc:creator>Saikat Das</dc:creator>
      <pubDate>Sun, 18 Oct 2026 07:04:39 +0000</pubDate>
      <link>https://dev.to/saikatdash/pocketledger-a-private-ai-expense-tracker-for-freelancers-4704</link>
      <guid>https://dev.to/saikatdash/pocketledger-a-private-ai-expense-tracker-for-freelancers-4704</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%2Fdqotkmgu9otnau2z3ux2.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%2Fdqotkmgu9otnau2z3ux2.png" alt=" " width="800" height="405"&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;Freelancers are constantly collecting receipts from email, camera rolls, and wallets. By the time tax season arrives, they have to remember what each purchase was, which client it belonged to, and whether it was already recorded.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;PocketLedger&lt;/strong&gt;, a private, local-first expense tracker for freelancers.&lt;/p&gt;

&lt;p&gt;PocketLedger lets users upload a receipt image or paste receipt text. Local AI extracts the merchant, date, amount, currency, category, and description. Before anything is saved, the user can review and edit every field, assign a client or project, and mark the expense as business deductible.&lt;/p&gt;

&lt;p&gt;The app also includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A searchable expense ledger&lt;/li&gt;
&lt;li&gt;Monthly spending summaries&lt;/li&gt;
&lt;li&gt;Category breakdowns&lt;/li&gt;
&lt;li&gt;Multi-currency expense records&lt;/li&gt;
&lt;li&gt;CSV export for bookkeepers&lt;/li&gt;
&lt;li&gt;Manual expense entry when AI is unavailable&lt;/li&gt;
&lt;li&gt;Local SQLite storage with no cloud account&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PocketLedger is designed for independent designers, developers, photographers, consultants, and other solo business owners who want a simpler alternative to heavyweight accounting software and cloud-based receipt tools.&lt;/p&gt;

&lt;p&gt;The product idea is a one-time paid desktop setup with optional onboarding and support. My next step is to test the workflow with a real freelancer and learn which parts of receipt capture, client tracking, and export are most valuable.&lt;/p&gt;

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

&lt;p&gt;PocketLedger runs locally at:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://saikatpocketledger.netlify.app" rel="noopener noreferrer"&gt;https://saikatpocketledger.netlify.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The demo flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open PocketLedger.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add an expense&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Upload a receipt or paste receipt text.&lt;/li&gt;
&lt;li&gt;Let the local model create an extraction draft.&lt;/li&gt;
&lt;li&gt;Review and correct the fields.&lt;/li&gt;
&lt;li&gt;Save the expense to the local ledger.&lt;/li&gt;
&lt;li&gt;Search the expense or export the ledger as CSV.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Because PocketLedger is designed around privacy, it is intentionally a local application rather than a hosted demo.&lt;/p&gt;

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

&lt;p&gt;GitHub repository:&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/SaikatDash/sideHustlers" rel="noopener noreferrer"&gt;https://github.com/SaikatDash/sideHustlers&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;PocketLedger is built with Python's standard library, SQLite, HTML, CSS, and vanilla JavaScript.&lt;/p&gt;

&lt;p&gt;For receipt understanding, I used &lt;strong&gt;Qwen2.5-VL 3B&lt;/strong&gt; through &lt;strong&gt;Ollama&lt;/strong&gt;. The application sends the receipt text or image to the local Ollama installation with a structured JSON schema. The model returns a draft containing fields such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vendor&lt;/li&gt;
&lt;li&gt;Date&lt;/li&gt;
&lt;li&gt;Amount&lt;/li&gt;
&lt;li&gt;Currency&lt;/li&gt;
&lt;li&gt;Category&lt;/li&gt;
&lt;li&gt;Description&lt;/li&gt;
&lt;li&gt;Review status&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The draft is displayed in an editable form so that the user remains in control. An expense is not added to the ledger until the user explicitly saves it.&lt;/p&gt;

&lt;p&gt;The app does not require a Python package installation. Once Python, Ollama, and the vision model are installed, PocketLedger can run locally and continue working without a hosted AI API.&lt;/p&gt;

&lt;p&gt;Receipt images are processed in memory and discarded after extraction. Only the fields approved by the user are saved to SQLite.&lt;/p&gt;

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

&lt;p&gt;Receipts contain sensitive information about spending habits, vendors, dates, and sometimes addresses or payment details. Sending every receipt to a cloud AI service creates privacy concerns and may introduce an ongoing cost for every scan.&lt;/p&gt;

&lt;p&gt;Using an open-weight model locally makes PocketLedger possible without requiring users to upload their financial documents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Receipt images stay on the user's computer.&lt;/li&gt;
&lt;li&gt;There is no per-receipt API charge.&lt;/li&gt;
&lt;li&gt;The app can work offline after the model is downloaded.&lt;/li&gt;
&lt;li&gt;Users can choose a compatible vision model.&lt;/li&gt;
&lt;li&gt;The prompt and extraction schema can be adapted.&lt;/li&gt;
&lt;li&gt;The AI creates a draft rather than making an irreversible bookkeeping decision.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open innovation also gives users more control over the technology behind their workflow. They are not locked into one hosted provider, pricing model, or opaque extraction system.&lt;/p&gt;

&lt;p&gt;The trade-off is that users need enough local storage and hardware to run the model, and AI-generated results still need to be reviewed. That trade-off is acceptable for a privacy-focused tool where the user approves every expense before it is recorded.&lt;/p&gt;

&lt;h2&gt;
  
  
  My First User
&lt;/h2&gt;

&lt;p&gt;I have not yet completed a formal first-user trial. The next validation step is to watch a freelancer use PocketLedger with real receipts and measure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How long it takes to record an expense&lt;/li&gt;
&lt;li&gt;How often the AI extraction needs correction&lt;/li&gt;
&lt;li&gt;Whether client and project tracking is useful&lt;/li&gt;
&lt;li&gt;Whether the CSV export fits their bookkeeping workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;Future improvements could include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better extraction for difficult receipt layouts&lt;/li&gt;
&lt;li&gt;Receipt history and expense editing&lt;/li&gt;
&lt;li&gt;More flexible client and project management&lt;/li&gt;
&lt;li&gt;Optional encrypted local storage&lt;/li&gt;
&lt;li&gt;Additional export formats&lt;/li&gt;
&lt;li&gt;A guided onboarding experience for selecting compatible local models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PocketLedger is a small experiment in making everyday bookkeeping more private, understandable, and manageable for solo freelancers.&lt;/p&gt;

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