DEV Community

Cover image for Slowday: A Little Rewards Shelf That Remembers for You
Saikat Das
Saikat Das

Posted on

Slowday: A Little Rewards Shelf That Remembers for You

Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady Submission 🦥

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady.

What I Built

I keep finding coupons, loyalty points, and little reward offers in emails and messages, then forgetting about them until they expire.

I built Slowday, a calm rewards shelf that helps people keep those offers in one place and remember the details that matter.

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.

Slowday also includes:

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

The goal is to make using a reward take less effort than remembering where you saved it.

Demo

link : https://reward-redemption.netlify.app/

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.

Code

Slowday — Reward Inbox

A calm, public-ready rewards shelf that does the remembering for you. 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.

What happens to your data

  • Saved rewards stay in the visitor's browser storage. The site does not create accounts or send the saved shelf to its server.
  • Offer text is sent to the configured AI endpoint only when the visitor selects Extract details. It is processed by the operator's chosen inference provider; configure that provider's retention and privacy policies before inviting the public.
  • The model returns a draft. Visitors review and edit the details before saving. The extractor is instructed to leave uncertain expiry dates blank.
  • The browser makes no third-party analytics, font, or tracking requests. The AI service is…

How I Built It

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.

For extraction, I configured the API to use Qwen2.5 3B through Ollama’s OpenAI-compatible API. When someone clicks Extract details, 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.

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 VITE_API_BASE_URL, and the backend needs the Netlify site origin in ALLOWED_ORIGINS. Connecting that backend is the remaining step to enable AI extraction on the public demo.

Why Does Open Innovation Matter?

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.

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.

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.

Next Steps

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.

Disclosure: AI helped draft this post; I’ll review the details before publishing.

Top comments (0)