Context
During user testing, some companies returned 0 results with no way to distinguish between "not in registry", "uses unsupported ATS", or "wrong slug":
"SimplePractice: 0 in ats-index (maybe the posting is old/expired). Skip."
Currently `detectAts` only checks ATS platforms with the literal slug. No variant attempts, no registry-independent fallback.
Proposal
Extend `detectAts(companyName)`:
- Generate slug variants — `simple-practice`, `simplepractice`, `simple_practice`, lowercase, hyphens/underscores stripped
- Try all adapters × all variants in parallel (rate-limit friendly — max N concurrent)
- Return a richer result with provenance:
```js
[
{ ats: 'greenhouse', slug: 'simplepractice', source: 'detected-live', confidence: 'high' },
{ ats: 'lever', slug: 'simple-practice', source: 'registry', confidence: 'high' },
]
```
Acceptance
- A company not in the registry but with a Greenhouse/Lever/Ashby board is found
- Clear empty result when truly nothing matches
- Concurrent request cap (e.g., 6 parallel) to avoid hammering APIs
- Works with real company name strings ("Simple Practice", "SimplePractice Inc")
- Unit tests with mocked `fetch`
Why this matters for MCP
A user asking an AI "does Company X hire?" shouldn't need to know their ATS. The `detect_ats` MCP tool should just work on any name.
Dependency
Depends on #4 (registry expansion) but doesn't block on it — registry is a shortcut, detect-live is the floor.
Context
During user testing, some companies returned 0 results with no way to distinguish between "not in registry", "uses unsupported ATS", or "wrong slug":
Currently `detectAts` only checks ATS platforms with the literal slug. No variant attempts, no registry-independent fallback.
Proposal
Extend `detectAts(companyName)`:
```js
[
{ ats: 'greenhouse', slug: 'simplepractice', source: 'detected-live', confidence: 'high' },
{ ats: 'lever', slug: 'simple-practice', source: 'registry', confidence: 'high' },
]
```
Acceptance
Why this matters for MCP
A user asking an AI "does Company X hire?" shouldn't need to know their ATS. The `detect_ats` MCP tool should just work on any name.
Dependency
Depends on #4 (registry expansion) but doesn't block on it — registry is a shortcut, detect-live is the floor.