I built a resurrection of Ask Jeeves—the 1996 "answer engine"—for #Kiroween that finally delivers on the original promise: direct answers to natural language questions instead of link lists. The twist: it's powered by GPT-4, but forced to stay in character as a polite British butler. Formal language, honorifics like "sir" and "madam," and absolutely no modern slang.
Huge props to Kiro for helping me ship this in a weekend with its spec-driven development.
The History
Ask Jeeves launched in 1996 with a revolutionary idea: users don't want links, they want answers. But the technology didn't exist. They relied on human editors manually curating question-answer pairs—an approach that couldn't scale. The combinatorial explosion of possible questions made comprehensive coverage impossible. By 2005, they gave up and became just another search engine.
Nearly 30 years later, LLMs finally make the original vision possible.
The Setup
I wrote three spec documents before touching code: requirements.md (13 detailed requirements with acceptance criteria), design.md (architecture, TypeScript interfaces, 15 correctness properties), and tasks.md (18 implementation tasks). Each requirement had explicit criteria—things like "direct answers must be 1-2 sentences maximum," "always use honorifics," and "no URLs unless explicitly requested."
The design doc defined 15 formal correctness properties that translated directly into property-based tests using fast-check. Properties like "for any response, the relatedQuestions array SHALL contain between 3 and 5 items" became automated tests that generate random inputs and verify the property holds.
What Changed
Normally with AI coding assistants, you're constantly re-explaining context. With specs, you explain once. When I asked to "make the spooky mode more dramatic," Kiro already knew the persona constraints, the response structure requirements, and that the UI couldn't use modern CSS properties. The changes stayed within constraints automatically.
The most impressive generation was the LLM client with constraint enforcement. I described wanting "responses that maintain the Jeeves persona with strict sentence limits" and got back a complete implementation with OpenAI integration, retry logic with exponential backoff, error messages in Jeeves voice ("I beg your pardon, sir, but I require a moment to gather my thoughts..."), and post-processing that enforces constraints even when GPT-4 ignores instructions.
I also got property-based tests that scan the CSS file for modern UI properties. The test fails if it detects border-radius, box-shadow, or CSS animations (except in spooky mode where VHS effects are explicitly allowed). This enforced the 1990s aesthetic automatically.
Three Modes
Classic 1998 Mode: Short responses, simple explanations, strict persona—like the original Ask Jeeves
Enhanced Mode: Deeper explanations with analogies and examples
Kiroween Spooky Mode: The "Ghost of Jeeves" speaks from beyond, with VHS flicker effects, dark maroon palette, and cryptic footnotes
Takehome
Spec-driven development isn't just documentation—it's persistent context that shapes every interaction. The 15 correctness properties meant I could iterate quickly on features while Kiro ensured the implementation stayed correct. Property-based testing caught edge cases I never would have thought to test manually.
The combination of spec-driven development for the core architecture and vibe coding for polish worked perfectly. Specs for structure, vibes for style.
Check out the project: here
Top comments (0)