Inspiration
Dreams can feel vivid when we wake up, but small details quickly disappear. Even when we write them down, it can be hard to notice connections across weeks or months.
We built DreamThread to help people keep those details and explore their dream history. We wanted the experience to feel personal and thoughtful, while letting users decide what their dreams mean to them.
What it does
DreamThread is an AI dream journal that helps users:
- Save dreams in their own words and record how they felt.
- Find details such as places, people, objects, and events.
- Explore shared details across different dreams.
- View connections through a visual constellation.
- Ask Dream Detective questions about their saved entries.
- Open source quotes to check the evidence behind a result.
- Save personal associations and correct AI observations.
- Review journal statistics and monthly summaries.
- Export their journal or request its deletion.
DreamThread keeps original entries separate from AI suggestions. It does not treat dream symbols as having one fixed meaning or present reflections as medical advice.
How we built it
We built the frontend with HTML, CSS, and JavaScript, using a calm, dreamy visual style.
The backend uses Python and FastAPI. NVIDIA Nemotron, served through Nebius Token Factory, handles dream extraction, reflections, and comparisons. Qwen embeddings, also served through Nebius, help retrieve relevant entries.
Neon PostgreSQL with pgvector stores journal data and supports search. Supabase handles authentication. We prepared separate API and background worker services for Render, so longer AI tasks can run without blocking the interface.
Before publishing an AI result, the backend checks its structure and verifies supporting quotes against the original dream text.
Challenges we ran into
One challenge was making AI output reliable. A convincing answer is not always supported by the journal. We added source checks, structured responses, and clear separation between observations and possible reflections.
We also found that Nemotron could use its output budget before returning the JSON our application needed. Using direct-answer mode for structured calls helped resolve this.
Another challenge was handling background work safely. Users can edit or delete an entry while analysis is running. We added version checks and job controls to prevent outdated results from being published.
Accomplishments that we're proud of
We brought together journaling, retrieval, personal memory, and evidence-based AI responses in one product.
We successfully verified live Nemotron extraction and reflection through Nebius Token Factory, along with real embedding requests. We also built checks for tenant isolation, private data access, and background job recovery.
Most importantly, users can return to their original words instead of having to trust an AI explanation without evidence.
What we learned
We learned that building an AI product involves much more than writing a prompt. Authentication, retrieval, validation, job handling, and failure states all affect whether the product is useful.
We also learned that finding a matching quote does not automatically prove an interpretation. AI suggestions need careful limits, and users should stay in control of personal meaning.
What's next for DreamThread
Our next steps are to improve the full frontend-to-backend experience, evaluate retrieval and comparisons on a larger set of synthetic dreams, and make connections easier to explore.
We also want to finish and verify private voice capture and transcription before enabling it. Further work will focus on accessibility, response times, clearer explanations, and reliable deployment.
Built With
- alembic
- css3
- docker
- fastapi
- html5
- javascript
- nebius-token-factory
- neon
- nvidia-nemotron
- pgvector
- postgresql
- pydantic
- python
- qwen3-embeddings
- render
- sqlalchemy
- supabase
Log in or sign up for Devpost to join the conversation.