Warrior Knowledge Quiz Chatbot
Project status: The public demo at
wkchatbot.xyzis offline. I intentionally shut down its DigitalOcean service to eliminate ongoing hosting and API costs and reduce abuse risk. This write-up and the source repository preserve how it worked.

The Detachment 175 Warrior Knowledge Quiz Chatbot was an interactive web app I built to help my fellow Air Force ROTC cadets study the Detachment 175 Cadet Handbook. Memorizing ranks, mission statements, historical facts, and key doctrines is a constant part of cadet life, so I used OpenAI’s GPT-4o-mini model to dynamically generate varied, randomized quiz questions from the handbook content. The result was a self-assessment tool that felt different every session instead of a static flashcard list.
I designed and implemented the entire stack myself. The front end used HTML, CSS, and JavaScript with a dark/light toggle and responsive layout; the back end used Node.js and Express to call the OpenAI API, with per-session chat history so each cadet received a personalized interaction. Because the app was publicly reachable and backed by a paid API, I added express-rate-limit to cap requests per IP and used dotenv to keep API keys out of the codebase.
I later deprecated and took the app offline on purpose. The original DigitalOcean deployment is shut down, and wkchatbot.xyz should be treated as an archived domain rather than a working demo. Leaving a public LLM endpoint unattended would create unnecessary prompt-injection, abuse, and runaway-cost risks.
This project taught me as much about operating software responsibly as about building it. Wiring up an LLM is the easy part; the harder questions are how you protect a public endpoint, control cost, manage secrets, and decide when to sunset something rather than leave it exposed. Making the deliberate call to shut it down—balancing security and cost against keeping a demo live—was a useful engineering judgment lesson.
Source and implementation: sozodennis01/Det175WarriorKnowledgeChatBot
