Inspiration
I was inspired by the contrast between two worlds: the symbolic, reflective experience of tarot and the speed, adaptability, and personalization of AI. Most AI interfaces today are optimized for productivity, but I wanted to explore something more introspective and human.
That idea became Tarot AI Terminal, an immersive web app where users ask a question, draw a tarot card from a full 78-card deck, and receive a focused AI interpretation that connects the card’s symbolism to their situation.
What it does
Tarot AI Terminal is an AI-powered tarot reading experience built for the browser.
Users can:
- type a question in a full-screen terminal-style interface,
- draw a random tarot card,
- view the card image and symbolic metadata,
- and receive a concise interpretation tailored to that exact question.
The app also keeps lightweight continuity across multiple turns, so follow-up questions feel connected instead of isolated. To make the experience feel more authentic, cards are not repeated within the same session until the deck is exhausted.
How I built it
I built the project using Node.js, Express, Vanilla JavaScript, HTML, and CSS, with the OpenAI API powering the interpretation layer.
The backend handles:
- receiving the user’s question,
- drawing a valid random card,
- filtering out already-drawn cards,
- packaging recent conversation context,
- and generating a tarot-style response with the AI model.
I also built custom utilities for tarot card metadata and image retrieval so each reading includes more than just text. On the frontend, I designed a minimal black-screen interface with oversized live text and a chronological reading feed to make the experience feel immersive and intentional.
Challenges I ran into
One of my biggest challenges was preserving continuity without introducing unnecessary complexity. I wanted the app to remember enough of the conversation to make follow-up readings coherent, but I did not want to send excessive context or depend on a heavier memory system. I solved this by creating a compact rolling context made of recent turns plus short summary lines.
Another challenge was prompt quality. Tarot interpretations need to sound grounded, symbolic, and relevant to the user’s question. Getting the model to consistently produce balanced, card-centered responses took iteration.
I also had to carefully handle product details like duplicate card prevention, API failure states, and maintaining a clean user experience during loading and response rendering.
Accomplishments that I'm proud of
I’m proud that Tarot AI Terminal feels like a complete product rather than just an API demo.
Highlights I’m proud of:
- A full end-to-end tarot reading experience with immersive UX
- Session-aware card drawing across the full 78-card deck
- AI responses that combine user intent with tarot symbolism
- Lightweight conversation memory for better follow-up readings
- A distinct interface that makes the project memorable and demo-friendly
What I learned
I learned how important context compression and prompt design are when building AI-powered interactive experiences. I also learned that a strong concept becomes much stronger when the interface reinforces the idea, not just the functionality.
This project taught me that even a playful concept requires real technical tradeoffs in architecture, state management, and output quality control.
What's next for Tarot AI Terminal
In the future, I want to expand Tarot AI Terminal with:
- multi-card spreads,
- saved user sessions,
- different reading modes,
- deeper personalization,
- and a more advanced visual experience.
I see this project as the beginning of a broader idea: using AI not just for utility, but for reflection, storytelling, and emotionally resonant experiences.
Built With
- css3
- dotenv
- express.js
- html5
- javascript
- node.js
- openai-api-(openai-node-sdk)
- vanilla-js
- vercel
Log in or sign up for Devpost to join the conversation.