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?"
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
-
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
-
Three.js Particle System (200+ lines):
- WebGL renderer setup
- 1000+ particles with physics simulation
- Theme-based colors and behaviors
- 60fps optimization
-
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
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?"
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
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>
`;
}
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);
}
}
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/:
-
requirements.md: 6 user stories, 30 acceptance criteria
- Response time <5 seconds
- Mode toggle <200ms
- 100 message history limit
-
design.md: Complete architecture
- Component diagrams
- Data models
- API contracts
- Error handling strategy
-
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
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)