<?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: Thilakasiri H.A.B.D</title>
    <description>The latest articles on DEV Community by Thilakasiri H.A.B.D (@bin4yi).</description>
    <link>https://dev.to/bin4yi</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%2F3956221%2F83385100-0ced-4d7a-a632-92ed7bd64128.jpg</url>
      <title>DEV Community: Thilakasiri H.A.B.D</title>
      <link>https://dev.to/bin4yi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bin4yi"/>
    <language>en</language>
    <item>
      <title>Mathaka (Memory): “Did I take my medicine?” - answered by open AI on an old phone</title>
      <dc:creator>Thilakasiri H.A.B.D</dc:creator>
      <pubDate>Sun, 04 Oct 2026 11:30:06 +0000</pubDate>
      <link>https://dev.to/bin4yi/mathaka-memory-did-i-take-my-medicine-answered-by-open-ai-on-an-old-phone-5fc4</link>
      <guid>https://dev.to/bin4yi/mathaka-memory-did-i-take-my-medicine-answered-by-open-ai-on-an-old-phone-5fc4</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;In many Sri Lankan homes, the hardest medicine question is not &lt;strong&gt;when&lt;/strong&gt;. It is &lt;strong&gt;"did I already take it?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I built this for my grandmother. She has mild dementia, and she often forgets her pills. Some days she misses a dose. Other days she isn't sure, so she asks us again and again: "Did I take my medicine?" We aren't always home to answer. I wanted her phone to give her that answer: kindly, the same way every time, and without guessing.&lt;/p&gt;

