This is Part 2 of a 5-part series. Part 1 built a rule-based agent for a single ride-share zone — no LLM, just structured numbers and deterministic rules.

It worked, but with one obvious hole. An ops person doesn't type structured fields. They write something like "the event got cancelled, and there's an accident backing up traffic near the venue." Stage 1's agent only understands rain_flag/event_flag/traffic as raw values. It has no way to read that sentence at all.

This is where an LLM earns its place — for exactly two jobs a lookup table genuinely can't do, and nothing more:

Reconcile an ops note. Read the free text and correct rain_flag/event_flag/traffic before the decision runs.

Explain the decision. Write a plain-English justification for a human reviewer, after the policy is already chosen.