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

# Architecture

> How Ontora ingests interviews, synthesizes findings, and serves them back through the API.

Ontora's pipeline is built around three layers:

1. **Conversation layer** — voice or chat interviews conducted by an autonomous agent.
2. **Knowledge layer** — transcripts processed through chunking, embedding, and entity extraction into Postgres + Neo4j.
3. **Insight layer** — synthesis outputs (cartography, roadmap, personas) and a GraphRAG query endpoint over the campaign.

## Pipeline

When a campaign completes a conversation, a job pipeline kicks off:

```
INTERVIEW_COMPLETED
  ├─► CHUNK_DOCUMENT  (sentence-boundary, 1000 chars, 200 overlap)
  │     └─► EMBED_CHUNKS  (text-embedding-3-small → pgvector)
  └─► EXTRACT_ENTITIES_RELATIONS  (gpt-4o-mini → JSON)
        └─► UPSERT_GRAPH  (Neo4j, deduped by stable keys)
              └─► SYNTHESIZE  (cartography + roadmap + personas)
                    └─► webhook: synthesis.completed
```

Every stage is idempotent and retried up to 3× with exponential backoff.

## Multi-tenancy

Every record carries a `workspace_id`. API keys are workspace-scoped — there is no cross-workspace data access. See [Workspaces](/concepts/workspaces).

## What gets stored

| Store               | Holds                                              | Used for                           |
| ------------------- | -------------------------------------------------- | ---------------------------------- |
| Postgres (pgvector) | Documents, chunks, embeddings, jobs, conversations | Vector search, transactional state |
| Neo4j               | Entities (Person, Topic, Process), relations       | Graph traversal during GraphRAG    |
| Object storage      | Raw transcripts, audio                             | Export endpoints                   |

## Three integration surfaces

The same data is exposed through three interfaces, all backed by the same workspace API key:

* **REST API** — request/response for programmatic integration
* **MCP server** — tool-calling interface for AI agents
* **CLI** — terminal and CI-friendly wrapper around the REST API

Pick whichever fits your environment; mix them freely.
