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

# Automated Custom QA Scoring for Contact Center Calls

> Define custom QA scorecards in NeuronLens and automatically score every call against your quality criteria — no manual listening required at scale.

NeuronLens QA scoring replaces manual spot-checking with automated, consistent evaluation of every call your agents and bots handle. You define the quality criteria that matter to your business — the specific things an agent should say, disclose, offer, or do on each call — and NeuronLens scores every conversation against them. The result is an objective, reproducible quality score for each call, aggregated into per-agent and per-team leaderboards you can act on immediately.

## How QA Scoring Works

NeuronLens reads the full transcript of a call and evaluates it against your scorecard parameters. Each parameter is scored individually — binary (yes/no), on a numeric scale (0–10), or via keyword-presence detection — and the weighted scores combine into an overall call score between 0 and 100. You receive a score and an explanation for each parameter, not just a number.

<CardGroup cols={2}>
  <Card title="Binary Parameters" icon="toggle-on">
    Yes/no checks: did the agent do this thing or not? Best for mandatory steps like opening greeting, required disclosure, or call close.
  </Card>

  <Card title="Scale Parameters" icon="sliders">
    A 0–10 score with model-generated reasoning. Best for subjective quality dimensions like empathy, product knowledge, or objection handling.
  </Card>

  <Card title="Keyword Presence" icon="magnifying-glass">
    Checks whether specific required phrases or terms appeared in the transcript. Best for compliance-adjacent disclosures and regulatory language.
  </Card>

  <Card title="Weighted Aggregation" icon="scale-balanced">
    Assign a weight to each parameter so critical items (like regulatory disclosure) carry more impact than optional best-practice items.
  </Card>
</CardGroup>

## Configuring a QA Scorecard

You set up scorecards in the NeuronLens dashboard or via API. Each scorecard is reusable across campaigns and agent teams.

<Steps>
  <Step title="Open the Scorecard Builder">
    Navigate to **NeuronLens → QA → Scorecards → New Scorecard** in your dashboard.
  </Step>

  <Step title="Name and Scope Your Scorecard">
    Give the scorecard a name (e.g., "BFSI Collections – Standard") and optionally assign it to specific campaigns or agent groups so it applies automatically to matching calls.
  </Step>

  <Step title="Add Parameters">
    For each quality criterion, set a name, a description (used by the model to interpret the call), a scoring method (binary / scale / keyword), and a weight (1–10). Add as many parameters as you need.
  </Step>

  <Step title="Save and Activate">
    Save the scorecard and toggle it to **Active**. NeuronLens will apply it to all new calls that match the assigned scope, starting immediately.
  </Step>
</Steps>

<Accordion title="Example QA scorecard parameters — BFSI collections call">
  The following parameters are representative of a scorecard for a collections call in the BFSI sector. Adjust weights and scoring methods to match your quality standards and regulatory requirements.

  | # | Parameter                               | Scoring Method  | Weight | Description                                                                                                                    |
  | - | --------------------------------------- | --------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------ |
  | 1 | **Proper opening greeting**             | Binary          | 7      | Did the agent greet the customer by name and identify themselves and the organisation at the start of the call?                |
  | 2 | **Disclosed purpose of call**           | Binary          | 9      | Did the agent clearly state the reason for the call — specifically, the outstanding loan or EMI — within the first 90 seconds? |
  | 3 | **Correctly stated outstanding amount** | Keyword + Scale | 10     | Did the agent mention the exact outstanding amount, due date, and account reference? Scored on accuracy and clarity.           |
  | 4 | **Offered payment options**             | Binary          | 8      | Did the agent proactively mention at least two payment methods (e.g., UPI, bank transfer, payment link via SMS)?               |
  | 5 | **Compliance with RBI guidelines**      | Binary          | 10     | Did the agent avoid prohibited language — no threats, no contact with third parties, no calls outside permitted hours?         |
  | 6 | **Professional call close**             | Scale (0–10)    | 6      | Did the agent summarise the agreed next step, confirm the customer understood, and close the call courteously?                 |
