DEV Community

Cover image for EXHUMING ELIZA: How I Resurrected The 1966 AI Therapist with Kiro and Powered It With Amazon Nova Premier

EXHUMING ELIZA: How I Resurrected The 1966 AI Therapist with Kiro and Powered It With Amazon Nova Premier

ELIZA EXHUMED is more than a hackathon project. It's a demonstration of how far we've come since 1966, and how quickly we can build with modern tools.

What if you could compare 1966 AI with 2025 AI, side by side, in the same conversation?


The Haunting Begins

Picture this: It's 1966!
Joseph Weizenbaum creates ELIZA, one of the first chatbots ever made:
A simple pattern-matching therapist that somehow convinced people it understood them. Fast forward to 2025, and I'm sitting at my computer thinking: "What if I could resurrect ELIZA... but make it spooky?"

Well...that's how ELIZA EXHUMED was born (or should I say reborn): a horror-themed chatbot that lets you toggle between the original 1966 pattern-matching algorithm and modern AI powered by Amazon Nova Premier. Built entirely with Kiro in just 4 days (well, two hours per day, therefore, in 8 hours!)for the Kiroween 2025 Hackathon.


Two Souls, One Body: The Dual-Mode Architecture

The core concept is simple but powerful: What if you could compare 1966 AI with 2025 AI, side by side, in the same conversation?

Traditional Mode: The Ancient Dead Ghost of 1966

In Traditional Mode, ELIZA uses the original pattern-matching algorithm.
No Machine Learning.
No Deep Learning.
No Neural Networks.
No Transformers.
Just pure regex and reflection:

// When you say: "I feel scared"
// ELIZA matches the pattern and reflects:
"The shadows whisper that you feel scared... tell me more"

// When you say: "My family worries me"
// ELIZA transforms pronouns:
"The spirits of your family... what haunts you about them?"
Enter fullscreen mode Exit fullscreen mode

I implemented 60+ conversation patterns with spooky theming. Every response drips with atmospheric horror while maintaining that classic therapeutic vibe.

LLM Mode: The Modern Resurrection of 2025

Toggle the switch, and ELIZA transforms. Now powered by Amazon Nova Premier (us.amazon.nova-premier-v1:0), the chatbot becomes a truly intelligent, context-aware therapist with a horror personality.

The system prompt instructs Nova to be:

  • A mysterious, otherworldly therapist
  • Empathetic but atmospheric
  • Poetic and haunting in language
  • Aware of the conversation history

The difference is night and day.
Traditional ELIZA might say: "Tell me more about your mother."

Nova-powered ELIZA says: "Your mother's shadow looms large in your psyche... what memories surface when you speak her name?"


The Magic of Vibe Coding with Kiro

Here's where it gets interesting. I didn't write 5,700+ lines of code manually. I used vibe coding with Kiro: describing feelings and outcomes rather than implementation details.

Day 1: The Vision

Me: "I want to build a spooky chatbot for Kiroween that resurrects 1966 ELIZA but makes it scary and modern"

Kiro: Creates complete project architecture

  • Dual-mode system (Traditional + LLM)
  • TypeScript + Express backend
  • Spooky-themed frontend
  • Complete file structure

In 30 minutes, I had a full blueprint. No boilerplate hell. No "should I use Express or Fastify?" debates. Just a working architecture.

Day 2: The Foundation

Me: "Integrate AWS Bedrock Nova Premier for chat"

Kiro: Generates 400+ lines of production-ready code

  • Complete AWS Bedrock SDK integration
  • Environment variable handling
  • Conversation history management
  • Error recovery with fallbacks
  • OpenAI backup option

I didn't write a single line of AWS SDK boilerplate. I just described what I wanted, and Kiro generated production-quality code with proper error handling.

Day 3: The Magic Moment

This is where vibe coding truly shined.

Me: "I want hyperrealistic graphics with particles and AI-generated horror images"

Kiro: In ONE response, generates 1,100+ lines of code

  1. Graphics Service (400+ lines):

    • AWS Bedrock Stable Diffusion XL integration
    • OpenAI DALL-E fallback
    • Unsplash API integration
    • 6 procedurally generated SVG themes (ghost, demon, darkness, decay, eyes, blood)
    • Smart caching system
    • Theme-based prompt engineering
  2. Three.js Particle System (200+ lines):

    • WebGL renderer setup
    • 1000+ particles with physics simulation
    • Theme-based colors and behaviors
    • 60fps optimization
  3. Hyperrealistic CSS (500+ lines):

    • Glass morphism effects
    • Neumorphism shadows
    • 40+ keyframe animations
    • Gradient overlays
    • Scan line effects
    • Holographic text

