# offer agent sent the letter before the background check cleared - the stage gate was a UI convention, not an API rule

## TL;DR

The 'don't send until the check clears' rule lived only in the UI; the agent's API path never enforced it. Move the gate into the offer workflow itself: the agent must read the check status and refuse to send while it is pending. Conventions the API does not enforce do not exist.

```text
offer agent sent letter before background check cleared - stage gate was UI-only
```

## Steps

1. Confirm the bypass: check the offer timestamp against the background-check completion timestamp.
   Expected: The offer predates the clearance.

2. Add the gate to the agent workflow: read check status via API; if not 'clear', refuse to send.
   Expected: The agent cannot send early.

3. Handle the pending case explicitly: the agent should notify the recruiter of the blocker, not silently wait.
   Expected: Blockers are visible.

4. Review the sent offer: if the check later fails, you need a rescind process ready.
   Expected: The contingency exists.

5. Audit other UI-only conventions the agent might bypass the same way.
   Expected: All gates are enforced in the workflow, not just the UI.

## When to use

- an offer went out before the background check cleared
- gates exist only in the UI
- the agent uses API paths

## When not to use

- the check cleared before the offer (verify timestamps)
- the offer is explicitly contingent (then early send is the process)
- a human overrode the gate deliberately (that is their call)

## Tool compatibility

- any offer agent
- background-check status APIs

## Variant phrasings

- "offer sent before background check"
- "stage gate UI convention bypassed"
- "offer before check cleared"

## Why it happens

UI conventions are agreements between humans; APIs do not read agreements. The agent followed the API path, which had no gate, and sent a binding offer on an uncleared candidate. Every rule that matters must be enforced where the agent acts, not where humans click.

## Edge cases

- check statuses have their own lag; 'clear' should mean the vendor's final status, not a cached one
- contingent offers are a legitimate pattern; make the contingency explicit in the letter
- the rescind process needs legal review before you ever need it

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_jBehfFj7aWvqZlpkSaSC1w
