# How EkLine works

EkLine runs a loop: measure what AI assistants and coding agents say and do with your product, fix what they read, have your team approve the changes, then measure again.

## Measure

**Journeys** measures what AI assistants and coding agents say and do with your product.

- A **journey** is one job for an agent: a buyer's question, or a developer's task for a coding agent. It names who is asking (a persona) and the checks an answer must pass.
- **Research** journeys ask questions of ChatGPT, Claude, Perplexity, Gemini, Claude Code or Codex. **Agent Task** journeys give a task to Claude Code or Codex.
- Each agent does the journey as many times as you set, each run a separate conversation.
- **Measured** checks are counted directly from the answer, such as whether your product is named in the first answer. **Judged** checks are graded by an AI model against a rubric, such as **you are recommended, not just mentioned**.
- A **collection** runs several journeys and shares one report. The **Buyer questions** collection asks 15 buyer questions, 10 times each on ChatGPT, Claude, Perplexity and Gemini, and shows which you win, split or lose. See [Get your first AI report](/get-started/first-ai-report/).

## Fix

**Docs Agent** and **Marketing Agent** draft the changes.

- **From a report.** Under **What went wrong**, each cause has a button: **Fix in docs** starts Docs Agent, and **Draft in Marketing** starts Marketing Agent. A collection report's **Fix these first** has **Start the fix**. The agent gets the report's evidence and checks that the gap is real before it changes anything. See [Turn a gap into a fix](/journeys/turn-a-gap-into-a-fix/).
- **Without a report.** Start Docs Agent from its editor, a pull request or merge request comment that mentions `@ekline-ai`, Slack, Discord, Jira triggers, Automations or an MCP client. Start Marketing Agent from its editor or an MCP client.

Both agents work from your repositories, the context you set under **Settings**, and your connected tools. See [Which setting to use](/agent/which-setting-to-use/).

## Approve

Your team decides what ships.

| Change | Where you review it | How it ships |
| --- | --- | --- |
| Docs Agent, docs repository | Its editor, where a **Reviewing changes** banner offers **Accept All** and **Reject All** after each turn, and you can edit | **Raise PR** asks Docs Agent to open a pull request (a merge request on GitLab). Your team merges it in GitHub or GitLab |
| Docs Agent, Confluence or Pylon | Its editor | **Update KB** publishes the edits you approved |
| Marketing Agent | Its editor | **Copy** or **Download** as Markdown or HTML. It opens a pull request only when you ask |

A pull request comment, a Slack request, a Jira trigger or an Automation can open the pull request without **Raise PR**. It still waits for your team to merge it, and Docs Reviewer can check it first like any docs change. See [How EkLine opens pull requests](/agent/how-ekline-opens-pull-requests/).

## Run it again

Once the change is published, run the journey or collection again in Journeys: **Run now** on a journey in the list, or **Run collection** on a collection. A collection report compares each later run with the first, question by question. A journey report shows how each check moved since the previous report for the same agent. Answers vary between runs even when nothing changed, so compare across many runs. See [How results are measured](/journeys/how-results-are-measured/).

## What EkLine reads and what it writes

| Place | What EkLine reads | What EkLine writes |
| --- | --- | --- |
| Docs repositories under **Where EkLine writes** (GitHub or gitlab.com) | Files and history | Branches and pull requests (merge requests on GitLab) |
| Code repositories under **What else EkLine can read** | Code and merged pull requests, to work out what changed and why | No files or pushes. Comments on pull requests: a reply when someone mentions `@ekline-ai`, and with [automatic PR review](/agent/automatic-pr-review/), at most one comment on whether docs need an update |
| Slack and Discord | The thread where someone mentions EkLine | Replies in that thread |
| Jira, Linear, Notion, Google Drive and other tools under **Settings** > **Integrations** | Tickets, pages and files, for context | Nothing on its own. A Jira trigger can comment on its ticket |
| Confluence spaces and Pylon knowledge bases under **KB Management** | Pages and articles | Edited Confluence pages, and new or edited Pylon articles, after **Update KB** |
| The public web | Public pages, when an agent researches a topic | Nothing. EkLine does not publish to your website or a CMS |

EkLine only accesses the repositories and tools you connect, with the permissions you grant. For isolation, data handling and compliance, see [Security and data](/workspace/security-and-data/) and the [EkLine trust center](https://ekline.io/trust-center).

## FAQ

### Does EkLine change our code?

Not unless you select a code repository under **Where EkLine writes**. EkLine changes files only in the repositories listed there, through a pull request or merge request. In repositories under **What else EkLine can read**, EkLine never edits files or pushes, though it can comment on pull requests.

### What does a person need to do?

Once: connect GitHub or GitLab, select the repositories EkLine writes to and reads, and fill in your Company Profile ([Set up your workspace](/get-started/set-up-your-workspace/)). Then: run a journey or start a session, review the draft, merge what you want, and run the journey again.

### Does Journeys read our private docs?

No. Journeys agents reach your docs through public web search, the way a buyer's assistant does. The documentation sites in your Company Profile are used only to recognize your pages in the answers.

### Does anything run on a schedule?

[Automations](/agent/scheduled-agents/) run Docs Agent tasks on a schedule. Journeys and Marketing Agent run only when someone starts them.