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

# Onboarding agent for new hires

> New starters ask the questions they are embarrassed to ask, and get answers from your real docs.

[← All use cases](/use-cases/overview)

<div className="uc-examples"><a href="https://github.com/anonalabs/Anona-Memory-SDK/blob/main/examples/document_qa.py">document\_qa.py</a><a href="https://github.com/anonalabs/Anona-Memory-SDK/blob/main/examples/memory_basics.py">memory\_basics.py</a></div>

## The scenario

A new engineer has thirty questions in week one and will ask maybe six of them.
The other twenty-four are the ones that feel too basic to interrupt someone
over — what does this acronym mean, who owns this service, why is there a second
staging environment.

Those are exactly the questions a document set can answer, and exactly the ones
nobody searches for because they do not know the vocabulary yet.

## Step 1 — Load what already exists

```python theme={null}
for path in ["onboarding.md", "architecture.md", "oncall-runbook.pdf", "org-chart.csv"]:
    client.upload_file(space_id="handbook", file=path, tags=["internal"])
```

No curation pass. The point of extraction is that you do not have to pre-chunk
or pre-summarise; upload what you have.

## Step 2 — Answer in the new hire's words, not yours

```python theme={null}
print(client.reason(
    space_id="handbook",
    query="Who do I ask about deploys, and is there anything I should not do in my first week?",
))
```

`reason` runs a multi-step loop rather than a single search, which is what lets
a vague question find a specific answer.

## Step 3 — Let it learn what was missing

When the agent cannot answer, that is a gap in your documentation, and it is
worth capturing.

```python theme={null}
client.record(
    space_id="handbook",
    content="New hires keep asking which environment is safe to test migrations in; it is not documented.",
    metadata={"kind": "doc-gap"},
)
```

After a month, ask it what people keep asking about. That list is your
documentation backlog, written by the people who needed it.

## Evals

1. Take ten real questions from your last new starter's Slack history.
2. Ask all ten. Score how many are answered correctly from the docs alone.
3. For each failure, check the receipt: was the answer *not retrieved*, or
   retrieved and cut? Those have different fixes —
   [see the receipt recipe](/use-cases/why-the-answer-used-what-it-used).
4. Re-run after adding the missing document. The score is the thing to track.

## Guardrails

<Warning>
  **An internal handbook contains things not everyone should read** — salary
  bands, security procedures, unreleased plans. A space is readable by everyone
  it is shared with, so put restricted material in a different space rather than
  relying on the question not being asked.
</Warning>

* **Stale docs answer confidently.** Memory does not know your runbook is two
  reorganisations old. Date what you upload, and prefer
  [a correction with a reason](/use-cases/correct-a-memory) to a silent
  re-upload.
* **Do not point it at a wiki dump and walk away.** A large corpus of
  contradictory drafts produces confident contradictions.
* **Uploads are asynchronous.** The first question asked thirty seconds after an
  upload may legitimately find nothing.

## Built from

Both are complete, runnable scripts:
[`document_qa.py`](https://github.com/anonalabs/Anona-Memory-SDK/blob/main/examples/document_qa.py),
[`memory_basics.py`](https://github.com/anonalabs/Anona-Memory-SDK/blob/main/examples/memory_basics.py).
