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

# Personality

> Understanding how personalities shape evaluator behavior in testing

export const CopyPageButton = () => {
  if (typeof window !== 'undefined') {
    setTimeout(function () {
      if (document.getElementById('ck-tools')) return;
      var anchor = document.getElementById('content-area') || document.querySelector('.mdx-content');
      if (!anchor) return;
      if (!document.getElementById('ck-style')) {
        var s = document.createElement('style');
        s.id = 'ck-style';
        s.textContent = '#ck-tools{position:absolute;top:6px;right:0;z-index:100;font-family:inherit;}' + '.ck-row{display:inline-flex;align-items:stretch;border:1px solid rgba(0,0,0,0.15);border-radius:8px;overflow:hidden;background:#fff;}' + ':root.dark .ck-row{background:rgba(255,255,255,0.06);border-color:rgba(255,255,255,0.12);}' + '.ck-btn{padding:5px 12px;border:none;background:none;cursor:pointer;font-size:13px;font-weight:500;font-family:inherit;color:#374151;}' + ':root.dark .ck-btn{color:#d1d5db;}' + '.ck-btn:hover{background:rgba(0,0,0,0.04);}' + ':root.dark .ck-btn:hover{background:rgba(255,255,255,0.06);}' + '.ck-chevron{padding:5px 8px;border:none;background:none;cursor:pointer;font-size:14px;font-family:inherit;color:#374151;}' + ':root.dark .ck-chevron{color:#d1d5db;}' + '.ck-chevron:hover{background:rgba(0,0,0,0.04);}' + ':root.dark .ck-chevron:hover{background:rgba(255,255,255,0.06);}' + '.ck-divider{width:1px;background:rgba(0,0,0,0.12);flex-shrink:0;}' + ':root.dark .ck-divider{background:rgba(255,255,255,0.12);}' + '.ck-dd{position:absolute;top:calc(100% + 4px);right:0;min-width:180px;background:#fff;border:1px solid rgba(0,0,0,0.12);border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.1);padding:4px;display:none;z-index:200;}' + ':root.dark .ck-dd{background:#1f2937;border-color:rgba(255,255,255,0.1);box-shadow:0 4px 16px rgba(0,0,0,0.35);}' + '.ck-item{display:block;width:100%;padding:7px 12px;border:none;background:none;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit;text-align:left;color:#374151;}' + ':root.dark .ck-item{color:#d1d5db;}' + '.ck-item:hover{background:rgba(0,0,0,0.05);}' + ':root.dark .ck-item:hover{background:rgba(255,255,255,0.07);}';
        document.head.appendChild(s);
      }
      var wrap = document.createElement('div');
      wrap.id = 'ck-tools';
      var row = document.createElement('div');
      row.className = 'ck-row';
      var mainBtn = document.createElement('button');
      mainBtn.className = 'ck-btn';
      mainBtn.textContent = 'Copy page';
      var divider = document.createElement('span');
      divider.className = 'ck-divider';
      var chevron = document.createElement('button');
      chevron.className = 'ck-chevron';
      chevron.textContent = '▾';
      var dd = document.createElement('div');
      dd.className = 'ck-dd';
      function closeDD() {
        dd.style.display = 'none';
      }
      function openDD() {
        dd.style.display = 'block';
      }
      chevron.onclick = function (e) {
        e.stopPropagation();
        if (dd.style.display === 'block') {
          closeDD();
        } else {
          openDD();
        }
      };
      document.addEventListener('click', function (e) {
        if (!e.target.closest('#ck-tools')) {
          closeDD();
        }
      });
      document.addEventListener('keydown', function (e) {
        if (e.key === 'Escape') {
          closeDD();
        }
      });
      function makeItem(label, fn) {
        var b = document.createElement('button');
        b.className = 'ck-item';
        b.textContent = label;
        b.onclick = function () {
          fn();
          closeDD();
        };
        return b;
      }
      function getMarkdown() {
        var walk = function (node) {
          if (!node) return '';
          if (node.nodeType === 3) return node.textContent || '';
          if (node.nodeType !== 1) return '';
          var tag = node.tagName.toLowerCase();
          var skip = ['script', 'style', 'svg', 'noscript', 'button', 'iframe'];
          if (skip.indexOf(tag) !== -1) return '';
          if (node.id === 'ck-tools') return '';
          var ch = Array.from(node.childNodes).map(walk).join('');
          if (tag === 'h1') return '\n# ' + ch.trim() + '\n\n';
          if (tag === 'h2') return '\n## ' + ch.trim() + '\n\n';
          if (tag === 'h3') return '\n### ' + ch.trim() + '\n\n';
          if (tag === 'p') return '\n' + ch.trim() + '\n\n';
          if (tag === 'pre') return '\n```\n' + node.textContent.trim() + '\n```\n\n';
          if (tag === 'li') return '- ' + ch.trim() + '\n';
          if (tag === 'code') return '`' + ch.trim() + '`';
          return ch;
        };
        var content = document.querySelector('.mdx-content') || document.getElementById('content-area') || document.body;
        return walk(content).replace(/\n\n\n+/g, '\n\n').trim();
      }
      function copyMd() {
        var md = getMarkdown();
        navigator.clipboard.writeText(md).then(function () {
          mainBtn.textContent = 'Copied!';
          setTimeout(function () {
            mainBtn.textContent = 'Copy page';
          }, 2000);
        });
      }
      function viewMd() {
        var md = getMarkdown();
        var safe = md.split('&').join('&amp;').split('<').join('&lt;').split('>').join('&gt;');
        var html = '<!DOCTYPE html><html><head><meta charset="utf-8"><style>body{font-family:monospace;max-width:860px;margin:40px auto;padding:0 24px;line-height:1.7;white-space:pre-wrap;word-wrap:break-word}</style></head><body>' + safe + '</body></html>';
        window.open(URL.createObjectURL(new Blob([html], {
          type: 'text/html'
        })), '_blank');
      }
      function openClaude() {
        var prompt = 'Can you read this Cekura docs page ' + window.location.href + ' so I can ask you questions?';
        window.open('https://claude.ai/new?q=' + encodeURIComponent(prompt), '_blank');
      }
      mainBtn.onclick = copyMd;
      dd.appendChild(makeItem('Copy page', copyMd));
      dd.appendChild(makeItem('View as Markdown', viewMd));
      dd.appendChild(makeItem('Open in Claude', openClaude));
      row.appendChild(mainBtn);
      row.appendChild(divider);
      row.appendChild(chevron);
      wrap.appendChild(row);
      wrap.appendChild(dd);
      anchor.style.position = 'relative';
      anchor.insertBefore(wrap, anchor.firstChild);
    }, 50);
  }
  return null;
};

