-
-
One big button. The three daily buttons, Hold to talk, and “I prefer to type”.
-
His own usual, day by day. BP against his own normal.
-
Good days, planned around him. The haze warning and the indoor Qloo picks
-
Memory Lane. This replaced Kopi Kakis, whose card squeezes into a thin column at phone width and looked poor.
-
His health comes first. The Qloo taste graph with its health, medicine and weather filters.
-
Some moments can’t wait. The family red-flag screen.
-
the centre caseload
-
the taste benchmark
-
the judge view.
Inspiration
In Singapore, one in four people will be 65 or older by 2030, and many of them live with high blood pressure. Most of that care happens at home, between doctor visits. Readings drift, pills get missed, and a senior who feels unwell or lonely often says nothing.
The people around them are stretched. Adult children work full-time and keep up through missed calls and WhatsApp messages. Befrienders at Active Ageing Centres look after whole caseloads and spend hours copying notes from paper into spreadsheets.
The usual tools don't help much. Alert apps fire a "BP over 140" alarm so often that families stop listening. Generic AI companions suggest a salad and a walk in the park, which ignores who the senior is, what medicine they take, and whether today is a haze day.
We wanted something that stays quiet when things are fine, speaks up when something is actually wrong for this senior, and plans good days around what they love: Teresa Teng, kopi with old friends, a Cathay classic, karaoke at the centre.
What it does
CareLoop SG supports seniors with high blood pressure between doctor visits, and the family or centre staff who look after them.
- For seniors: a big-button, large-text app. They check in by holding a button and talking, in English, Singlish or Mandarin, or by tapping. Thirty seconds and it's done. The app also explains their medicines in plain words and suggests things they might enjoy today.
- For families: the app stays quiet while things are normal. When a pattern lasts, it hands over to the family member on duty with the evidence: how far readings have moved, a two-week chart, and what CareLoop already tried. A person always makes the call.
- For Active Ageing Centres: seniors with no family nearby go to their befriender. The centre console sorts the whole caseload by who needs attention first, exports befriending records, and matches centre programmes to each senior.
Where Qloo comes in. CareLoop plans good days around each senior's own taste. Qloo's taste graph turns what a senior mentions ("I miss hearing Teresa Teng", "kopi with old neighbours") into music, classic films, places and centre programmes they're likely to love. Every pick then goes through CareLoop's rules: medicine-food clashes, blood pressure, gout, kidney, halal, vegetarian, wheelchair access, and today's haze and rain. Qloo makes the day personal; the rules keep it safe.
The same taste profile powers:
- Kopi Kakis: pairs lonely seniors at the same centre who share tastes, with a safe meeting spot and an icebreaker for the befriender.
- Memory Lane: a daily story prompt from the senior's own nostalgia ("what was your favourite cinema in your 20s?"), saved as keepsakes for the family.
- Family Visit Kit and respite plans: what to bring and talk about on a visit, and a three-hour break for a worn-out caregiver while the senior joins a programme they'll enjoy.
- Group planning for centres: the safest outing a whole group would enjoy, with a caterer's headcount by diet.
Seniors can see everything CareLoop knows about their tastes and erase any of it in one tap.
How we built it
- One rule above all: rules decide, models only read and write words. A rules engine picks how strongly to respond (from "stay quiet" to "red flag"). A language model only reads check-ins and writes the message. It never decides whether a reading is dangerous or whom to contact.
- Red flags are caught by rules, never by the model alone. A model can add a symptom it hears ("my chest feel like got elephant sitting on top" → chest pain) but can never remove one. Red flags skip every delay and go to every linked family member at once.
- Numbers are never invented. Blood pressure readings are pulled out of what the senior said; anything unclear is read back for the senior to confirm.
- Every outgoing message passes a guardrail (no diagnosis, no dose changes, no invented numbers), or a tested fixed template goes out instead.
- A 4-step Qloo taste agent:
qloo_searchresolves a senior's cultural seeds to Qloo entities;qloo_insightsfinds cross-domain places, artists and films for seniors in Singapore;check_health_constraintsfilters every candidate against the senior's conditions, medicines and live weather;guardrail_checkverifies the wording in English, Chinese, Malay and Tamil. Families and staff can open the trace and see what was picked, why, and what was filtered out. - Live Singapore data: haze (PSI) and rainfall from data.gov.sg, and Active Ageing Centre and community club locations.
- Stack: Python and FastAPI backend (the engine itself is standard-library Python), SQLite or Postgres, a React + Vite web app with two front doors (senior and care), installable as phone apps. Tencent Hunyuan is the intended language model; the hosted demo uses Gemini in the same slot, and with no key at all it runs on rules and templates. Deployed on Render in Singapore.
- Testing: about 280 offline tests that never touch the network, a frozen blind evaluation set, and a 38-persona taste benchmark.
Challenges we ran into
- Making Qloo matter, safely. Qloo's raw taste graph did exactly what it should: it matched a gout patient who loves bak kut teh to rich organ-meat soups. Taste alone can be unsafe for a senior on medication. We built one reviewable table of health and medicine-food rules that every Qloo pick has to pass, and we show which candidates were blocked and why.
- The model rewrote safety wording. On a red flag, the live model reworded the instructions and dropped "rest 5 minutes and measure again". Red flags now never go to the model; the fixed, reviewed wording goes out at once.
- Slow and flaky model calls. During testing the model answered "high demand" or timed out, and a check-in waited up to 29 seconds. We cut the timeout to 5 seconds and fall back to rules and templates, so the senior always gets an answer.
- Not cheating on the evaluation. We froze the held-out test set before tuning, ran it blind once, and kept the result even where we lost: the fixed "BP over 140" rule spots a slow drift sooner.
- Five languages on one screen. Malay and Tamil explanations first fell back to English; every taste explanation now has its own wording in all four UI languages.
- Family edge cases. A second red flag on the same day reset the first one, so two siblings could act on it twice. We fixed it and added tests for siblings taking turns, claims and handovers.
Accomplishments that we're proud of
- Blind clinical evaluation on 720 simulated days across 8 synthetic seniors, against the usual "alert above 140" rule: CareLoop caught 5 of 5 red flags (the fixed rule caught 3), found 16 of 17 real problems (missed medicine, feeling unwell for days, isolation, not just BP), and raised 0 false alarms per senior-month (the fixed rule: 1.29). The trade-off, which we show first: a slow drift is flagged a few days later than the fixed rule.
- A 38-persona taste benchmark across English/Singlish, Mandarin, Malay and Tamil seniors. A generic chatbot baseline made picks that clashed with the health, medicine or weather of 38 of 38 seniors; adding simple health rules still left 21 of 38 at risk; CareLoop + Qloo had 0 of 38, with picks scored 82 / 100 for being specific to each senior against 19 / 100 for the chatbot. (The two baselines are scripted stand-ins, not live model runs.)
- Quiet by design. On look-alike days (haze, heavy rain, a long mahjong afternoon, phone left at home, Chinese New Year) CareLoop stayed quiet 11 times out of 11.
- Seniors stay in control. They can see what CareLoop knows about them and erase it, say "not for me" to any suggestion, and nothing is ever sent without a person choosing to.
- One honest, working demo across three apps (senior, family, centre), plus a one-page GP brief for the next doctor's visit.
What we learned
- Taste is safety-critical once it touches food and outings. The best personal suggestion is useless if it clashes with the senior's medicine or sends them out in the haze. Qloo and the rules have to work together.
- Let rules decide and models talk. Models are great at understanding Singlish and writing a warm message, and bad at being the last word on a dangerous reading.
- Quiet is a feature. Families trust an app that only speaks up when it matters.
- Be honest about the numbers. Showing where we lost to the simple rule made the rest of the evaluation more believable.
What's next for CareLoop SG
- Clinical sign-off. The red-flag thresholds and the medicine-food table are placeholders until a clinician and a pharmacist review them.
- A pilot with one Active Ageing Centre and a handful of families, starting with the centre console.
- Native-speaker review of the Malay and Tamil text, and real-phone testing of hold-to-talk with seniors.
- Tencent Hunyuan as the live model, and an always-on host with Postgres so the demo never sleeps or resets.
- A natural read-aloud voice on every phone, not only on browsers that ship one.
- More of Qloo: richer group planning for centres and Kopi Kakis matching across neighbouring centres.
Built With
- data.gov.sg
- fastapi
- gemini
- json-schema
- postgresql
- pwa
- python
- qloo
- qloo-taste-ai
- react
- remotion
- render
- reportlab
- sqlite
- tencent-hunyuan
- typescript
- uvicorn
- vite
- web-speech-api
Log in or sign up for Devpost to join the conversation.