Gate the chat with a client-side keyword filter before spending a token

The chat endpoint costs tokens and is rate-limited, and people will try to use it as a free general-purpose LLM. A cheap client-side keyword check blocks obviously off-topic questions instantly, before any network call; the server rate limit is the real backstop.