Inspiration

Going into this hackathon, I kept asking myself what kinds of mental-health apps I'd actually use. The honest answer was: none of the existing ones. Mood trackers feel like clinical paperwork. Journaling prompts feel sterile. Meditation apps feel like homework. Telling my problems to a chatbot — even a smart one — felt like the worst of both worlds.

But I'd stumbled into something on my own: writing about painful events using metaphorical distance. Casting myself as a character. Calling my job the king's hall. Calling an estranged relative the brother who stayed. It made the unspeakable approachable. I later learned this is a real therapeutic technique with a research base going back forty years — Pennebaker's expressive writing studies, Michael White's narrative therapy, Clarissa Pinkola Estés' work on mythic reframing — but my own experience of it had been accidental.

Mythkeeper is my attempt to make that technique deliberate, beautiful, and one click away.

What it does

Mythkeeper turns the real events of your life into illuminated mythological chapters — in the voice of an ancient tradition you choose (Hellenic, Norse, or pan-traditional) — and binds them, one chapter at a time, into a personal Codex.

The flow is intentionally slow. You type one painful, ordinary sentence — "my mother stopped speaking to me", or "I quit a job everyone told me to keep". The Oracle asks you two clarifying questions designed to surface the emotional core, not the facts. Then it inscribes a 300–450 word mythological chapter in which you appear as an unnamed archetypal figure, the people in your life take on tradition-appropriate names, and modern objects translate into mythic equivalents — phones become speaking-stones, employers become archons, an apartment becomes the threshold.

Each chapter is saved to your Codex. After five chapters, Mythkeeper analyzes your arc and tells you which stage of the monomyth you're walking — You walk in the Belly of the Whale. You can re-spin any chapter, export one as a 1080×1080 share card, or generate a public read-only URL of just that chapter to share with someone who'd want to read it.

The aesthetic is illuminated medieval manuscript: cream parchment, vermilion drop caps, Cormorant Garamond serif, Cinzel small-caps for titles. There are no emojis anywhere. The loading state, instead of a spinner, is a vertical ink motif growing down the margin and a single line, The Codex is being inscribed — followed by the chapter streaming in token-by-token as the parchment fills with text.

It is not therapy. It does not pretend to be. It is an evidence-informed journaling surface that uses a technique psychologists already know works, given a form people actually want to use.

How I built it

The entire frontend was scaffolded conversationally in MeDo, which generated a React 19 + TypeScript + Tailwind + shadcn/ui + Zustand application from my requirements document. I then iterated on individual screens through MeDo's multi-turn chat, refining the parchment aesthetic and the streaming chapter generation flow one conversation at a time.

The heart of the app is prompt engineering, not application code. Each tradition has its own multi-paragraph system prompt that defines its vocal register, symbolic vocabulary, archetype catalog, modern-to-mythic translation table, and a hard forbidden-word list. When the user generates a chapter, the built-in LLM receives that system prompt, the user's source event, both clarifying answers, and a "Previously inscribed" context block carrying summaries of the user's last three chapters — so named figures and motifs persist across the Codex.

After every generation I run a regex check against the forbidden-word list (no phone, no email, no therapist, no husband). If a word slips through, the chapter is auto-respun once with the constraint reinforced. After every save, two small follow-up LLM calls fire in parallel — one to write a one-sentence summary of the new chapter for future context, and one to recompute the user's monomyth stage from the last five chapters' summaries and tags.

Persistence is fully client-side: the entire Codex lives in localStorage under a single key, with JSON import/export from settings. Public share URLs base64url-encode the chapter object into the URL hash, so a user can share a chapter with someone without me ever seeing the contents on a server. Zero backend, zero data risk, full social shareability.

Challenges I ran into

The hardest part wasn't the React, it was the prompts.

My first generations sounded like ChatGPT cosplaying a Greek poet. The model would write "And so, dear reader, she learned that..." and I'd want to throw the laptop. I rebuilt each system prompt from the ground up around three principles: hard forbidden-word lists, archetypal role-casting rather than character description, and an explicit rule that the chapter must end on an unresolved sensory image — never a moral. The forbidden-word regex check became my safety net for when the LLM still slipped.

