> ## Documentation Index
> Fetch the complete documentation index at: https://docs.searchcompany.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Platform Checkers

<Note>
  **Internal Service** — These are not HTTP endpoints. They're called by the analyze-visibility orchestrator.
</Note>

## Purpose

Each platform checker queries a specific AI service and determines if the business is mentioned in the response.

## Architecture

Each platform has the same structure:

```
{platform}/
├── mini_orchestrator.py   # check_visibility() function
└── children/
    ├── api_caller.py      # API integration
    └── config.py          # Platform-specific config
```

## Function Signature

All checkers implement the same interface:

```python theme={null}
async def check_visibility(
    queries: list[str],
    business_name: Optional[str] = None,
    business_url: Optional[str] = None,
    product_name: Optional[str] = None,
) -> list[bool]
```

## How Detection Works

1. **Send Query** - Ask the AI platform the prompt
2. **Get Response** - Receive the AI's answer
3. **Evaluate** - Check if business name/URL appears in response
4. **Return Boolean** - True if mentioned, False otherwise

## Evaluation Logic

The evaluator checks for:

* Exact business name match (case-insensitive)
* Domain name match (e.g., "stripe.com")
* Partial matches with context

## Platform-Specific Notes

| Platform       | Notes                                         |
| -------------- | --------------------------------------------- |
| **ChatGPT**    | Uses GPT-4o via OpenAI API                    |
| **Claude**     | Uses Claude 3.5 Sonnet via Anthropic API      |
| **Gemini**     | Uses Gemini Pro via Google AI Studio          |
| **Perplexity** | Uses Sonar model via Perplexity API           |
| **Copilot**    | Uses Bing Chat API (requires special access)  |
| **DeepSeek**   | Uses DeepSeek Chat API                        |
| **Grok**       | Uses Grok via xAI API                         |
| **Google AI**  | Scrapes Google AI Overviews (no official API) |

## Parallel Execution

All 8 checkers run simultaneously using `asyncio.gather`:

```python theme={null}
tasks = [asyncio.create_task(checker(queries, ...)) for checker in PLATFORM_CHECKERS.values()]
results = await asyncio.gather(*tasks, return_exceptions=True)
```

## Error Handling

If a platform check fails, it returns `False` for all queries rather than failing the entire request:

```python theme={null}
if isinstance(result, Exception):
    print(f"⚠️ Error checking {service}: {result}")
    visibility[service] = [False] * len(queries)
```
