No LLM, no RAG, no vector DB — a chat interface riding a plain table query. Ask it something off-topic and watch it refuse, no model call happens at all.
📊 Live schedule — same data the chatbot reads, rendered as a real chart
📅 Demo "today" is fixed at — all "this week / right now / currently" answers are calculated relative to this date, not your real clock. Status badges in the schedule (Complete / In Progress / Not Started) are computed live from this date and the task date ranges, not hardcoded.
How this actually works — no API, no model, fully offline: every message is checked against a fixed keyword list (task, schedule, framing, drywall, inspection, crew, ...). No match → fixed refusal, nothing else happens. Match → the question is answered by querying the schedule table directly with plain logic. There is no LLM call anywhere in this demo — it can't hallucinate because nothing is generating language, it's just reading a table.
Known limitation — try these live: a fixed keyword list isn't perfect. It can let an off-topic question through by accident, or block a real one.