The second hard problem was the loading state. Generation takes 8–15 seconds. A spinner would have shattered the sacred-object feeling I'd spent days designing toward. I replaced it with a slow ink-bloom that grows down the left margin of the parchment, the italic line The Codex is being inscribed, and then streamed the chapter token-by-token so the parchment fills with text in real time. What started as the worst part of the experience became the best part of the demo.

The third was scope discipline. I could see a thousand features — AI-generated portraits per chapter, audio narration, a "Seer" companion that asks reflective questions, a Threads ledger of unresolved emotional arcs. I cut all of them for this release. Mythkeeper had to be a single sacred object before it could be a Swiss Army knife.

A smaller but real challenge was holding the tone. Self-help apps often feel either condescending ("You're doing great today!") or clinical ("Please rate your mood from 1 to 10"). Mythkeeper had to feel like neither — it had to feel like the user was performing a private ritual, not filling out a form. Every microcopy decision, every animation curve, every default placeholder text got rewritten more times than the system prompts did.

Accomplishments that I'm proud of

  • The system prompts. They produce output that reads as real mythological prose, not LLM cosplay. I'm as proud of the constraint engineering as of any code I shipped.
  • The forbidden-word guard with automatic re-spin. It makes the difference between "neat trick" and "consistently delivers."
  • Public share URLs without a backend. Encoding the chapter into the URL hash means a user can share a Mythkeeper chapter without me ever touching a server. Zero data risk, full shareability.
  • The streaming inscription loading state. It turned a technical limitation (LLM latency) into the most emotionally resonant moment in the app.
  • The aesthetic. Cream parchment, Cormorant Garamond, vermilion drop caps, Cinzel titles, no emoji anywhere. Mythkeeper looks like nothing else built in this hackathon.
  • Building a self-help tool that doesn't feel like one. No mood scores, no streak counters, no "rate your day." Just one painful sentence, two questions, and a myth that belongs to you.

What I learned

I learned that constraint-driven prompt engineering produces better outputs than abundance-driven prompt engineering. The Mythkeeper system prompts are mostly a list of things the model is forbidden to do. The instruction "never use the word phone, always translate it to the bronze mirror or the speaking-stone" did more work than any amount of "please write in evocative mythological prose."

I learned that metaphorical distance is a measurable psychological mechanism. Pennebaker's expressive writing research (1986, replicated dozens of times since) shows that writing about emotionally difficult events in a structured way for 15–20 minutes produces measurable improvements in mood, immune function, and reduced rumination. Narrative therapy goes further: people who externalize problems by treating them as characters in their own story show better processing outcomes than those who narrate in literal first-person. I didn't invent the technique — I gave it a surface people actually want to use.

I learned that MeDo can produce surprisingly sophisticated frontends if you write the requirements document like you mean it. The doc I handed MeDo for Mythkeeper was 18,000 characters of exact data models, system prompts, controlled tag vocabularies, loading-state animations, mobile drawer behavior, and a forbidden-word safety check. MeDo scaffolded almost all of it on the first generation, and the rest was iteration through its multi-turn chat — exactly the workflow MeDo is built for.

I learned that "sacred object" is a design constraint — and an unusually strict one. Once you commit to no emoji, no spinners, no skeleton loaders, no toast notifications, you have to invent new patterns for every interaction. That constraint made the app feel like nothing else.

What's next for Mythkeeper

  • The remaining four traditions in full — Mesopotamian, Vedic, Yoruba, and Celtic system prompts at the same depth as Hellenic and Norse, with their own controlled tag vocabularies and motif libraries.
  • The Seer — a companion mode where, after enough chapters exist, an AI reader asks you reflective questions about your own Codex. "In three chapters now, you have walked away from the hall. What did the hall give you that you have not yet replaced?" This is where Mythkeeper graduates from journaling surface into a self-reflection partner — and where the mental-health value compounds.
  • Illustrations — per-chapter generated portraits of the archetypal figures, in the visual style of the chosen tradition. Held until I find an image model that can produce illuminated manuscript art at consistent quality.
  • A clinician-facing variant — therapists who already use narrative-therapy techniques could prescribe Mythkeeper as adjunct journaling between sessions. Client-side-only storage is already the right architecture for HIPAA adjacency; I'd extend it with a clinician-side dashboard for shared chapters (with explicit consent).
  • The physical Codex — a print-on-demand bound book of your chapters, hand-typeset, mailed to your door. The Codex was always meant to be an artifact. I want to finish the job.

Built With

Share this project:

Updates