Inspiration

Spirit Interface was inspired by the idea of blending supernatural folklore with modern AI engineering. I wanted to create a “digital séance,” a place where a user could interact with a ghostly presence that doesn’t behave like a normal chatbot.

The Kiroween Frankenstein theme pushed me to stitch together multiple unrelated systems, including mood engines, glitch effects, time-based behavior, command parsing, and memory, into one unpredictable spirit. That idea became the core foundation of this project.

What it does

Spirit Interface is a haunted chat experience where you talk to an AI-driven ghost whose behavior evolves dynamically.

The spirit reacts based on: Mood shifts angry, cryptic, melancholic, playful, dormant Time of day more active at midnight, quieter at noon Hidden commands summon, banish, ask, and secret triggers Glitch effects tied to mood intensity Memory of previous sessions Personality steering to maintain a consistent supernatural voice

The result is a ghost that feels alive, emotional, unpredictable, and sometimes unsettling.

How we built it

Frontend and UI

Next.js 14 with TypeScript Tailwind CSS Custom glitch animations and mood-based visual effects

Core Systems

The Mood Engine is a weighted probability model influenced by user sentiment and time of day. The Command Parser interprets summon, banish, ask, and invalid commands. Ghost Memory stores conversations and summarized history. Time-Based Behavior changes tone, length, and glitch intensity depending on the hour. Ghost Entity is the AI response generator that uses mood, memory, commands, and steering.

Kiro Assist

Kiro was used for vibe coding sessions, spec-driven scaffolding, generating module boilerplate, validating architecture, creating ghost personas, and producing test scaffolds. Kiro acted like a co-developer during refactoring, testing, and iteration.

Challenges we ran into

Balancing randomness versus personality. The ghost needed to feel unpredictable but still consistent. Glitch effects without breaking accessibility required careful tuning to maintain readability. Mood Engine complexity created interesting edge cases when combining sentiment, time windows, and forced transitions. Session persistence required fallback logic for storage failures such as private browsing or quota limits. Persona steering was challenging because the ghost needed to stay cryptic and atmospheric across different moods. Performance tuning was necessary to keep animations smooth during rapid chat interactions.

Accomplishments that we're proud of

Building a multi layered AI entity that genuinely feels alive. Successfully stitching together separate subsystems into a cohesive creature reflecting the Frankenstein theme. Designing a UI that is spooky, responsive, and still accessible. Creating a Mood Engine that produces believable behavior shifts. Developing a command system that enhances immersion and mystery. Writing detailed specs, design docs, and property based tests. Using Kiro not only to generate code but also to guide architectural decisions.

What we learned

How to architect stateful AI personalities rather than simple chatbots. How mood, memory, and steering form the foundation of believable AI behavior. How to use Kiro effectively for spec driven development and automated scaffolding. How to blend frontend animation, AI logic, and system design into one cohesive experience. How small prompt changes can drastically alter AI behavior. How to manage multiple interacting subsystems without losing maintainability.

What's next for Spirit Interface

Multi ghost support, allowing users to choose between unique spirits. Voice mode with whisper styled text to speech and speech recognition. Ritual systems where multi step commands trigger rare or hidden behaviors. Multiplayer séances allowing multiple users to summon and interact with the same spirit. PWA mode enabling offline hauntings. Seasonal events such as Halloween or lunar cycle based transformations. A lore system where the ghost slowly reveals its story as you interact.

Built With

  • 14
  • agent
  • ai
  • and
  • animations
  • based
  • check
  • context
  • css
  • fallback
  • fast
  • for
  • hooks
  • hosting
  • indexeddb
  • kiro
  • localstorage
  • next.js
  • property
  • reducers
  • specs
  • steering
  • tailwind
  • testing
  • typescript
  • unit
  • vercel
  • vitest
Share this project:

Updates