All of this. In ONE conversation turn. And it worked perfectly on the first run.

Day 4: The Refinement Dance

Me: "The follower eyes are too big and distracting"

Kiro: Instantly updates CSS - size reduced by 50%, opacity lowered

Me: "Add a massive ghost that rises when switching to LLM mode"

Kiro: Creates 20rem ghost with resurrection animation, screen shake, flash overlay

Me: "Perfect!"

This is the beauty of vibe coding. Quick iterations with natural language.
No hunting through CSS files.
No "where did I put that animation?"
Just describe the feeling, and Kiro implements it.


Amazon Nova: The Perfect AI Partner

I chose Amazon Nova Premier for several reasons:

1. Blazing Fast Responses

Nova Premier consistently delivers responses in under 3 seconds. For a chatbot, that's the difference between feeling conversational and feeling broken.

// Average response times in production:
// Traditional Mode: ~50ms (pattern matching)
// Nova Premier: ~2.5s (full LLM generation)
// User perception: Both feel instant
Enter fullscreen mode Exit fullscreen mode

2. Context Awareness

Nova Premier maintains conversation context beautifully. It remembers what you said 5 messages ago and weaves it into responses naturally:

User: "I'm afraid of the dark"
Nova: "Darkness... a primal fear. What lurks in those shadows?"

[3 messages later]

User: "I can't sleep"
Nova: "The darkness you mentioned earlier... does it follow you 
       into your dreams? What keeps you awake in those haunted hours?"
Enter fullscreen mode Exit fullscreen mode

3. Personality Consistency

With the right system prompt, Nova Premier maintains the spooky therapist personality perfectly. It's empathetic but atmospheric, helpful but haunting.

4. Cost-Effective

For a hackathon project that might get hundreds of users, Nova Premier's pricing is reasonable. No surprise bills. (I hope)


The Hyperrealistic Graphics System

One of the coolest features is the AI-generated horror imagery. Here's how it works:

Multi-Provider Fallback Chain

1. Try AWS Bedrock Stable Diffusion XL
   ↓ (if fails)
2. Try OpenAI DALL-E 3
   ↓ (if fails)
3. Try Unsplash API
   ↓ (if fails)
4. Generate procedural SVG
Enter fullscreen mode Exit fullscreen mode

This ensures users ALWAYS see atmospheric imagery, even if APIs are down.

Theme-Based Generation

The system has 6 horror themes:

  • Ghost: Ethereal spirits and fog
  • Demon: Dark entities and flames
  • Darkness: Pure shadow and void
  • Decay: Rot and deterioration
  • Eyes: Watching, judging, knowing
  • Blood: Crimson and visceral

When you chat, the theme shifts based on conversation tone. Talk about fear? Ghost theme. Mention anger? Demon theme. The visuals adapt to your emotional state.

Procedural SVG Fallback

If all APIs fail, the system generates SVGs programmatically. Here's the ghost generator:

private generateGhostSVG(): string {
    return `
        <svg viewBox="0 0 400 400">
            <defs>
                <radialGradient id="ghostGlow">
                    <stop offset="0%" stop-color="#9d4edd" stop-opacity="0.8"/>
                    <stop offset="100%" stop-color="#240046" stop-opacity="0"/>
                </radialGradient>
            </defs>
            <ellipse cx="200" cy="200" rx="80" ry="120" 
                     fill="url(#ghostGlow)" opacity="0.6">
                <animate attributeName="ry" values="120;130;120" 
                         dur="3s" repeatCount="indefinite"/>
            </ellipse>
            <!-- Eyes, mouth, floating animation -->
        </svg>
    `;
}
Enter fullscreen mode Exit fullscreen mode

Even without external APIs, users get animated, atmospheric graphics.


The Resurrection Animation

My favorite feature: When you toggle from Traditional to LLM mode, a massive ghost (20rem tall) ascends from the bottom of the screen with:

  • Purple glow effects
  • Screen shake
  • Flash overlay
  • Horror image change to demon/extreme theme
  • 3-second dramatic crescendo

It's pure theater. It makes the mode switch feel like you're actually resurrecting ELIZA's spirit.

@keyframes resurrect {
    0% {
        bottom: -25rem;
        opacity: 0;
        transform: scale(0.5) rotate(-10deg);
    }
    50% {
        opacity: 1;
        transform: scale(1.2) rotate(5deg);
    }
    100% {
        bottom: 50%;
        opacity: 0;
        transform: scale(1.5) rotate(0deg);
    }
}
Enter fullscreen mode Exit fullscreen mode

The Tech Stack

