Open source · MIT · runs offline on one laptop

A contact centre that knows when to sell — and when not to.

Growth Engine is a working prototype that decides, on every contact, whether to solve or to sell. It reads what is already known about the customer before the agent says hello, holds back when it should, and turns a support call into a qualified lead when there is a real one in it.

The company in the demo is fictional. Traffic is simulated, and says so.

0contacts decided
0worth a sales conversation
0just solved, nothing offered
0likely buyers, held back anyway

How it works

Three moments in the life of one contact

1

Before the call

It decides: solve, or sell

While the customer is still in the phone menu, the engine reads their record, scores how likely they are to welcome an offer, and checks four guardrails. The agent receives a decision, not a guess.

2

During the call

It listens alongside the agent

It hears the buying signals in the conversation and suggests what to say next — with the knowledge articles the suggestion rests on. If the customer raises a complaint, it stands down.

3

After the call

It remembers, and it learns

The outcome is written to the customer's record, so tomorrow's decision reflects today's call. Outcomes train a new version of the model, which a person approves before it is used.

Try the engine

Pick a customer. Change one thing. Watch the decision move.

Nothing here is a lookup table of answers written by hand. Each result was computed by the engine from the customer's profile and exported to this page — nine customers, sixty-three combinations of circumstances each.

—

0% likely to buythe line is at 55%
UnlikelyVery likely

What we already knew

Longer bars counted for more. Green pushed towards an offer, red away from it.

Safety checks — any one turns sell into solve

    What happens next

    What if…

    One simulated day

    9,200 conversations in. 149 sales out. Most customers are left alone — and that is the point.

    The line that separates solve from sell is a business decision, not a technical one. Move it, and the engine re-decides the whole day.

    Where to draw the line

    55%
    Offer more oftenOffer less often
    Revenue a dayOffers that land on a real opportunity

    During the call

    Watch it listen

    Three conversations from the demo, replayed. The score, the signals and the advice are the engine's analysis at each turn.

    0Sales opportunity
    0Customer mood

    Buying signals heard

    What to say next

    For agents

    Practise the call before the call

    Training mode turns the engine round. It plays the customer — out loud, in their own voice — and a human agent takes the call. The customer answers back, pushes back and notices silence. At the end, the agent gets the score a live call would get, with the evidence, and one thing to work on.

    1

    Answer, and talk

    It rings. You pick up.

    The customer waits for you to speak first, then tells you why they called. You reply out loud; the microphone sends what you said when you pause. Everything the live desktop shows runs behind it.

    2

    The customer reacts

    Like a person would

    Ask a question and they answer it. Ask them to hold and they wait. Stall and they get shorter with you. Sell into a complaint and they get angry. Leave them in silence and — on the harder settings — they hang up.

    3

    Read the debrief

    Evidence, not opinion

    A quality score with the turn and the words that earned each mark, a checklist of what the call needed, how the customer felt from start to finish, and the scripted call to compare against.

    Try a reply

    The customer has just said this. Choose what you would say back — the reaction is the persona engine's own, exported from the application.

    Nine customers, nine lessons

    What the debrief says

    Why it builds skill

    Feedback with the evidence

    The quality agent cites the turn and the words that satisfied each criterion — the same rubric that scores live calls. An agent can argue with an opinion. It is harder to argue with the transcript.

    Repetition that gets harder

    The same customer at three settings: cooperative, one hard question before agreeing, two objections and a short fuse. Best scores are kept, so progress is visible.

    Help that is counted

    The advice the live desktop shows is hidden behind a Hint button. Use it when stuck — but the debrief says how many times, so the habit of doing without it forms.

    The habits transfer

    It is the real agent desktop with the real engine behind it. The signals, the score and the guardrails an agent learns to read here are the ones they will see on a live contact.

    Restraint is practised, not preached

    Two of the nine customers must not be sold to. An agent who pitches to them hears the reaction, sees the compliance breach, and learns why the engine held back.

    Safe to fail

    No real customer, no supervisor needed, no recording. Every call is scored, where manual quality review covers two or three calls per agent a month.

    Restraint

    An upset customer is never a sales opportunity

    Four rules are checked on every contact. They are code, not a model — no amount of training data can teach the engine to sell into a complaint.

    The feedback loop

    It learns from outcomes — and a person approves every change

    On a day neither model has seen

    What the new version learned to weigh differently

    1

    Champion and challenger, not online learning

    A model that reweights itself after every call cannot be audited or rolled back. Here a new version is trained, judged on unseen traffic, and promoted by a person.

    2

    It explores on purpose

    Two percent of contacts below the line are routed anyway. Without that, the model only ever sees outcomes for the contacts it already liked.

    3

    Guardrails are not learned

    Whether to sell to a customer with an unresolved complaint is not the model's decision to make, so it is never given the chance.

    Under the hood

    One data contract, three platforms

    The engine never names the platform that holds the customer's record. It asks for six operations, and which system answers is one environment variable.

    Audiences are defined once, and rendered three ways

    
        

    What this does not prove

    The fit

    The target architecture — and how much of it already runs

    Seventeen building blocks, from the phone menu to the customer's record. Select any one to read what is real in the prototype and what is a stand-in, or follow a single contact through all of it.

    Coverage

    Seven agents, and how much of each exists

    Read this first

    What is real, and what is not

    A prototype earns trust by saying where it stops. Everything in the application is labelled the same way as this list.

    The application

    Built for the room, not for the engineer

    Plain language, one focus per screen, and a guided tour in twelve steps that a presenter can run with the notes hidden.

    Run it

    Python 3.9 or later. Nothing else.

    
            

    Brand packs

    Show it as your company, without editing the code

    The demo company is fictional. A private file that git ignores maps each placeholder to the name you want on screen. Try it:

    Acme Customer Care

    Move from one individual licence to three Studio Cloud for teams licences.