Skip to content
Mory

Mory

Remember You, Remember Me, Our Memory

Created on 5th September 2026

•

Mory

Mory

Remember You, Remember Me, Our Memory

The problem Mory solves

Millions of elderly people in Southeast Asia are cared for by families who live far away and caregivers who lack efficient tools. Three problems go unsolved every day:

1. Medication confusion — Elderly users manage multiple medicines with complex instructions in languages they may not read well. Missed doses and misread labels are common and dangerous.

2. Social isolation and language barriers — Most AI companions only speak English or Mandarin. Grandparents who speak Cantonese, Hokkien, Hakka, or Bahasa Melayu are left out entirely.

3. Health misinformation — Elderly users regularly receive unverified health claims through WhatsApp groups with no way to fact-check them.

MORY solves all three: a voice-first elderly companion in 6 Southeast Asian dialects, an AI-powered medicine scanner that reads labels and explains what each medicine does in plain language, and a Health Fact Checker that uses Gonka's decentralised multi-model consensus to return a verified Truth Score for any health claim — with transparent Gonka Request IDs proving every inference ran on the decentralised network.

Challenges we ran into

1. Gonka Router does not support vision/image inputs
We initially designed the medicine scanner to send photos directly to vision-capable AI models on Gonka. After deployment, every attempt returned a 400 error — Gonka's current models don't accept image_url content. We rebuilt the pipeline to use Tesseract.js for local OCR first, then send the extracted text to Gonka for structuring and medical knowledge enrichment. This actually improved accuracy for text-heavy labels.

2. DeepSeek's <think> blocks swallowed the JSON
DeepSeek V4 Flash generates a long internal reasoning block wrapped in <think>...</think> before outputting the answer. Our original code stripped these blocks before JSON parsing — but for complex prompts like fact-checking, DeepSeek placed the JSON inside the think block. Stripping it deleted the answer entirely. We fixed this by returning both the raw and stripped content from every model call, then searching for JSON in three passes: after the last </think> tag, in the stripped text, and anywhere in the raw response.

3. max_tokens too low caused truncated responses
Setting max_tokens: 450 for the fact-checker wasn't enough for DeepSeek to finish reasoning AND output JSON. The response was cut off mid-think with no JSON produced. Raising to max_tokens: 1200 resolved this.

4. False consensus from a single model
When one model failed, the system calculated scoreDiff as 0 (one model agreeing with itself) and showed "Models agree" — which was misleading. We fixed this by tracking twoModels as a boolean, only computing real consensus when both models respond, and using the tertiary model as a genuine second opinion when needed.

5. iOS Safari camera bug
The medicine scanner used JavaScript .click() on a hidden file input to open the camera. iOS Safari silently blocked this when called through a function chain. We fixed it by using a <label for="medicine-photo-input"> element instead, which creates a direct browser-native link to the file input that iOS Safari always respects.

Technologies used

Discussion

Builders also viewed

See more projects on Devfolio