Inspiration
How I built 👻 The Necronomicon Mirror: An AI-Driven Conversion Story
💡 Inspiration: The Power of Provocation
The primary inspiration for The Necronomicon Mirror came from two observations:
The Kiroween Theme: I wanted to move beyond a simple "spooky skin" and create a truly haunting, yet fun, interactive experience where the user's sense of control is playfully challenged—a classic "Trick or Treat" scenario.
Marketing Fatigue: Traditional e-commerce UIs are passive. What if we used provocation marketing? By having the Kiro Ghost "hijack" the purchase (e.g., "I'm taking your seat before you!") and turning the interaction into a challenge, I trigger a strong sense of FOMO (Fear of Missing Out) and control reassertion, which acts as a powerful motivator for conversion.
The project transformed from a Costume Contest entry into a Best Startup Project prototype by integrating a core hypothesis: Can playful, AI-driven interference lead to higher-value consumer data and conversion rates?
🔨 How We Built It: AI-First Architecture
I built the project using a highly strategic AI-First architecture where Kiro managed complexity and strategy, allowing me to focus on creative storytelling within the 7-day, zero-budget constraint.
Phase 1: Foundation and UX Flow (Vibe Coding)
I started by using Vibe Coding to rapidly scaffold the Chrome Extension files (manifest.json, content_script.js) and generate the initial UX flow.
The crucial pivot was establishing the Progressive Interruption model: a gentle webpage shake and an "Yes/No" invitation (A or B) to join the game. This solved the critical UX challenge of avoiding negative interruption.
Phase 2: Strategy and Data Automation (Agent Hooks)
The Agent Hook (content_classifier_hook.js) became the project's strategy engine. It automatically identifies the webpage category (e.g., Flight, Apparel) and generates the entire payload, ensuring the animation is relevant.
Crucially, the Hook generates the three-layer A/B test data:
Layer 1 (Provocation): Randomly selecting the high- or low-provocation text ($P_{high}$ vs. $P_{low}$).
Layer 2 (Negotiation): Generating the three high-value marketing questions (e.g., "Window seat or aisle seat?") used for real-time consumer preference data collection.
This automated data generation is the source of the project's high Potential Value.
Phase 3: High-Fidelity Rendering (Vibe Coding & Canvas)
I leveraged Vibe Coding to generate the universal animation engine (animation_engine.js) using the native HTML Canvas API (zero external dependencies!).
Kiro generated complex SVG and Canvas logic for the narrative animations: the Kiro Ghost flying a micro-plane, the stylish confidence show-off, the data packet flying into the "Castle" endpoint, and the dramatic coupon "reveal" from the ghost's pocket.
🚧 Challenges I Faced and Lessons Learned
- MV3 Resource Loading Failure Challenge: The extension initially failed to fetch crucial resources like the configuration file (theme_config.json) due to strict Manifest V3 security rules.
Solution & Kiro's Role: Kiro quickly identified the necessary fix: adding the web_accessible_resources field to manifest.json.
Lesson Learned: Even simple environment configuration requires AI oversight in complex platform constraints (like Manifest V3).
- Complex Plot Animation and State Challenge: Manually coding the "Ghost flying to option" Canvas animation and the three-question state machine was too complex and time-consuming for the timeline.
Solution & Kiro's Role: We used Vibe Coding to generate the state management and Canvas drawing logic simultaneously.
Lesson Learned: Kiro's ability to fuse complex logic (state) and complex rendering (Canvas) drastically reduced debugging time for the hybrid DOM/Canvas UI.
- Negative UX Interference Challenge: The risk of immediate uninstalls due to aggressive, full-screen animation interrupting a user's flow.
Solution & Kiro's Role: We developed the 'Invitation-to-Play' UX model.
Lesson Learned: User consent is paramount. The aggressive animation must only be triggered after the user actively opts in (clicks "Yes, Join!"), which Kiro implemented via careful event-hijacking code.
- Generalizing Animation Logic Challenge: Avoiding a new script for every product category (e.g., Flight, Bras) to meet the Black Friday scalability goal.
Solution & Kiro's Role: We developed the Universal Animation Engine logic.
Lesson Learned: Kiro generated code that accepts dynamic parameters (e.g., animationType: 'Consumption/Steal', mainAssetUrl: '...') rather than hardcoding logic, ensuring scalability for future marketing campaigns.
Log in or sign up for Devpost to join the conversation.