-
-
the agents used
-
The Science Behind It Polyvagal Theory (Stephen Porges) — the autonomic nervous system has three states,this simuation follows it
-
the roleplay agent
-
Nova's RAG pipeline embeds every user message into a 768-dimensional vector using Gemini, then searches a knowledge base of scraped CBTADHD.
-
the loop breaking simulation
-
the task mountain simulation
-
the mirror image 3d simulation page
Inspiration
I have ADHD.
Not the kind that gets you a quiet room for exams — the kind that made me the exceptional kid in middle school. The one who finished tests first, read three grades ahead, made connections nobody else made.
And then high school hit.
The structure disappeared. The deadlines got longer. The social dynamics became impossible to navigate. And the girl who was exceptional became — nothing.
Or at least, that's what it felt like.
I couldn't understand why. My brain hadn't changed. But suddenly I was exhausted from conversations I used to enjoy. I'd go silent for days and feel too ashamed to reach back out. I'd spiral at 2am over a text message with one fewer exclamation mark than usual. I'd say yes to everything because I was terrified of being too much if I said no.
I blamed myself for all of it. Every single symptom.
Everything I thought was wrong with me — the shutdowns, the loops, the masking, the guilt, the friendship ghosts, the physical exhaustion from just being around people — was something I eventually understood through the lens of ADHD. Hormonal changes amplified some of it. High school social pressure intensified it. And nobody — not a teacher, a doctor, or a well-meaning adult — told me what was actually happening.
Half of what I know now, I learned while building this app.
I was reading about Rejection Sensitive Dysphoria and stopped mid-article because I was reading about myself — fifteen years of my life, documented in clinical literature, with a name I didn't know existed.
Nova is what I would have needed then.
Not a productivity app. Not a meditation timer.
A companion that says:
"Your brain isn't broken. This is what you're experiencing — and here's what's actually happening."
What It Does
Nova is an AI emotional resilience companion designed for adult women with ADHD.
She doesn't try to fix you. She tries to understand what your brain may be doing right now and interrupt the pattern with precision.
Every message passes through an Intent Router that reads the conversation and decides which of 10 specialized agents takes over — each focused on a specific psychological technique or interaction pattern.
The Loop Breaker
The Loop Breaker activates when it detects a phase of the ADHD Emotional Shutdown Spiral.
It identifies the exact phase from natural language:
- The initial emotional hit that floods executive function
- The 2–3 day freeze where nothing can be started
- The tomorrow trap, where the user bargains with a future version of themselves
- The nihilism void, where months feel wasted
- The guilt loop, where shame feeds directly back into the spiral
It gives one surgical micro-intervention per phase.
Never a list. Never a five-step plan.
The Social Coach
The Social Coach handles social and relational situations:
- Rejection-sensitive thinking
- Friendship guilt
- Masking exhaustion
- People-pleasing
When a user has a difficult conversation coming up — telling a boss something, setting a boundary, or reaching out after months of silence — the Social Coach hands off to the Practice Agent.
The Practice Agent is a judgment-free roleplay mode where Nova becomes the other person.
The user speaks to Nova as if speaking to them.
Nova responds in character.
The user finds their own words, then refines them.
No stakes. No real-world consequences.
The Executive Dysfunction Agent
This agent activates when someone is stuck on a specific task — not an emotional spiral, but when executive function is struggling to initiate or continue.
It identifies five types of "stuck":
- Complexity freeze
- Boring task
- Fear of failure
- Choice overload
- Pure initiation failure
The response is always one step under 90 seconds.
Absurdly small by design.
The goal is to bypass the executive-function barrier rather than climb over it.
Mirror Reframe
The Mirror Reframe triggers when a user uses an intensity word against themselves:
"I'm too much." "I'm too sensitive." "I'm too intense."
It runs a strict four-turn stateful technique:
- Extract the underlying trait.
- Invent a completely different scenario with different people and a different setting that embodies the same trait.
- Ask the user what they see in that invented person.
- Bridge back: "So what's different, really — her, or the word you use for you?"
The two scenarios must never share the same setting, people, or language.
The goal is psychological distance, not reassurance.
Story Mode
The Story Mode agent activates when the user is too emotionally close to their own situation to see it clearly.
Nova maps the problem onto a fictional scenario or metaphor — a character facing the same choice and carrying the same weight — and asks what that person should do.
It works because empathy for a stranger can sometimes be easier than self-compassion.
When the user tells Nova what the character should do, they're quietly telling themselves.
Body Check-In
The Body Check-In agent translates physical experiences into understandable neurological and physiological context.
When someone says they're exhausted but "didn't even do anything," it doesn't reinforce the idea that they're lazy.
Instead, it can help them explore how sustained masking, emotional regulation, and cognitive load may contribute to exhaustion.
When physical symptoms appear during emotional distress, it helps connect the experience to the body's stress response rather than adding moral judgment.
Identity Unmasking
The Identity Unmasking agent holds space for diagnostic grief:
- Anger following a late ADHD diagnosis
- The masking crisis of "I don't know who I actually am"
- Imposter syndrome
- The belief that maybe you're simply lazy
It doesn't silver-line the diagnosis.
It validates the loss.
No toxic positivity.
Grounding Agent
The Grounding Agent handles acute moments of panic or overwhelm.
It focuses on physical grounding first, rather than explanation first.
Orient.
Anchor.
Stabilize.
Then talk.
General Handler
Everything else goes to the General Handler, which silently retrieves relevant information from the clinical knowledge base and uses it to inform the response.
The user doesn't need to see the research layer.
The goal is for the knowledge to improve the response without turning the conversation into a clinical pamphlet.
Personas
Nova also has three personas that the user can switch between:
Luna
Calm realist. Psychoeducation energy.
Mae
Nurturing warmth. Unconditional positive regard.
Ivy
Fierce sarcasm. Tough love.
The same brain that needs gentle validation on Monday might need Ivy's:
"Bestie, stop catastrophizing."
on Thursday.
3D Simulation Environments
Four interactive 3D environments activate based on which agent fires:
- Mind Room — an interactive breathing environment where the entire scene responds in real time to how long you hold a button.
- Mirror Room — where you physically shatter RSD-related thoughts one by one.
- Task Mountain — where you dismantle an overwhelming task piece by piece.
- Overthinking Café — where you drag and sort fact from fiction.
The 3D layer isn't decoration.
It's another way for the user to experience the intervention.
How We Built It
Why Multi-Agent Instead of One Chatbot?
The most important architectural decision in Nova is what it doesn't do:
It doesn't use one general-purpose chatbot pretending to know everything.
A single LLM responding to every emotional state will tend to average across them. It may give someone in acute panic the same style of response as someone who simply wants to vent.
It also struggles to consistently enforce structured, stateful techniques.
For example, it can't reliably distinguish between:
"I can't make myself do anything."
and:
"What's even the point? Months have passed."
Those may require completely different interventions.
Multi-agent design solves this.
Each agent is a specialist.
The Loop Breaker knows the ADHD emotional shutdown pattern.
The Social Coach understands social and relational situations.
The Practice Agent handles roleplay.
The Mirror Reframe maintains its four-turn stateful structure.
The result is a system designed around specific problems rather than one generic response style.
The Routing System
Every message is classified by an Intent Router powered by Groq + LLaMA 3.3-70B.
The router reads the conversation history and outputs the appropriate agent and reason.
Context continuity is enforced at the prompt level. If the assistant has just asked Turn 2 of the Mirror Reframe flow, the router knows that the conversation is already inside an active exercise and should remain with that agent.
Conceptually, the routing can be represented as:
$$ P(agent_i \mid m,H) \propto \exp(\mathrm{LLM_score}(agent_i,m,H)) $$
where:
- $m$ = the current message
- $H$ = the conversation history
- $agent_i$ = a candidate specialized agent
The highest-scoring agent is selected.
The RAG Pipeline
The knowledge base was built from credible sources covering areas such as:
- CBT literature
- ADHD research
- Rejection-sensitive experiences
- Masking research
- Interoception
- Late-diagnosis identity formation
- Somatic symptom research
Each chunk is embedded using Google Gemini text-embedding-004 and stored in Supabase pgvector.
For every request, the user's message is embedded and matched against the knowledge base using cosine similarity:
$$ \mathrm{sim}(q,d)=\frac{q\cdot d}{|q||d|} $$
The top 2–3 relevant chunks above a similarity threshold of 0.5 are injected into the active agent's system prompt as hidden context.
The agent is explicitly instructed:
"Use this silently to inform your response. Do not say 'According to my research.'"
This is what separates Nova from a generic feelings chatbot.
The warmth is conversational.
The underlying responses are informed by a retrieval layer.
Masking Metrics & Longitudinal Tracking
At the end of each session, a summarizer LLM reads the transcript and extracts behavioural patterns such as:
unnecessary_apology— apologising when it wasn't their fault or for taking up spaceover_commitment— people-pleasing or saying yes when they don't mean itsocial_exhaustion— feeling drained after interaction
Each event is scored for intensity from 1 to 5.
The running masking burden is calculated as:
$$ M_{\mathrm{total}}=\sum_{i=1}^{n}w_i I_i $$
where:
- $I_i$ = intensity of the $i$-th masking event
- $w_i$ = recency weight
More recent sessions contribute more strongly to the current score.
Users can see these patterns over time in the Reflections tab.
Agent Prompt Design as a Safety Layer
Every specialized agent has protective rules built into its system prompt.
For example:
- No unnecessary numbered lists — reduce cognitive load where appropriate.
- One question per response, maximum — avoid overwhelming the user.
- Avoid "just be honest with them" — acknowledge that communication anxiety may be the problem being addressed.
- No toxic positivity — don't default to empty reassurance during vulnerable moments.
- Don't casually diagnose the user mid-conversation — validate the experience without forcing a label.
The prompts therefore control not only what the model should say, but also what it should avoid saying.
Tech Stack
Backend
- FastAPI
- Python
- Groq API
- LLaMA 3.3-70B
- Google Gemini
text-embedding-004 - Supabase
- PostgreSQL
- pgvector
Frontend
- React 19
- Vite
- TailwindCSS
- Three.js
@react-three/fiber@react-three/drei- Framer Motion
Challenges We Ran Into
The Hardest Challenge Wasn't Technical
I was writing the Loop Breaker agent — describing the five phases of the ADHD Emotional Shutdown Spiral in precise detail — and I was in Phase 4 while writing it.
The void.
"What's the point? Months have passed anyway."
I had to debug the agent that detects nihilism while feeling nihilistic.
Build the one that interrupts shame spirals from inside a shame spiral.
I had to keep building anyway.
That was the challenge.
Technical Challenges
RAG Retrieval Quality
Early retrieval was unreliable.
Chunks that were too large returned generic context that didn't match the specific user state.
Chunks that were too small lost important surrounding meaning.
Finding the right chunking strategy and similarity threshold took many iterations before responses felt grounded rather than generic.
Stateful Multi-Agent Routing
The routing system needed to maintain conversational flow without relying entirely on an explicit state machine.
The four-turn Mirror Reframe exercise is stateful. The agent needs to understand whether it is on Turn 1, Turn 2, Turn 3, or Turn 4 from the conversation history.
Getting the LLM to infer this consistently — and not switch agents halfway through an exercise — required careful prompt engineering.
3D Simulations
The 3D simulations pushed Three.js beyond what we initially expected.
The Mirror Room needed to transition from reflective to cracked and rough on the first interaction, then shatter into particles on the second, followed by a white flash and transition into a calmer environment.
The Mind Room needed multiple chaos and calm cloud systems responding continuously to a calmLevel value driven by how long the user holds a button.
Lighting, ground colour, sky, and particles all had to interpolate simultaneously.
Accomplishments We're Proud Of
Context-Aware Routing
The Intent Router preserves conversation context.
If a user is midway through a Mirror Reframe exercise and sends a one-word reply, the router doesn't automatically switch agents.
It reads the history, recognizes that the exercise is active, and routes the user back to the same agent.
Invisible RAG
The RAG pipeline is genuinely invisible.
Users receive responses informed by retrieved knowledge without seeing citations or feeling like they're reading a pamphlet.
The research informs the warmth.
It doesn't replace it.
Hold-to-Breathe Mind Room
The hold-to-breathe Mind Room is one of the pieces we're most proud of.
The entire 3D scene responds in real time to whether the user is holding a button.
Chaos clouds dissolve.
Calm clouds grow.
The environment transitions.
Nothing is simply pre-staged — the scene responds continuously to the user's interaction.
Phase-Specific Loop Breaking
The Loop Breaker distinguishes different phases of the emotional shutdown pattern from natural language.
A user saying:
"I can't make myself do anything."
can be handled differently from:
"What's even the point? Months have passed."
That specificity is what makes the intervention useful.
It Works for the Person Who Built It
The app works. I used it while building it.
That's the accomplishment I'm most proud of.
What We Learned
Almost everything.
Half the features in Nova were new to me while I was building them.
I was researching CBT techniques I had never tried on myself. I was reading about rejection-sensitive experiences mid-implementation and stopping because I was reading about fifteen years of my own life, documented in clinical literature, with a name I didn't have.
I learned that masking is not simply "being fake." It can function as a strategy people develop under prolonged social pressure, and it can carry a significant cognitive and physical cost.
I learned the five stages of the ADHD Emotional Shutdown Spiral while writing the prompt that detects them.
I learned that what I spent years blaming myself for had names.
Clinical names.
Research-backed names.
Documented names.
And that knowing the name changes something.
Not everything.
But something real.
Technically, I learned:
- RAG pipeline design from scratch
- Multi-agent orchestration
- Context continuity
- Prompt engineering as a safety discipline
- Retrieval-based personalization
- Stateful conversational flows
- Three.js interaction and animation
Most importantly, I learned that building a tool for a problem can also become a way of understanding the problem yourself.
What's Next for Nova
- Voice Mode — speech-to-speech interaction using Groq Whisper, so users can talk to Nova at 2am instead of typing.
- Proactive Check-ins — Nova reaches out after periods of silence instead of always requiring the user to open the app first.
- Partner / Family Translation Mode — help people understand what their ADHD loved ones may be experiencing in language they can actually use.
- Peer Pattern Insights — anonymised, aggregated insights showing users that their experiences aren't isolated.
- iOS App — bringing Nova to the device where users are most likely to need it.
Final Thought
Nova doesn't try to fix your ADHD brain. She just sits with you in it — until you're ready to move.
You are not broken.
This is just your operating system.
Log in or sign up for Devpost to join the conversation.