Inspiration
Every "healthy meal" recommendation ignores one huge variable: taste. A low-sodium spinach bowl is medically correct — but to a 78-year-old whose life was built around Sichuan cooking, it's not food, it's an obligation. So when we saw Qloo's 250M+ entity taste graph, we realized the real problem: not nutritional appropriateness, but cultural appropriateness.
TasteCare answers: "healthy food this person would actually love" — grounded not in a generic diet list, but in the specific cultural tastes that made their favorite dishes their favorites.
What it does
Type a simple ask — "i wanna see a film" — and TasteCare:
- Resolves your cultural anchors from your taste profile (e.g. Scandals of Classic Hollywood · book · 59% match, Tea · music · 89% match).
- Queries Qloo's taste graph for nearest-neighbor entities in the target domain (books, films, dining, music…), ranked by Qloo popularity.
- Explains the match — every pick shows its Qloo profile blurb and confidence, proving this isn't an LLM making things up.
- Respects health constraints (low-sodium, diabetes, allergies…) as filters on top of taste.
How we built it
- Frontend: React + Vite SPA, senior-friendly large text, one-tap scenario buttons (meal / book / film), optional voice input.
- Backend: FastAPI, with a Qloo integration service (search, recommend,
cross-domain, cultural-fit, taste-profile endpoints under
/api/v1). - Voice: local
faster-whispertiny.en (int8) for offline STT, with native browser Web Speech API fallback — mic audio never touches Google. - Deployment: single-domain — the built SPA is served from
apps/server/staticby FastAPI, so frontend + API share one URL, no CORS, no second platform.
Challenges we faced
- Qloo entity resolution is noisy across languages/domains: a simple "tea" can resolve to a band, a drink, or a place — we validate with domain + match score before trusting it.
- Cross-domain matching (dining → books) is weaker than same-domain: the graph's nearest neighbors are naturally most confident inside one domain, so we show match percentages transparently instead of hiding the uncertainty.
- China-network deployment: Vercel's edge was unreachable, so we moved to a single-container FastAPI deploy that serves both UI and API — no CDN hop, one URL, one cold-start.
What we learned
- Taste is a graph problem, not a classification problem. Similarity lives in latent cultural space, and "people who love X also love Y" generalizes across entirely different domains.
- Confidence transparency beats fake polish: showing 59% vs 97% Qloo match earns more trust from judges than a confident-sounding wrong answer.
- Health + culture isn't a compromise — it's a filtration problem: taste graph first, constraint filters second.
Try it
Public demo: https://tastecare-d690c.containers.snapdeploy.app
⚠️ TasteCare is a hackathon prototype for demonstration only — not medical software. Verify health-related suggestions independently.
Built With
- docker
- fastapi
- faster-whisper
- python
- qloo
- react
- rest
- snapdeploy
- typescript
- vite
- web-speech-api
Log in or sign up for Devpost to join the conversation.