WHO AM I? — Find Your Happiness. Find Your You.
Every moment leaves a clue. What do yours say about you?
💡 Inspiration
Everyone seems to have an answer for happiness.
Be productive. Exercise. Meditate. Find your purpose.
But while thinking about this project, I kept coming back to one question:
Does happiness really mean the same thing to everyone?
Something that feels like success to one person can mean something completely different to another. Sometimes the part we remember is not the achievement itself, but simply the feeling that “I didn't give up.”
That is where the idea for WHO AM I? started.
I wanted to explore whether AI could help people reflect on their own experiences without trying to define them.
I didn't want to build another personality test, happiness score, or AI life coach.
I wanted the AI to notice clues, connect experiences, show why it noticed something, and then leave the meaning with the person.
AI reflects. You decide.
🌱 What It Does
WHO AM I? is a self-reflection journey through four connected spaces:
🪞 Mirror → 🧬 Happiness DNA → 🧭 Compass → 🔐 Vault
Each space takes the user a little deeper, starting with simple interests and eventually moving toward reflection and personal meaning.
🪞 Mirror — Meet Yourself
The journey starts with the little things a person enjoys.
For example, Maya tells Mirror that she likes Game of Thrones.
Instead of trying to understand her personality from that, Mirror creates a playful Game of Thrones challenge. As she interacts, pieces of her visual Mirror gradually come together.
But I wanted one boundary to be very clear:
Fun is not psychological evidence.
Entertainment information is stored separately with:
dna_allowed=false
So Game of Thrones can make Mirror more personal and playful, but it cannot become Happiness DNA evidence.
The application tells the user:
Entertainment only. DNA access denied. No Happiness DNA created.
Mirror can learn what Maya enjoys without deciding who Maya is.
🧬 Happiness DNA — Follow the Clues
When Maya chooses to look deeper, she enters Happiness DNA.
The room starts empty.
There is no personality type waiting for her. There is no happiness score and no conclusion already decided.
Maya chooses the experiences she wants to reflect on.
Each accepted reflection adds another visible part to her Happiness DNA:
1 clue → 4 fragments
2 clues → 8 fragments
3 clues → 12 fragments
I wanted users to see their DNA growing without making the AI jump to conclusions after one reflection.
So I separated collecting clues from reaching a stronger pattern.
Clues form first. Patterns wait.
When enough evidence connects across different experiences, the system can surface a possible pattern.
For example:
AI NOTICED → persistence
But persistence is still presented as an AI hypothesis.
It is not presented as the truth about Maya.
🔎 Why? — Show the Evidence
I didn't want the application to display an AI-generated word and expect the user to believe it.
So Maya can ask:
Why?
WHO AM I? shows the evidence connected to that pattern.
Behind this is an Evidence Graph:
Experience → Evidence → Pattern
This means Maya can see what made the system notice something instead of receiving an unexplained AI label.
⚡ Prove Yourself Wrong
I also wanted the system to do more than explain why it thinks it is right.
That became:
Prove Yourself Wrong
When Maya chooses it, WHO AM I? looks for evidence that may not fit the current interpretation.
Sometimes contradictory evidence may exist. Sometimes it may not.
If nothing useful is found, the application does not automatically say:
“Then the AI must be right.”
The information available may simply be incomplete.
This became important to me because AI can sound very confident even when it only knows one part of someone's story.
❤️ The Human Defines the Meaning
The AI may notice:
persistence
But I didn't want an AI-generated word to automatically become Maya's identity.
Maya can look at the same experiences and describe them in her own words:
Knowing I didn't give up
WHO AM I? keeps both visible:
AI NOTICED → persistence
YOU DEFINED → Knowing I didn't give up
I keep the original AI label so Maya can still see what the system originally noticed.
But her own wording remains separate because the meaning belongs to her.
The AI can notice the pattern. The human decides what it means.
🧭 Compass — Your Road. Your Answer.
After Maya defines something in her own words, she can carry that meaning into Compass.
Compass connects it with a current chapter of her life.
For example:
Meaning: Knowing I didn't give up
Current chapter: Placement
Compass asks one reflective question about how those two things fit together.
Then it stops.
It doesn't choose Maya's career.
It doesn't tell her what opportunity to accept.
It doesn't make the decision for her.
No recommendation follows. The next move is yours.
Compass helps Maya look at the road without taking the steering wheel.
🔐 Vault — Your Story. Your Control.
Vault makes the system's memory visible.
Maya can see:
- entertainment information
- self-discovery reflections
- AI hypotheses
- human-defined meaning
- evidence connected to patterns
Game of Thrones remains entertainment with DNA access denied.
I also wanted deletion to actually mean something.
Suppose Maya has:
Repeated — 3 supporting clues
She removes one supporting reflection.
WHO AM I? recalculates the pattern:
Emerging — 2 supporting clues
The reflection doesn't just disappear from the screen.
Its influence on the AI's current understanding disappears too.
But Maya's own meaning remains because she defined it herself.
When the evidence changes, the AI changes too.
⚙️ How I Built It
I wanted WHO AM I? to feel more like an experience than a normal dashboard.
For the frontend, I used:
- HTML
- CSS
- Vanilla JavaScript
These power the Portal, Mirror, Happiness DNA visualization, Compass, Vault, and judge experience.
For the backend, I used:
- Python
- FastAPI
- Pydantic
For storing the journey data, I used:
- SQLAlchemy
- Alembic
- SQLite
These store experiences, evidence, pattern relationships, DNA strands, life chapters, and purpose-bound memories.
For testing and deployment, I used:
- Pytest
- GitHub Actions
- Docker
- Render
One of the main technical ideas behind the project is the Evidence Graph.
Instead of treating every AI response like an isolated chatbot message, experiences, evidence, and patterns remain connected.
That connection is what makes features such as Why?, Prove Yourself Wrong, and evidence-aware deletion possible.
🤖 Best Use of AI
The part I find most interesting about WHO AM I? is not simply that it can use an LLM.
It is how AI is allowed to participate.
I didn't want this:
User Reflection → AI → Advice
I wanted this:
Reflection → Structured Evidence → Evidence Graph → Pattern → Challenge → Human Meaning
The architecture has two provider-backed AI operations:
- Structured evidence extraction
- Semantic retrieval of supporting and contradictory evidence
Both also have deterministic local versions so I can develop, test, and demonstrate the system without depending on external AI credentials.
🧠 AI Use 1 — Structured Evidence Extraction
In the optional hosted mode, a self-discovery reflection can be sent to an OpenAI-compatible Chat Completions endpoint after passing the application's consent, privacy, and safety checks.
I don't ask the model:
“What kind of person is this?”
Instead, I ask it to extract structured evidence.
Each result contains:
conceptevidence_typesummarystrength
The evidence type can be:
supportcontradictcontextual
The important difference is that this output becomes evidence, not someone's identity.
The rest of the application decides how that evidence can be used.
📝 Exact AI Prompt
This is the actual hosted system prompt implemented in the project:
You extract cautious self-reflection evidence. Never diagnose personality or happiness. Return JSON only as an object with key 'evidence'. Each item must contain concept, evidence_type (support|contradict|contextual), summary, strength (weak|moderate|strong). Use the user's own meaning where possible. Do not infer from entertainment preferences.
The user prompt is:
Experience type: {experience_type}
Reflection:
{text}
A response can look like:
{
"evidence": [
{
"concept": "persistence",
"evidence_type": "support",
"summary": "...",
"strength": "moderate"
}
]
}
The application validates the response before storing it.
Invalid evidence types are rejected, invalid strength values are normalized, and field lengths are limited.
I also preserve the original reflection separately instead of trusting the model to reproduce the user's words.
🔎 AI Use 2 — Semantic Evidence Retrieval
The second provider-backed AI operation is semantic retrieval.
This is used during the Challenge / Prove Yourself Wrong flow.
The current pattern and stored evidence can be converted into embeddings.
Cosine similarity is then used to retrieve related evidence.
Supporting and contradictory evidence are searched separately.
This lets the system ask not only:
“What supports this idea?”
but also:
“What might not fit?”
That is the AI idea behind Prove Yourself Wrong.
🧩 Evidence Graph
AI output does not directly become an identity label.
The architecture separates:
Experience → Evidence → Pattern
These relationships form the Evidence Graph.
This lets Maya ask Why? and trace a pattern back to the experiences that influenced it.
It also makes deletion meaningful.
If supporting evidence disappears, the system can reconsider the affected pattern instead of continuing with the same level of confidence.
🧬 AI Has to Earn Confidence
The AI model itself does not decide whether a pattern is unknown, emerging, questioned, or repeated.
Those states are controlled by application logic.
For a pattern to reach the repeated state, the application requires:
$$ 3\ \text{supporting evidence items} $$
from:
$$ 3\ \text{distinct experiences} $$
across at least:
$$ 2\ \text{experience types} $$
I added this because I didn't want one reflection to immediately become a strong identity claim.
The DNA can grow before the evidence is strong enough for a repeated pattern.
🛡️ Privacy and Safety Before AI
I didn't want privacy to depend only on telling an AI model:
“Please don't use this information.”
Important checks happen in application code before normal evidence extraction reaches the provider.
These include:
- DNA consent
- analysis consent
- purpose of the information
dna_allowed- whether usable reflection text exists
- high-risk safety rules
For example:
Game of Thrones → Entertainment → dna_allowed=false → Blocked from Happiness DNA
So entertainment can personalize Mirror without becoming psychological evidence.
The application enforces that boundary before normal AI evidence extraction.
⚡ Why Prove Yourself Wrong Matters
A common AI flow can easily become:
AI makes an interpretation → AI explains why it is correct
I wanted another step:
AI notices → AI explains → AI looks for evidence against itself → Human decides
That became Prove Yourself Wrong.
If contradictory evidence exists, it can weaken the current interpretation.
If no useful contradiction is found, the system can remain uncertain instead of treating that as proof.
For me, this is one of the most important uses of AI in the project.
❤️ Human Meaning Has Authority
The AI may notice:
persistence
The user may define:
Knowing I didn't give up
WHO AM I? keeps these as different things.
The AI-generated hypothesis remains traceable.
The human-defined meaning belongs to the user.
AI can contribute to the reflection without owning the final interpretation.
🧭 Why Compass Is Intentionally Not Another AI Call
Compass does not call an LLM or embedding provider.
That was intentional.
Compass only accepts something the user has already defined in their own words.
It combines that meaning with the current chapter and asks one deterministic reflective question.
It makes no life recommendation.
Building this project made me realize something important:
Responsible AI is not always about adding another model call. Sometimes it is about knowing where AI should stop.
🗑️ AI Confidence Can Change
Vault is also connected to the evidence architecture.
Suppose a pattern has:
Repeated — 3 supporting clues
Maya removes one supporting reflection.
The application removes its influence and recalculates:
Emerging — 2 supporting clues
The AI becomes less confident because its evidence changed.
But Maya's own meaning remains.
Machine confidence can change. Human meaning remains user-owned.
🤖 Models and AI Tier
WHO AM I? supports two modes.
Deterministic Local Mode
The repository defaults to:
WHOAMI_AI_PROVIDER=local
This mode does not call an external LLM.
It uses deterministic Python rules for evidence extraction and deterministic 96-dimensional hashing vectors for semantic retrieval.
It requires:
- no external LLM
- no external embedding API
- no external AI API key
- no external AI inference charge
I use this mode for reproducible development, automated testing, CI, and credential-free judge demonstrations.
Optional Hosted Mode
The project also supports an OpenAI-compatible hosted provider.
The default hosted configuration in the repository is:
- Language model:
gpt-4.1-mini - Embedding model:
text-embedding-3-small - Default API base:
https://api.openai.com/v1
The provider and model names can be changed through environment variables.
Free / Paid Tier
The deterministic local mode has no external AI inference cost and requires no external AI API key.
The optional hosted mode can use hosted language and embedding models. Its cost depends on the provider and account configured in the deployment environment.
I do not claim a free or paid hosted tier unless that provider is actually configured, because billing information is not stored in the repository.
🧩 Challenges I Faced
One challenge was keeping entertainment separate from psychological inference.
Mirror needed to remember what users enjoy while making sure those interests could not enter Happiness DNA.
Another challenge was preventing premature AI conclusions.
I wanted Happiness DNA to grow with every accepted clue without allowing one reflection to become a confident repeated pattern.
Making AI question itself was another challenge.
Showing supporting evidence wasn't enough for me, which led to Prove Yourself Wrong.
Human ownership was also important.
If a user changes an AI-generated label into their own words, later recomputation should not silently overwrite what the person defined.
Deletion also needed to actually matter.
Removing a reflection had to remove its influence from the AI's current understanding, not just remove a card from the screen.
Safety taught me another important lesson.
Having a safety checker is not enough if the real evidence-processing path can bypass it. The safety rule needed to be enforced directly before evidence processing.
📚 What I Learned
Building WHO AM I? changed the way I think about responsible AI.
At first, I was mainly thinking about what AI could discover from someone's experiences.
While building the project, I started thinking just as much about what AI should not use and what AI should not decide.
I learned that users should be able to see where an AI interpretation came from.
I learned that uncertainty should be visible instead of hidden.
I learned that an AI-generated label and a person's own meaning should not be treated as the same thing.
I learned that deleting information should also affect conclusions created from that information.
And I learned that adding more AI is not always the answer.
Sometimes the better experience is one useful question followed by space for the person to decide.
🏆 What I'm Proud Of
WHO AM I? doesn't depend on AI being perfectly right.
A user can:
Share a clue
→ Watch Happiness DNA grow
→ See a possible pattern
→ Ask Why?
→ Inspect the evidence
→ Use Prove Yourself Wrong
→ Define the meaning in their own words
→ Carry that meaning into Compass
→ Inspect everything in Vault
→ Delete evidence
→ Watch the AI reconsider
Throughout the journey:
AI reflects. You decide.
🚀 What's Next
I want to explore:
- evolving Happiness DNA across different chapters of life
- voice-based and more accessible reflection
- stronger semantic counter-evidence retrieval
- more private/local AI options
- improved keyboard, screen-reader, and reduced-motion accessibility
- real-user studies focused on reflective clarity
--
❤️ WHO AM I?
WHO AM I? doesn't tell you how to be happy.
It gives you a space to discover what happiness means to you.
The AI can reveal the patterns. You decide what they mean.
Every moment leaves a clue. What do yours say about you?
Built With
- ai
- css
- docker
- embeddings
- fastapi
- github-actions
- html
- javascript
- llm
- openai
- python
- render
- sqlalchemy
- sqlite
Log in or sign up for Devpost to join the conversation.