&lt;p&gt;We tried pill reminder apps, but none of them fit her:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;They only say &lt;em&gt;when&lt;/em&gt;.&lt;/strong&gt; The alarm rings and she takes the pills. Ten minutes later she can't remember doing it. Then she either skips the dose or takes it twice, and both are dangerous.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They are made for young people.&lt;/strong&gt; Small text, menus, swipes and settings confuse her. One wrong tap and the reminder is gone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They don't speak her language.&lt;/strong&gt; Most are in English only. She reads and speaks Sinhala.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They don't know her pills.&lt;/strong&gt; Her clinic gives loose tablets in small paper envelopes, often with no label. An app that shows drug names doesn't help when she can't match a name to a white tablet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They need the internet and an account,&lt;/strong&gt; and they send her health data to someone's cloud. Her phone is old and cheap, and the signal at home isn't always good.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built &lt;strong&gt;Mathaka&lt;/strong&gt; (මතකය, "memory" in Sinhala). It is a medicine helper for older people with memory loss. It works in Sinhala, Tamil and English. It is one Android app with two roles:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the elder's phone (this can be an old, cheap phone):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One gentle reminder, in the family's own recorded voice if they want.&lt;/li&gt;
&lt;li&gt;Only the pills for &lt;em&gt;this&lt;/em&gt; time of day, shown as big pictures with what they are for ("sugar medicine"), never a drug name.&lt;/li&gt;
&lt;li&gt;A big button: &lt;strong&gt;"Did I take my medicine?"&lt;/strong&gt; The app answers from its own log, in the same calm words every time: &lt;em&gt;"Yes, Ammi. You took your morning medicine at 8:00. The next one is at lunch time."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;double-dose guard.&lt;/strong&gt; If she tries to take it again, nothing is logged twice, and the app tells her kindly that she already took it.&lt;/li&gt;
&lt;li&gt;Huge text, 7:1 contrast, a high-contrast theme, a real clock, "Say it again", and no swipes or double taps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;On the family's phone:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up the medicines once, by scanning the prescription and photographing each pill.&lt;/li&gt;
&lt;li&gt;See the day at a glance: doses taken, missed doses, low stock, the clinic date and a week of history.&lt;/li&gt;
&lt;li&gt;Get alerts over home Wi-Fi, or by plain SMS when there is no internet.&lt;/li&gt;
&lt;li&gt;Print a "fridge card" with every pill on paper, for days when the phone is off.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is also an optional &lt;strong&gt;Arduino pill box.&lt;/strong&gt; The slot that is due lights up, and pressing it means "I took it".&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%2Fleiew1z4usbuf0imi6q3.jpg" 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%2Fleiew1z4usbuf0imi6q3.jpg" alt="Heavy AI once, light AI every day, no cloud" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Home&lt;/th&gt;
&lt;th&gt;This slot's pills&lt;/th&gt;
&lt;th&gt;"Did I take it?"&lt;/th&gt;
&lt;th&gt;Family dashboard&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&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%2F21ga5sr4rtel7qs9gewj.png" width="390" height="844"&gt;&lt;/td&gt;
&lt;td&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%2Fdptpzmw1yso7ec7i0ro5.png" width="390" height="844"&gt;&lt;/td&gt;
&lt;td&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%2F9bg8i7m3gv0j0fvg6va5.png" width="390" height="844"&gt;&lt;/td&gt;
&lt;td&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%2F6b1cepxw2lqpv5dwkwhb.png" width="390" height="844"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/mvovuniIoKU" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The 4.5-minute video shows the elder phone, the family phone, how the AI works, the pill measuring, the Arduino box and the test results.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Try it in a browser:&lt;/strong&gt; clone the repo, then run &lt;code&gt;npm install&lt;/code&gt; and &lt;code&gt;npm run web&lt;/code&gt;. Demo mode fills in a sample family and a week of history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Try the Arduino box with no hardware:&lt;/strong&gt; open the &lt;a href="https://wokwi.com/projects/new/esp32" rel="noopener noreferrer"&gt;Wokwi ESP32 simulator&lt;/a&gt;. Paste in &lt;code&gt;firmware/esp32/mathaka_box/mathaka_box.ino&lt;/code&gt; and &lt;code&gt;diagram.json&lt;/code&gt;, then type &lt;code&gt;LIGHT 1&lt;/code&gt; in the serial monitor.&lt;/li&gt;
&lt;/ul&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/Bin4yi" rel="noopener noreferrer"&gt;
        Bin4yi
      &lt;/a&gt; / &lt;a href="https://github.com/Bin4yi/Mathaka" rel="noopener noreferrer"&gt;
        Mathaka
      &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;Mathaka (මතකය)&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;A dementia-friendly medicine helper for older people in Sri Lanka.&lt;/strong&gt; Android first, Sinhala / Tamil / English. All AI runs &lt;strong&gt;on the phones&lt;/strong&gt;, with open-weight models. There is no cloud.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A reminder is not remembering.&lt;/strong&gt; Alarm apps say &lt;em&gt;when&lt;/em&gt;. Mathaka also answers &lt;em&gt;whether you already took it&lt;/em&gt;, and stops a second dose.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Two open AIs. Gemma can see. Laya decides but cannot speak. Grandma only hears words her family wrote.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; prototype for the DEV Hacktoberfest "Build for a Friend" challenge. &lt;strong&gt;Not a medical device.&lt;/strong&gt; See &lt;a href="https://github.com/Bin4yi/Mathaka#honest-limits" rel="noopener noreferrer"&gt;Honest limits&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Demo video (4.5 min)&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/Bin4yi/Mathaka/docs/media/mathaka-demo.mp4" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FBin4yi%2FMathaka%2FHEAD%2Fdocs%2Fmedia%2Fposter.jpg" alt="Mathaka demo video"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;▶ &lt;strong&gt;&lt;a href="https://github.com/Bin4yi/Mathaka/docs/media/mathaka-demo.mp4" rel="noopener noreferrer"&gt;Watch the demo (MP4)&lt;/a&gt;&lt;/strong&gt;. It covers the elder flow, the family phone, the on-device AI, pill vision, the Arduino box and the evaluation