<CopyPageButton />

## What is Personality in Evaluators?

A personality defines how your evaluator behaves during conversations with your AI agent. It determines the language, tone, and behavioral characteristics of the testing agent, allowing you to simulate diverse real-world user interactions.

### Personality vs. evaluator

The two answer different questions, and mixing them up is the most common source of tests that quietly do not test what you meant:

| | Personality | Evaluator |
| - | - | - |
| Answers | Who is calling, and how do they sound? | What are they trying to get done? |
| Applies | As the call is placed | Turn by turn during the call |
| Owns | Voice and accent, language, speaking speed, interruption timing, idle timing, background noise, volume, network conditions | The objective, the caller's turns, the expected outcome, the attached metrics |
| Reused across | Many evaluators | Many runs |

<Warning>
  **Evaluator instructions cannot override a personality setting.** "Speak with a strong accent", "interrupt constantly", "talk very quietly" and "stay silent for 30 seconds" have no effect when written into instructions — the call runs and the result comes back, but the behavior never happened. Anything that lasts the whole call belongs on the personality.
</Warning>

The rule of thumb is duration. A trait that colours every turn (an accent, a speaking pace, ambient noise, a poor connection) is a personality. A single moment ("gets frustrated at step 4", one interruption) belongs in the evaluator's instructions.

## Why Use Different Personalities?

Testing your AI agent against different personalities helps you:

* **Identify Edge Cases**: Discover how your agent responds to challenging conversational patterns
* **Test Real-World Conditions**: Simulate environments with background noise or interruptions
* **Ensure Accessibility**: Verify your agent works well with different languages and speaking styles

