A water utility builds prompts from free-text resident messages. Which assembly step fits?
Select an answer to reveal the explanation.
Short Explanation
Public text can be messy—scrub resident messages before you stitch them into the Claude prompt. That keeps hostile markup and control characters from becoming instructions.
Full Explanation
Sanitizing free-text resident messages before prompt assembly is a required hygiene step when water utilities build Claude prompts from public intake. That practice works because public forms carry markup, control characters, pasted scripts, and adversarial instruction-like strings that should never be treated as trusted directives. Cleaning input preserves the utility's system policy, reduces injection surface, and keeps outage, billing, and water-quality assistants operating on message content rather than embedded control noise.
Embedding resident messages within system instructions to preserve wording detail fails conceptually because raw public text is an untrusted channel into the model context. Rendering HTML markup from resident messages to maintain rich text formatting fails because markup is not municipal authority and can smuggle overrides. Concatenating resident messages with policy text for unified context assembly fails for the same reason: unscrubbed resident content becomes part of the instruction surface and can dilute or override civic policy.
Exam caveat: sanitization is not semantic understanding—scrubbing tags does not prove the remaining natural language is harmless, so system-layer policy and output filters remain necessary. Operational check: run an intake scrubber that strips HTML/script, normalizes control characters, length-limits fields, logs scrub events for security review, and blocks prompt assembly when residual instruction-like patterns exceed the water utility's risk threshold.