Backend:

  • TypeScript + Express.js
  • AWS Bedrock (Nova Premier + Stable Diffusion XL)
  • OpenAI (fallback)
  • Unsplash API

Frontend:

  • Vanilla JavaScript (no framework!)
  • Three.js (particle system)
  • Chart.js (real-time stats)
  • Custom CSS (40+ animations)

Infrastructure:

  • Render (hosting)
  • GitHub (version control)
  • Environment-based configuration

Why no React/Vue/Angular? For a project this focused, vanilla JS is faster and lighter. No build complexity, no dependency hell, just pure web fundamentals.


Spec-Driven + Vibe Coding: The Hybrid Approach

I used both structured specs and vibe coding:

The Spec (Structure)

Created in .kiro/specs/spooky-eliza-chatbot/:

  1. requirements.md: 6 user stories, 30 acceptance criteria

    • Response time <5 seconds
    • Mode toggle <200ms
    • 100 message history limit
  2. design.md: Complete architecture

    • Component diagrams
    • Data models
    • API contracts
    • Error handling strategy
  3. tasks.md: 7 major tasks, 23 subtasks

    • Each linked to requirements
    • Progress tracking
    • Dependency management

Vibe Coding (Creativity)

While the spec ensured completeness, vibe coding added magic:

  • "Make it spookier" → Blood drips, fog, whispers
  • "Eyes too big" → Instant CSS refinement
  • "Add massive ghost" → Resurrection animation
  • "More dramatic" → Enhanced visual effects

Result: The spec ensured I built ALL required features. Vibe coding made them AMAZING.


The Numbers

Development Time: 4 days (would have taken 2-3 weeks manually)

Code Generated: 5,700+ lines

Time Saved: ~80%

Files Created: 35+

Technologies Integrated: 10+

Most Complex Single Generation: 1,100+ lines (graphics system)

Conversation Turns: ~60

Production Status: Live on Render


Key Lessons Learned

1. Vibe Coding > Traditional Coding for Prototypes

Describing outcomes ("make it spooky") is faster than specifying implementation ("add CSS animation with keyframes that..."). Kiro translates feelings into technical solutions.

2. Specs + Vibe = Perfect Combo

Specs ensure completeness. Vibe coding enables creativity. Use both.

3. Amazon Nova Premier is Production-Ready

Fast, context-aware, cost-effective. Perfect for real-world applications.

4. Multi-Provider Fallbacks are Essential

Never rely on a single API. Build graceful degradation from day one.

5. Performance Matters

1000+ particles at 60fps, <5s response times, <200ms mode switching. Users notice smoothness.

6. Vanilla JS is Underrated

For focused projects, skip the framework. Faster development, lighter bundle, fewer dependencies.


Try It Yourself

Demo: eliza-exhumed.onrender.com

Please Note: I am using the Free Version of Render, so the app might not show up after 15 minutes of inactivity, just wait for Render to render it, also CloudFare has been acting up the whole week, let's hope it doesn't ruin your experience with a random client side error. ok, bye!

Run it Locally:

# Clone the repo
git clone https://github.com/Ntombizakhona/eliza-exhumed.git
cd eliza-exhumed

# Install dependencies
npm install

# Set up environment variables
cp .env.example .env
# Add your AWS credentials and Bedrock model

# Build and run
npm run build
npm start

# Visit http://localhost:3000
Enter fullscreen mode Exit fullscreen mode

What's Next?

  • Voice Mode?: Speak to ELIZA with eerie voice effects (terrifying!)

The Real Magic: Kiro + Amazon Nova

Here's the truth: I'm not a frontend wizard. I'm not a Three.js expert. I've never built a particle system before.

But with Kiro and Amazon Nova, I built a production-ready app!

That's the power of vibe coding with Kiro and the intelligence of Amazon Nova Premier.


Final Thoughts

ELIZA EXHUMED is more than a hackathon project. It's a demonstration of how far we've come since 1966, and how quickly we can build with modern tools.

Joseph Weizenbaum created ELIZA to show the superficiality of human-computer interaction. Ironically, people formed emotional connections with it anyway.

In 2025, with an Agentic IDE like Kiro and LLM like Amazon Nova Premier, we can create AI that's genuinely helpful, contextually aware, and emotionally intelligent. But we can also make it spooky. 👻

The spirits are waiting. Will you chat with them?


About This Project

Built for: Kiroween 2025 Hackathon

Built with: Kiro AI IDE + Amazon Nova Premier

Built by: Ntombizakhona


Want to build something amazing with Kiro and Amazon Nova?
Start with a vision, describe the vibe, and let the magic happen. Happy coding (I meant happy vibing!) 🎃

Top comments (0)