## Personality Components

### Language

The primary language in which the evaluator will communicate with your agent. This ensures your AI agent is tested in the languages it's designed to support. Choose it first — personalities are language-specific, and an evaluator's `scenario_language` must match its personality's language.

### Voice (and therefore accent)

The voice is what the caller actually sounds like, and it is where the accent comes from. The `accent` shown on a personality is a **read-only label derived from its voice**, not a setting: speech is synthesised from the voice ID alone, so testing a different accent means choosing a different voice. Browse the catalog with `GET /test_framework/v1/personalities/elevenlabs_voices/` (which publishes an accent label per voice) or `GET /test_framework/v1/personalities/cartesia_voices/`, then set that id on the personality. If no listed voice has the accent or language you need, Cekura can add voices on request — contact **[support@cekura.ai](mailto:support@cekura.ai)** or your dedicated Slack support channel.

### Behavioral Characteristics

Personalities control several behavioral aspects:

* **Background Noise**: Simulates real-world conditions like calling from a busy street or office. To use a custom audio file as background — including recordings with actual voices — select the **Custom URL** option when creating a personality and provide a direct link to any audio file (e.g. `https://your-domain.com/background.mp3`). See [Creating Custom Personalities](/documentation/advanced/creating-custom-personalities) for setup steps.
* **Interruption Patterns**: Tests how your agent handles being interrupted mid-sentence
* **Speaking Pace**: Varies from slow and deliberate to fast and hurried
* **Emotional Tone**: Ranges from calm and patient to frustrated or urgent
* **Idle (stall) Behavior**: How long the testing agent waits in silence before prompting ("Are you still there?"), and how many times it prompts before giving up. Defaults are 10 seconds and 3 prompts.

<Warning>
  Behavior in this list is set on the personality and **cannot be overridden from an evaluator**. Instructions, expected outcomes, and your agent's description control what the testing agent *says* — not how long it stays silent, how fast it speaks, or when it interrupts.

  If a test needs the testing agent to stay quiet longer than the idle timeout, raise **Idle Timeout** on the personality. Because the pre-defined personalities are shared across all workspaces, they can't be edited in place — fork one into your project first, then change the timeout on the fork. See [Creating Custom Personalities](/documentation/advanced/creating-custom-personalities#advanced-settings).

  For a pause in one specific step rather than call-wide, use a `<hold>` tag in a [conditional action](/documentation/key-concepts/evaluators/conditional-actions) instead. The idle timer is paused for the duration of a hold, so a hold longer than the idle timeout does not trigger the idle prompt — you only need to change the personality when the silence is *not* inside a hold.
</Warning>

### Example Personalities

| Personality Type | Characteristics | Use Case |
| - | - | - |
| Normal Male | Calm, clear speech, no interruptions | Baseline testing |
| Interrupter | Interruptions, urgent tone, fast pace | Interruption testing |
| Normal Male - Bg Noise | Street noise, café ambiance | Real-world environment testing |
| Slow Speaker | Slower pace | Comprehension and patience testing |
| Spanglish | Multilingual Personality | Language capability testing |

## Assigning Personalities to Evaluators

When creating or editing an evaluator, you can select from:

1. **Pre-defined Personalities**: Cekura's curated collection of common user types
2. **Custom Personalities**: Your own created personalities for specific testing needs

Each evaluator can have one personality assigned to it, ensuring consistent behavior across multiple test runs.

## Creating Custom Personalities

For detailed instructions on creating your own personalities, see [Creating Custom Personalities](/documentation/advanced/creating-custom-personalities).

## Best Practices

<Tip>
  **Test with Multiple Personalities**: When running evaluators, you can select multiple personalities to ensure your agent performs consistently across user types.
</Tip>

### Recommended Personality Mix

For comprehensive testing, consider creating evaluators with:

* 60% standard, clear communication
* 20% challenging conditions (background noise, interruptions)
* 10% non-native speakers or accent variations
* 10% edge cases (frustrated users, very fast/slow speakers)

This distribution mirrors real-world user demographics while ensuring thorough testing coverage.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.