A 311 bot reuses a large static policy block on every Claude call. Which cost optimization fits?
Select an answer to reveal the explanation.
Short Explanation
That big policy preamble barely changes—cache it so you're not paying full freight on every 311 turn.
Full Explanation
Enabling prompt caching on the large static policy block reused every 311 call is the correct cost optimization because identical system or tool preamble tokens need not be billed at full price on every resident turn. Municipal 311 bots typically prepend the same ordinance excerpts, routing rules, and tone guidelines; caching that stable prefix cuts spend and often latency while preserving answer grounding. The optimization works when the policy block is truly static across calls and marked for cache use according to the Claude client's caching controls.
Caching prompts at the message level to reduce token usage on follow-up questions fails to address this case because the expensive part is the static policy block repeated on every fresh call, not the back-and-forth of a single conversation—message-level caching inside one chat does nothing for the next resident's brand-new 311 call.
Storing the static policy block in the Message Batches API for nightly processing fails because the 311 bot needs the policy block on every live resident call, not in an asynchronous nightly batch—batching is for offline throughput, not real-time per-call prompt cost.
Shifting the static policy block to the end of the prompt after user input fails because prompt caching depends on a stable prefix; placing the policy after variable user text means the cacheable prefix changes every call, so the block won't hit the cache and the cost problem remains.
Exam caveat: cached prefixes must be invalidated when policy changes; serving a stale cached ordinance block is a correctness incident, not a FinOps win. Operational check: measure cache hit rate and token cost before/after enabling caching on the static 311 policy prefix, force a controlled policy revision, and verify the new version becomes the live prefix without residual stale cache answers in production samples.