Inspiration
We both journal, and we both had the same feeling: the thing I'm writing about has almost certainly been written about before, probably better, by someone who lived a long time ago. We wanted a way to understand those people at the exact moment we were feeling what they felt.
What it does
PhilAI anonymously connects like-minded people in a low pressure environment that accelerates self discovery and community building. The application provides opportunity for expression through written journal entries, validated and expanded upon by literature and philosophy as well as other users. Connections to literature and philosophies are made possible through AI, namely Meta's Muse Spark and Transcribe.
You write (or speak) an entry. Muse reads it, understands the emotions and themes, and picks the two or three lines that carry the most weight. Each of those lines is matched against ~900 passages from 56 public-domain works, and the best fits come back as cards: the passage, the phrase in it that echoes or expands your line, and why it fits.
You can save passages, mark the ones that spoke to you, or share a single line to an anonymous theme room, where strangers reply under a fresh name in every thread. Before anything is shared, Muse scrubs identifying details and moderates it.
How we built it
- Muse Spark (Meta Model API) reads entries, picks lines, judges candidate passages, writes the "why this fits", scrubs identifiers, and moderates shared posts
- Muse Voice Transcribe turns speech into the entry text
- all-MiniLM-L6-v2 (Transformers.js + ONNX Runtime, vendored into the deploy) embeds each line into a 384-dimension vector
- pgvector on Supabase Postgres finds the nearest passages; Supabase also handles auth, row-level security and storage for entries, matches, rooms and feedback
- Next.js 15 / React / TypeScript / Tailwind on Vercel
- Passage library: ~1,700 candidates pulled from Project Gutenberg, tagged and quality-scored by Muse, ~900 kept
- Built with Claude Code alongside us
Challenges we ran into
We spent the first seven hours on a different identity idea before admitting it wasn't feasible in the time we had. So instead, we pivoted, but lost valuable time.
Technically, the hardest part was reliability. Muse calls from a serverless function stalled or dropped often enough that our match route timed out. We rebuilt the client to rotate models on every failure, jump to a fallback provider on stalls, and cache every verdict so nothing is generated twice.
Accomplishments that we're proud of
- A full end-to-end product
- Real semantic search over a real library
- Overcoming a dead first idea and building something we would genuinely journal into
- Working together without stepping on each other for seventeen hours straight
What we learned
Listening to each other, understanding why the other person made a call before pushing back, and deciding fast when we disagreed. On the technical side: embeddings and vector search in production, designing prompts that purposefully avoid responding instead of forcing a match, and how much of "AI reliability" is really just retry and fallback engineering.
What's next for PhilAI
The thumbs on every card are already a labelled dataset. Next is a two-tower retrieval model trained on that feedback, so the embedding space itself learns interaction instead of relying on a general-purpose text model. After that, a bigger library, more languages, and letting rooms grow into something people come back to.
Built With
- claude
- github
- meta
- muse
- next.js
- node.js
- onnx
- openai
- pgvector
- postgresql
- react
- supabase
- tailwind
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.