Mindmend – Calm Minds, Clear Skies
🌟 Inspiration
When thinking hurts, Mindmend (aka Mind Blend) offers low‑cost, private AI support. It listens, calms, and nudges you toward one small, doable next step—anytime, anywhere. With the new Cloud Analyzer module it now also sees the sky you fly through, classifying cloud types from images to improve weather awareness for aviation and outdoor planning.
🚀 What it does
Mindmend: AI that listens—and sees clouds—so you feel better
| Pillar | Key Capabilities |
|---|---|
| Psychologist Bots (CBT / ACT) | Gentle step‑by‑step reframing, mood check‑ins, trigger journals, and “next tiny step.” Crisis awareness with local helpline suggestions (no diagnoses). |
| ** CBT Counselor ** | This part of MindMend uses Cognitive Behavioral Therapy in plain language. |
| Relationship Counselor | De‑escalation scripts, empathy builders, role‑play sandbox, repair check‑lists, and follow‑up nudges. |
| Meditation Sessions | 3‑10 minute guided practices plus <90 sec “micro‑resets.” Voice guidance, soft haptics, streaks, and goals to build habit. |
| Cloud Analyzer | New! Uses FloodNet v2.1 to analyse uploaded sky imagery. Detects cloud cover %, classifies types (cumulus, cirrus, cumulonimbus, etc.), estimates turbulence risk, and generates a PDF weather snippet for pilots and planners. |
💡 Why it’s different
- Cost‑effective: lightweight models, semantic caching, and offline fall‑backs cut token spend.
- Private & multi‑voice: voice in/out with accent support, no judgment, no signup required.
- Action over advice: every chat ends with one clear, doable step; every cloud scan ends with one clear advisory.
🏗️ How we built it
Stack Overview
- Frontend: React + TypeScript (Vite), Tailwind / shadcn/ui, Web Speech API (TTS), Whisper (STT fallback via API), Service Worker for offline audio and cloud‑image caching.
- Backend: Node.js + Express (TypeScript). Python micro‑service wraps FloodNet v2.1 for cloud inference and PDF generation.
Data / Storage:
- App DB: SQLite locally → TiDB Serverless in prod (vector + SQL).
- Search / Retrieval: TiDB full‑text + vector hybrid for psycho‑education and meditation assets.
- Assets / Logs: Cloud storage (R2/S3‑compatible), Pino logs, OpenTelemetry traces.
AI Layer: Provider‑agnostic LLM client. Router pattern chooses a small, fast model for routing / extraction and a stronger model for therapeutic reflections.
Cloud Analyzer Implementation Snapshot
{
"name": "vite_react_shadcn_ts",
"version": "0.0.0",
"scripts": { "dev": "vite", "build": "vite build" },
"dependencies": {
"@tanstack/react-query": "^5.83.0",
"lucide-react": "^0.462.0",
"react-router-dom": "^6.30.1",
"jspdf": "^3.0.2",
"embla-carousel-react": "^8.6.0",
"zod": "^3.25.76"
}
}
Excerpt – full package.json in repo
🔨 Feature build‑out
- Psychologist Bots – curated CBT/ACT RAG packs, finite‑state flow engine, crisis classifier.
- Relationship Counselor – NVC playbooks, role‑play sandbox, tone checker.
- Meditation Sessions – pre‑rendered audio, streak tracker, offline cache.
- Cloud Analyzer – TS image‑ingestion pipeline → Python FloodNet v2.1 → cloud type & turbulence scorer → PDF report.
🛠️ Architecture notes
- Hybrid Retrieval:
vector(top_k=12) ∪ BM25(top_k=20)→ rank fusion → LLM. - Prompt discipline: tool‑call JSON, short system prompts.
- Caching: request‑level, semantic summaries, CDN for static guides & pre‑rendered meditations.
- Privacy: client‑side redaction, encrypted at rest, 30‑day rolling deletion, opt‑out analytics.
✅ Challenges we ran into
- Safety & scope (mental health) – Crisis messages vs. model over‑advice.
- Token cost & latency – Long chats ballooned context.
- Voice stack quirks – Safari/iOS audio suspends.
- Cloud image variance – Day/night lighting and over‑exposure confused the model. Fix: histogram equalisation + confidence threshold.
- Structured outputs – Malformed JSON could break UIs; Zod validation fixed it.
- Multilingual & code‑switching – Hinglish detection and prompt normalisation.
🏆 Accomplishments
- Safety‑first flows shipped – crisis routing + helplines, one‑tiny‑step close‑out.
- Cost/latency wins – router + compression + cache cut tokens ~45‑60 %.
- Cloud Analyzer in prod – Accurate cloud‑type classification (87 % macro‑F1 on test set) with PDF export under 3 s on low‑end laptops.
- Voice stability on Safari/iOS – Gesture‑resume & chunked TTS.
- Type‑safe everything – Zod + repair loop stopped malformed JSON.
- Accessibility by default – ARIA live regions, focus trap, body‑scroll lock.
📚 What we learned
- Start with one tiny step – reduces overwhelm, boosts retention.
- Hybrid > hype – BM25 + vector beat vector‑only for psycho‑education lookups.
- Router pattern saves \$\$ – Small model for routing, larger for tough turns.
- Validate at edges – Zod & repair loop prevent UI breakage.
- Cloud images need preprocessing – exposure normalisation improves accuracy.
- Caching is product design – instant replies feel calming.
🔮 What’s next for Mindmend
Project slimming & React Native – trim codebase, build lightweight RN app.
Built With
- express.js
- fast-api
- github-action
- json
- kotlin
- markdown
- mongodb
- natural-language-processing
- node.js
- os
- pip
- pydentic
- python
- react-native
- shadcn-ui
- shell
- sqlite
- sst
- text2sql
- tidb
- tts
- typescript
Log in or sign up for Devpost to join the conversation.