The video is made from HTML with &lt;a href="https://hyperframes.heygen.com" rel="nofollow noopener noreferrer"&gt;HyperFrames&lt;/a&gt;. Its source is in &lt;a href="https://github.com/Bin4yi/Mathaka/videos/mathaka-promo" rel="noopener noreferrer"&gt;&lt;code&gt;videos/mathaka-promo&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Screenshots&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Real screens from the web build (&lt;code&gt;npm run web&lt;/code&gt;…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Bin4yi/Mathaka" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;It's an Expo / React Native app (TypeScript), a shared pure-TypeScript core, an ESP32 Arduino sketch, an optional Python laptop helper, and an evaluation folder with frozen test sets. It has 124 automated tests.&lt;/p&gt;

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

&lt;p&gt;My rule was: &lt;strong&gt;heavy AI once, light AI every day, and no cloud anywhere.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Setup happens once, on the family phone, with Gemma
&lt;/h3&gt;

&lt;p&gt;A family member photographs the prescription. &lt;strong&gt;Gemma 3 4B&lt;/strong&gt; (vision, Q4_K_M GGUF) runs &lt;em&gt;on the phone&lt;/em&gt; through &lt;a href="https://github.com/mybigday/llama.rn" rel="noopener noreferrer"&gt;llama.rn&lt;/a&gt;, which is llama.cpp for React Native. It reads the prescription into rows. It also reads the number printed on each pill and writes a short description for the family.&lt;/p&gt;

&lt;p&gt;Clinic books are handwritten, so I don't trust the model blindly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every answer must fit a &lt;strong&gt;JSON schema&lt;/strong&gt;. It's checked with zod and retried once.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A person confirms every row&lt;/strong&gt; before anything is used.&lt;/li&gt;
&lt;li&gt;Gemma is &lt;strong&gt;never loaded on the elder's phone&lt;/strong&gt;. The code refuses.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. The pill is measured, not guessed
&lt;/h3&gt;

&lt;p&gt;You put each pill on a printed mat with four ArUco markers and a grey patch. Then plain TypeScript (no big model) does the work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;finds the markers and flattens the perspective&lt;/li&gt;
&lt;li&gt;converts pixels to millimetres&lt;/li&gt;
&lt;li&gt;fixes the colour using the grey patch&lt;/li&gt;
&lt;li&gt;cuts out the pill and measures its size, shape, colour, two-colour halves and score line&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the demo pill it measured &lt;strong&gt;19.2 × 9.2 mm&lt;/strong&gt;, oblong, white, with a score line, in about 200 ms. The same code runs on the phone, in the browser and in the tests.&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%2Fwzmp0h50bwxhl9qeh4fk.jpg" 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%2Fwzmp0h50bwxhl9qeh4fk.jpg" alt="Pill vision: photo → top-down view → pill" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. One file moves the setup to the elder's phone
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;second person&lt;/strong&gt; must approve the whole setup. Then it is saved as one file (&lt;code&gt;.mtk&lt;/code&gt;, a zip with a SHA-256 hash for every part). You can send it by Bluetooth, a USB cable or WhatsApp-to-yourself. The elder's phone rejects any file that is broken, changed, older or not approved. There's no account and no server.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. The AI that is not allowed to speak
&lt;/h3&gt;

&lt;p&gt;This is the part I care about most. &lt;strong&gt;No AI ever writes the words the elder hears.&lt;/strong&gt; Every sentence is a fixed template in Sinhala, Tamil or English, filled in with facts from her own log. A unit test blocks words like "take another".&lt;/p&gt;

&lt;p&gt;For understanding what she &lt;em&gt;means&lt;/em&gt; (like "mama beheth biwwada?", Singlish for "did I take my medicine?"), I tested &lt;strong&gt;&lt;a href="https://huggingface.co/convaiinnovations/laya" rel="noopener noreferrer"&gt;Laya&lt;/a&gt;&lt;/strong&gt;. It's an open, &lt;em&gt;non-generative&lt;/em&gt; decision model: it can only pick one option from a short list and give a probability. It cannot write a sentence.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Alerts without a cloud
&lt;/h3&gt;

&lt;p&gt;When a dose is missed, the family finds out:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;over &lt;strong&gt;home Wi-Fi&lt;/strong&gt; (the two phones are paired once with a QR code)&lt;/li&gt;
&lt;li&gt;by &lt;strong&gt;plain SMS&lt;/strong&gt; if Wi-Fi fails, with no mobile data needed&lt;/li&gt;
&lt;li&gt;by &lt;strong&gt;retrying&lt;/strong&gt; in the background until the alert gets through&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  6. The Arduino pill box
&lt;/h3&gt;

&lt;p&gt;An &lt;strong&gt;ESP32&lt;/strong&gt; with 4 LEDs and 4 buttons talks to the phone over Bluetooth LE (or USB serial). The phone sends &lt;code&gt;LIGHT 1&lt;/code&gt;, and the box sends back &lt;code&gt;PRESS 1&lt;/code&gt;. &lt;strong&gt;The box never decides anything.&lt;/strong&gt; A press goes through the same double-dose guard as the screen.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the tests say
&lt;/h3&gt;

&lt;p&gt;I froze the test sets before measuring.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Test&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;"Did I take it?" answers (40 hand-written cases)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;40 / 40&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Double doses stopped&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4 / 4&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unsafe sentences said to the elder&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pill matching, known pills found (synthetic photos)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;100%&lt;/strong&gt; (colour alone: 62%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pill matching, new pills rejected&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;100%&lt;/strong&gt; (colour alone: 92%)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The honest part: &lt;strong&gt;Laya, without training, acted wrongly on about 1 in 4 Sinhala and Singlish questions.&lt;/strong&gt; So it stays switched off. The elder's phone keeps big buttons, which can't misunderstand her. I'd rather ship buttons than a confident wrong answer to someone with dementia. I've prepared a fine-tune on Sinhala care phrases as the next step.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy that is real.&lt;/strong&gt; Medicine photos, the dose log and a family member's recorded voice never leave the two phones. With open weights I can &lt;em&gt;check&lt;/em&gt; that, instead of trusting a privacy policy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It works in a village.&lt;/strong&gt; After a one-time model download, everything runs offline. Alerts go by plain SMS. A cloud API stops working when the signal does.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No monthly bill for a pensioner.&lt;/strong&gt; Running the model costs nothing per use, and the elder's phone can be old and cheap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I could measure the risk.&lt;/strong&gt; Because Laya is open, I could test exactly how often it would act wrongly &lt;em&gt;before&lt;/em&gt; letting it near a vulnerable person. That test is the reason it's switched off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I could change what matters for us:&lt;/strong&gt; Sinhala and Tamil templates, a pill pipeline built for loose clinic pills in paper envelopes, and later a model fine-tuned for Singlish that I can give back.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;I built Mathaka with &lt;strong&gt;Claude Code&lt;/strong&gt; as my pair programmer, working on Windows with no Android emulator. We used the web build and headless Chrome to test the screens. The demo video was also made with code: &lt;a href="https://hyperframes.heygen.com" rel="noopener noreferrer"&gt;HyperFrames&lt;/a&gt; HTML scenes, an offline Kokoro voice and MusicGen music, all in &lt;code&gt;videos/mathaka-promo&lt;/code&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; Gemma 3 4B vision runs on the family phone through llama.rn. It reads prescriptions and pill imprints and writes pill descriptions, always behind a JSON schema and a human check.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Arduino:&lt;/strong&gt; the optional pill box is an Arduino sketch for the ESP32 (Bluetooth LE + USB serial), with a Wokwi diagram so anyone can try it without hardware.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It's a prototype. &lt;strong&gt;It is not a medical device&lt;/strong&gt;, and doctors haven't tested it.&lt;/li&gt;
&lt;li&gt;A pill photo can't safely identify a medicine. Mathaka uses it only as an extra check, after the schedule and the box slot.&lt;/li&gt;
&lt;li&gt;The pill numbers come from synthetic photos so far. I'm collecting real ones.&lt;/li&gt;
&lt;li&gt;It doesn't replace a carer. It gives the carer one less worry.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;Thanks to the Gemma, llama.cpp / llama.rn, Laya, js-aruco2, Expo and HyperFrames teams. The photos in the video are from Wikimedia Commons: Ayena (public domain), Stevepb (CC0), trokilinochchi (CC BY 2.0) and Edwiyanto (CC BY-SA 4.0).&lt;/p&gt;

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