</Accordion>

## Fetching QA Scores via API

### Single Call

```bash theme={null}
curl "https://api.vinfer.ai/v1/analytics/qa?call_id=call_abc123" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### Response

```json theme={null}
{
  "call_id": "call_abc123",
  "scorecard_id": "sc_bfsi_collections_v2",
  "overall_score": 84,
  "pass": true,
  "scored_at": "2024-01-15T10:47:00Z",
  "parameters": [
    {
      "parameter_id": "p_001",
      "name": "Proper opening greeting",
      "method": "binary",
      "weight": 7,
      "score": 1,
      "passed": true,
      "explanation": "Agent said 'Good morning, am I speaking with Ramesh Iyer? This is Priya calling from VInfer Financial.' at 00:00:04."
    },
    {
      "parameter_id": "p_003",
      "name": "Correctly stated outstanding amount",
      "method": "scale",
      "weight": 10,
      "score": 7,
      "passed": true,
      "explanation": "Agent stated the outstanding amount of ₹14,200 correctly but did not mention the due date clearly. Customer had to ask for clarification."
    },
    {
      "parameter_id": "p_005",
      "name": "Compliance with RBI guidelines",
      "method": "binary",
      "weight": 10,
      "score": 1,
      "passed": true,
      "explanation": "No prohibited language detected. Call was made within permitted hours. No third-party contact occurred."
    }
  ]
}
```

<ResponseField name="overall_score" type="integer">
  Weighted aggregate QA score for the call, on a 0–100 scale.
</ResponseField>

<ResponseField name="pass" type="boolean">
  Whether the call met your scorecard's minimum passing threshold (configurable per scorecard).
</ResponseField>

<ResponseField name="parameters" type="array">
  Array of individual parameter results. Each entry includes the parameter name, scoring method, weight, raw score, pass/fail flag, and a natural-language explanation of how the score was determined.
</ResponseField>

### Bulk QA Scoring

Submit a batch of calls for QA scoring and receive results via webhook or polling:

```bash theme={null}
curl -X POST https://api.vinfer.ai/v1/analytics/qa/batch \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "call_ids": ["call_abc123", "call_def456", "call_ghi789"],
    "scorecard_id": "sc_bfsi_collections_v2",
    "webhook_url": "https://your-server.com/webhooks/qa-results"
  }'
```

NeuronLens processes the batch asynchronously and posts each result to your webhook as it completes. You can also poll the batch status endpoint using the returned `batch_id`.

## Agent Leaderboards

QA scores aggregate automatically into per-agent leaderboards in the NeuronLens dashboard under **QA → Leaderboards**. For each agent you see:

* Average overall QA score for the selected period
* Score trend (up or down vs. previous period)
* Pass rate (percentage of calls meeting the minimum threshold)
* Weakest parameter — the single criterion where the agent scores lowest on average
* Number of calls scored

Use leaderboards to identify your top performers for recognition and your bottom performers for targeted coaching. Clicking an agent opens their individual score history and links to the specific calls that drove their averages.

<Note>
  QA scoring requires transcription to be enabled for the call. When you submit recordings via the API, include `"transcription"` in the `features` array. Without a transcript, NeuronLens cannot evaluate scorecard parameters and the call will be skipped during scoring.
</Note>

## QA Scoring API Reference

<ParamField query="call_id" type="string">
  The unique call identifier returned when the transcription job completed.
</ParamField>

<ParamField query="scorecard_id" type="string">
  The scorecard to apply. If omitted, NeuronLens uses the default scorecard assigned to the campaign this call belongs to.
</ParamField>

<ParamField query="from" type="string">
  Filter bulk QA requests to calls processed after this date (`YYYY-MM-DD`).
</ParamField>

<ParamField query="to" type="string">
  Filter bulk QA requests to calls processed before this date (`YYYY-MM-DD`).
</ParamField>

<ParamField query="agent_id" type="string">
  Filter results to a single agent's calls.
</ParamField>
