All projects

Selam Wellness

AI wellness platform built for Ethiopia

Role
Solo build, ALX Ethiopia hackathon
Timeline
May–June 2026
Built with
React · TypeScript · Express · MongoDB Atlas · Gemini · Docker
Selam Wellness: Dashboard
Dashboard. Wellness score, PHQ-4 result and navigation across the pillars.

The problem

Wellness apps give generic, Western-centred advice that ignores which therapists, products and retreats are actually available in Ethiopia, and in which language. At the same time, skin-lightening products containing mercury, hydroquinone or steroids are sold openly, and shoppers have no quick way to check what is in them.

What I built

Selam turns a three-minute assessment into a personal wellness plan across mind, skin and body, in English or Amharic.

Three-phase onboarding
Mental wellness (including the clinical PHQ-4 screening questions), skin and products, and wellness goals. A crisis-level score skips the plan entirely and routes to a dedicated crisis support page.
Profile reveal
An animated sequence that presents the result one pillar at a time: the therapist match and why, a safety audit of the products the user owns, and a retreat recommendation.
Therapist and retreat matching
The profile is embedded with Gemini and matched by vector search in MongoDB Atlas against local therapists (filtered by language and approach) and Kuriftu retreat packages. Each match comes with a written reason and a score.
Product safety scanner
Search by name, scan a barcode or photograph the label. It checks a curated Ethiopian product database first, then Open Beauty Facts, then reads the label with a vision model, and flags ingredients that conflict with the user's skin profile.
Dashboard
Wellness score, daily mood check-in, weekly review, matched care, scanner, retreats, and a Data Vault that shows the user an audit log of every AI call and data access.
Demo resilience
Preset personas run the full flow from static data, so the product still works with no AI provider and no database.

My role

Solo developer. I defined the product, designed the UI, built the React front end and the Express API, wrote the AI provider layer and matching pipeline, modelled the data, seeded the therapist, product and retreat datasets, and set up Docker deployment.

Cutting voice before the demo

The project started with a two-model voice pipeline. Before the demo I removed voice and consolidated to a single AI service to make it reliable.

Tech stack

Front end
React 19, TypeScript, Vite 6, Tailwind CSS v4, Motion, Lenis, Shepherd.js (guided tour), html5-qrcode (barcode scanning), Axios
Back end
Node.js, Express 5, Mongoose, Multer (image upload)
Data
MongoDB Atlas with Vector Search
AI
OpenRouter for text generation, Gemini for embeddings and label reading, behind one provider module with fallbacks
External APIs
Open Beauty Facts, Open-Meteo (Addis Ababa weather)
Security
JWT, bcrypt, Helmet, rate limiting, audit-log middleware, crisis-detection middleware
Deployment
Multi-stage Dockerfile, Docker Compose, Procfile

Screenshots

Selam Wellness: Onboarding
Onboarding. The PHQ-4 screening step, with preset personas and the English/Amharic switch in the header.
Selam Wellness: Profile reveal
Profile reveal. The Dermal Audit card: each owned product gets a safety index, a verdict and the reasoning.
Selam Wellness: Safety scanner
Safety scanner. Check a product by name, barcode or photo.

What I'd improve next

Bring the live backend back
Only the static demo path runs today. I'd restore the database, re-run the seed and embedding scripts, and host a public demo.
Break up the dashboard
Splitting it by pillar would make it testable and faster to load.
Automated tests
The first ones cover PHQ-4 scoring, the crisis routing and the ingredient flagging, since those are the places a bug could hurt someone.
Clinical and regulatory review
The screening logic, the crisis flow and the banned-ingredient list should be checked by a clinician and against Ethiopian regulator data before real users rely on them.
Real provider data
Therapists and retreats are seeded samples. The product needs verified listings and an actual booking handoff.
More languages
Afaan Oromo and Tigrinya alongside English and Amharic, and voice check-ins once Amharic speech support is good enough.
Next projectPULSE

Have a manual process eating your time?

Let's automate it. Tell me what's slowing your business down and I'll help turn it into a better system.

Hiring? Email me or download my CV.