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

# Quickstart

> Send your first log to Seer in 5 minutes

> Make your first Seer log and measure retrieval quality from unlabeled traffic.

<Info title="Beta Access Required">
  Seer is in private beta. Email [ben@seersearch.com](mailto:ben@seersearch.com?subject=Seer%20Beta%20Access%20Request) to request an API key.
</Info>

<Tip>
  Prefer zero-friction integration? Use the [`@seer_trace` decorator](/sdk-python#decorator) (Python) or [`wrapWithSeerTrace`](/sdk-typescript#function-wrapper) (TypeScript) to wrap your retrieval function and auto-log query+context.
</Tip>

## Quick Start

<Tabs>
  <Tab title="Python">
    <Steps>
      <Step title="Install the Seer SDK">
        ```bash theme={null}
        pip install seer-sdk
        ```
      </Step>

      <Step title="Set your API key">
        Get an API key from the Seer Console and export it:

        ```bash theme={null}
        export SEER_API_KEY="seer_live_your_key_here"
        ```
      </Step>

      <Step title="Create quickstart.py">
        ```python theme={null}
        from seer import SeerClient

        client = SeerClient()  # reads SEER_API_KEY from env

        # Your retrieval step
        def retrieve(query: str) -> list[dict]:
            # Replace with your real retriever
            return [
                {"text": "Christopher Nolan directed Inception.", "score": 0.95},
                {"text": "Nolan is British-American.", "score": 0.89}
            ]

        query = "Who directed Inception and what is their nationality?"
        context = retrieve(query)

        client.log(
            task=query,                           # the user query
            context=context,                      # list of passage dicts
            metadata={
                "env": "prod",                    # environment tag
                "feature_flag": "retrieval-v1",   # for A/B testing
            },
        )

        print("Logged to Seer!")
        # Events are auto-flushed when the process exits
        ```
      </Step>

      <Step title="Run it">
        ```bash theme={null}
        python quickstart.py
        ```
      </Step>
    </Steps>
  </Tab>

  <Tab title="TypeScript">
    <Steps>
      <Step title="Install the Seer SDK">
        ```bash theme={null}
        npm install @seer/sdk
        ```
      </Step>

      <Step title="Set your API key">
        Get an API key from the Seer Console and export it:

        ```bash theme={null}
        export SEER_API_KEY="seer_live_your_key_here"
        ```
      </Step>

      <Step title="Create quickstart.ts">
        ```typescript theme={null}
        import { SeerClient } from '@seer/sdk';

        const client = new SeerClient();  // reads SEER_API_KEY from env

        // Your retrieval step
        function retrieve(query: string) {
            // Replace with your real retriever
            return [
                { text: "Christopher Nolan directed Inception.", score: 0.95 },
                { text: "Nolan is British-American.", score: 0.89 }
            ];
        }

        const query = "Who directed Inception and what is their nationality?";
        const context = retrieve(query);

        // No await needed! Fire-and-forget by default
        client.log({
            task: query,                           // the user query
            context: context,                      // list of passage objects
            metadata: {
                env: "prod",                       // environment tag
                feature_flag: "retrieval-v1",      // for A/B testing
            },
        });

        console.log("Logged to Seer!");
        // Events are auto-flushed when the process exits
        ```
      </Step>

      <Step title="Run it">
        ```bash theme={null}
        npx ts-node quickstart.ts
        ```
      </Step>
    </Steps>
  </Tab>

  <Tab title="cURL">
    <Steps>
      <Step title="Set your API key">
        Get an API key from the Seer Console:

        ```bash theme={null}
        export SEER_API_KEY="seer_live_your_key_here"
        ```
      </Step>

      <Step title="Send a log">
        ```bash theme={null}
        curl -X POST "https://api.seersearch.com/v1/log" \
          -H "Authorization: Bearer $SEER_API_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "task": "Who directed Inception and what is their nationality?",
            "context": [
              {"text": "Christopher Nolan directed Inception.", "score": 0.95},
              {"text": "Nolan is British-American.", "score": 0.89}
            ],
            "metadata": {
              "env": "prod",
              "feature_flag": "retrieval-v1"
            }
          }'
        ```
      </Step>
    </Steps>
  </Tab>
</Tabs>

***

## What Happens Next

As logs arrive, Seer evaluates each retrieval and computes Recall, Precision, F1, and nDCG, all without labeled data. See [Metrics](/metrics) for full definitions and worked examples.

<Info title="Sampling">
  By default, Seer evaluates \~10% of events (`sample_rate` defaults to server-side 10%). Set `sample_rate=1.0` in your `log()` call to evaluate everything during testing. See [Production Monitoring](/production-monitoring#sampling-guidance) for recommended rates.
</Info>

Use the Seer dashboard to:

* Compare variants (change testing): filter by `feature_flag` to see A/B impacts.
* Monitor production: filter by `env` or any `metadata` field.

<Tip title="Multi-step or agentic workflows?">
  If your app uses multiple retrieval steps (query decomposition, agent loops, parallel sources), the SDK auto-detects OTEL trace IDs to group related spans. See [Multi-Hop Retrieval](/multi-hop-retrieval) for patterns.
</Tip>

***

## Next Steps

* [Logging Events](/logging): Decorator/wrapper patterns, fire-and-forget vs sync, OTEL integration
* [Metrics](/metrics): What Seer computes from your logs
* [Change Testing](/change-testing): A/B test retrieval changes
* [Production Monitoring](/production-monitoring): Set up ongoing monitoring
* SDK Reference: [Python](/sdk-python) | [TypeScript](/sdk-typescript)
