Automated KPI and Bonus Calculation for a Call Center

National telecom call center Standard
Taken to
  1. Seed
  2. PoC
  3. MVP
  4. Production
  5. Chasing perfect

Turns a manual, opaque monthly bonus calculation into an automated, self-service pipeline operators and managers can both see.

~600
operators scored
3
approval stages
monthly
KPI and bonus cycle
self-service
intermediate KPI access
Pipeline diagram: source systems (call logs, chats, work-time, motivation and bonus data, ERP employee data) feed an ETL stage of Airflow, Meltano and dbt into one analytics database where KPIs are computed, then approved data passes a three-stage Django review (analyst, supervisor, division head) before payroll, with Metabase reporting alongside.

Where the data comes from

The manual monthly grind

This client is a large national telecom that runs a call center for government services: when the chatbot cannot answer a hard question, it hands the user to a support operator. Around 600 operators work there, and bonuses depend on the quality of their work.

The data that decides those bonuses was scattered: call logs, chat transcripts, work-time records, motivation metrics and the bonus figures themselves, plus employee details in the company's 1C system. Every month analysts pulled it together by hand, computed each operator's KPIs, and passed the results to division heads.

The old way had four problems. It was slow. It mixed objective metrics (wait time, answer quality) with subjective ones set by managers, like onboarding new staff. Manual KPI edits by managers were not always logged. And nobody saw intermediate results: operators and managers only learned the KPI at payout, too late to act on it.

What we do with it

One pipeline, one review flow

We built one pipeline and one review flow on top of it. ETL jobs, with Airflow orchestrating Meltano and dbt, collect data from the source systems, clean it and load it into a single analytics database, where KPIs, weights, penalties and bonus coefficients are computed. Employee structure (id, division, tenure, manager) comes from 1C, so every KPI maps onto the org chart. Metabase visualizes the numbers.

Review and approval happen in a Django Administration interface, in three stages. An analyst checks that the ETL loaded correctly and the metrics are right, fixes gaps and marks the report checked by analyst. A supervisor reviews each operator, adjusts a metric where it does not reflect reality (for example extra duties like onboarding), leaves a comment and marks it checked by supervisor. The division head then sees a summary with every check and comment, approves it for payment, drops anyone who should not be paid, and the system hands the approved bonuses to payroll. Every manual correction is logged.

  1. 01 Collect call logs, chats, work-time and bonus data via ETL
  2. 02 Clean and load it into one analytics database
  3. 03 Compute KPIs, weights, penalties and bonus coefficients
  4. 04 Map onto the org chart from 1C (id, division, tenure, manager)
  5. 05 Review and approve in Django admin: analyst, then supervisor, then head
  6. 06 Hand approved bonuses to payroll, report in Metabase

Stack

Apache AirflowMeltanodbtDjango AdministrationMetabase

What comes out

A transparent bonus process

The monthly bonus calculation went from a manual, opaque routine to an automated, transparent one. Operators and managers can see KPIs as they build, instead of learning them at payout. Manual checks dropped, which cut errors in the bonus figures, and analysts and heads decide faster.

The result is a clearer, more manageable motivation program and more accurate calculations, with the internal process tidied up end to end.

Want this on your line?