The Problem Nobody Talks About
In Nigeria, substance use disorder is one of the most stigmatised health challenges a person can face. The fear of being identified by family, employers, or community stops millions of people from seeking help that exists and is available to them.
I have seen this reality up close through my psychology studies and my work in Nigerian tech communities. People who need help stay silent because asking for it feels more dangerous than the addiction itself.
Lulu Nura was built to change that.
What Inspired Me
I am a psychology graduate and a backend software developer, a combination that is rare and one that put me in a unique position to build this. I kept encountering the same gap: mental health technology in Nigeria was either too generic, too expensive, or required users to give up their identity to access it.
The name Lulu Nura means "light of pearls" – a quiet, precious thing. That is what recovery is. Something fragile, valuable, and deeply personal.
What Lulu Nura Does
Lulu Nura is an anonymous mental health platform connecting Nigerians battling substance use with verified addiction specialists, privately, safely, and without requiring a real name anywhere on the platform.
Core Features
Ghost Profile System Users are assigned a unique Recovery ID (e.g. LN217060) and a pseudonym. No real name is ever collected or stored. Anonymity is not a feature, it is the foundation.
DAST-10 Assessment in English + Nigerian Pidgin An AI-powered screening tool that evaluates substance use risk in the user's language of comfort. Results generate a personalised care path available to unauthenticated users so the barrier to entry is as low as possible.
Verified Therapist Directory Licensed Nigerian addiction specialists can register, build a profile, set their weekly availability, and receive bookings from anonymous users. Every therapist carries a Lulu Nura Verified badge after review.
Availability Calendar & Conflict Prevention Therapists set their available time slots weekly. Users can only book open, unoccupied slots; the system prevents double bookings entirely at the database level.
AI Support Chat An always-available conversational support tool for users between therapy sessions. Built on MeDo's LLM plugin with culturally aware prompting.
Mood & Craving Tracker Users log their daily emotional state so they and their therapist can spot patterns and stay ahead of setbacks.
Quick Escape Button A one-click button that exits the app and redirects to Google instantly for users who need to close the platform quickly in an unsafe environment.
Low-Data Mode A manual toggle that optimises the platform for users on 3G networks in rural Nigeria.
How I Built It
I built Lulu Nura entirely using MeDo as my AI development partner, and I want to be completely transparent about what that means: I did not write a single line of code manually.
Every component, every database query, every RLS policy, every UI layout, and every bug fix in this project was generated by MeDo through natural language instructions. I am a backend developer, so I understood what needed to be built, but MeDo was the one who built it.
My role was to:
- Define the vision, user needs, and cultural requirements
- Write clear, specific, well-structured prompts describing exactly what I wanted
- Review what MeDo generated and identify what was wrong or missing
- Describe the problem back to MeDo in plain English so it could fix it
- Repeat until the feature worked correctly
When bugs appeared, like the RLS policy blocking photo uploads, or the streaming chat parser dropping words, or the sticky navbar breaking after a mobile fix, I did not debug the code myself. I read the error message, understood what it meant from my technical background, and explained it to MeDo clearly enough that it could produce the right fix.
This is what modern AI-assisted development looks like. One person with domain knowledge, technical understanding, and clear communication, and MeDo as the engineering partner that turns those instructions into working software.
Tech Stack
- Frontend: React + TypeScript
- UI Components: Shadcn/UI + Tailwind CSS
- Backend & Auth: Supabase (database, RLS policies, storage)
- Routing: React Router
- AI Builder: MeDo
Database Tables
users · therapists · appointments · therapist_availability · assessment_logs · conversation_session · messages · resources · mood_logs · care_paths · audit_logs
The Most Impressive Thing MeDo Built
The feature I am most proud of and the one that required the most sophisticated generation is the Risk-Adaptive Care Path system.
When a user completes the DAST-10 assessment, MeDo generated the logic that:
- Scores their 10 responses
- Classifies them into a risk tier: Low, Moderate, Substantial, or Severe
- Dynamically generates a personalised care path on their dashboard based on that tier
- For Severe risk, surfaces emergency contacts including the NDLEA 24/7 helpline and a direct booking prompt for immediate therapist consultation
All of this happens under an anonymous Recovery ID. MeDo also generated the complete therapist availability system, including the therapist_availability database schema, the weekly slot management UI on the therapist dashboard, and the conflict-prevention booking logic.
Challenges I Faced
The Invisible CSS Bug That Turned Everything Yellow
One of the most memorable technical challenges came during a UX exploration phase. To test color psychology for a mental health platform, where color directly impacts user trust and emotional comfort I used MeDo to prototype three distinct color themes simultaneously: Dawn of Recovery (forest green), Serene Earth (terracotta), and Deep Ocean (midnight teal).
The theme switcher worked beautifully at first, but a cascading issue emerged: MeDo's runtime CSS variable injection was writing HSL color values without percentage signs for example 241 229 172 instead of the correct 48 74% 81%. Browsers couldn't parse the malformed values and fell back to rendering the entire interface in bright yellow.
What made this particularly challenging was that the CSS files looked correct on inspection. The bug was invisible in the source code but catastrophic in the browser. Tracing it required systematically eliminating every file ThemeContext.tsx, ThemeToggle.tsx, App.tsx, main.tsx, index.css before identifying that the HSL format mismatch between MeDo's variable injection system and Tailwind's color parsing was the root cause.
The fix was replacing the entire dynamic theme system with a single hardcoded correct HSL palette simpler, faster, and more reliable. The lesson: sometimes the most elegant solution is the most minimal one.
This experience deepened my understanding of how CSS custom properties, Tailwind's color system, and runtime JavaScript variable injection interact knowledge that directly improved the stability of Lulu Nura's final design system.
Row-Level Security Blocking Therapist Photo Uploads
MeDo manages the Supabase backend entirely, which means I cannot access the database dashboard directly. When therapists tried to update their profile photos, the operation failed silently with "new row violates row-level security policy."
Diagnosing this without dashboard access required understanding exactly how Supabase RLS UPDATE policies work, specifically that PostgreSQL requires both a USING clause and a WITH CHECK clause on UPDATE policies. The USING clause controls which rows can be updated, but the WITH CHECK clause validates that the new values being written satisfy the security policy. MeDo had created the USING clause but omitted WITH CHECK entirely.
The Sticky Navbar That Broke After a Mobile Fix
Adding overflow-x: hidden to html, body, #root in index.css to fix a mobile horizontal scroll issue silently broke the sticky navbar across the entire app. The navbar stopped sticking because overflow: hidden on any ancestor element creates a new scroll container, which breaks position: sticky in all descendants.
The fix was removing overflow-x: hidden from the global CSS entirely and finding a different approach to the mobile scroll issue. Understanding this CSS containment behaviour and being able to explain it clearly to MeDo was what made the fix possible.
Streaming Response Parser Dropping Words
The AI Support Chat uses Google Gemini via MeDo's LLM plugin, streaming responses through a Supabase Edge Function. When stream chunks arrived split across read cycles, the parser was dropping words mid-sentence producing responses like "I'm you reached out" instead of "I'm glad you reached out."
Identifying this required reading the raw streaming code MeDo generated and recognising that the Gemini response format candidates[0].content.parts[0].text was being parsed correctly in isolation but failing when chunks were fragmented. The fix was improving the chunk assembly logic and adding fallback handling for malformed stream data.
Cultural sensitivity in prompting getting MeDo to generate copy, UI flows, and assessment logic that felt genuinely Nigerian, not just translated English, required deliberate, specific prompting at every stage.
What I Learned
Building Lulu Nura taught me that the quality of your prompts is the quality of your product. MeDo is powerful, but it responds to precision. The more context, structure, and specificity I gave it, the better the output.
I also learned that solo building is no longer a limitation. With MeDo, one person with a clear vision and a psychology background can build a platform that would have taken a team of five developers several months.
Most importantly, I learned that technology built with cultural empathy hits differently. Lulu Nura is not a generic mental health app adapted for Nigeria. It was designed from the ground up with the Nigerian experience at its centre and that intentionality shows in every feature.
What's Next for Lulu Nura
- Launch the B2B subscription model for therapists
- Expand language support to Yoruba, Igbo, and Hausa
- Partner with Nigerian rehab centres and NGOs for the verified directory
- Integrate teletherapy video sessions directly in the platform
- Apply for Nigerian health tech grants and impact investment
Built by Joy Agbo B.Sc. Psychology, Backend Developer, Google Women Techmakers Ambassador, Women Techsters Fellow 2023
Lulu Nura Helping Nigerians heal quietly, safely, and with dignity.
Built With
- chatgpt
- claude
- medo
- react
- react-router
- shadcn/ui
- supabase
- tailwind
- typescript
Log in or sign up for Devpost to join the conversation.