Write it the way you'd brief a colleague. The engine works out what to send, where, when and with which offer, in milliseconds.
Mention when they last bought, how they feel about discounts, their channels, what they click, what they buy.
Send-time optimization, channel affinity, offer testing and churn scores each answer one fixed question. The decision engine answers whatever question you give it, because each question is just a set of possible answers.
Customer state is plain, readable facts. No feature engineering, no data science ticket.
lifecycle.lapsed: true commercial.discount_sensitivity: full_price engagement.preferred_channels: [email, push] content_response.responds_to: [new_arrival]
Timing, channel, offer, next step in a journey, audience forecast. Add a new question without training a new model.
Which send window maximizes
conversions per day?
this_week | next_week | two_weeks | next_month
Every answer gets a calibrated probability, so you see the confidence behind the call, not just the call.
Here's everything the engine can tell you about the customer you described. Change the message or fine-tune a trait and every answer updates at once. Then ask it a question it has never seen.
The engine scores every offer on every channel for the same customer in one batch. The deepest discount often wins on conversion. It rarely wins on margin.
The same month of campaigns, first as a batch-and-blast calendar, then with the engine deciding each send in order as message load builds. It can hold a message, switch the channel or change the creative.
The same engine works on a whole audience. Give it a segment, a campaign and a goal. It forecasts the purchase rate and shows which change would raise your odds.
Forecast across the whole audience
Five customers from the held-out evaluation set, five calls. Make your pick, then see what the live engine answered.
The Cordial Decision Engine answers the questions your team asks every day, for every customer, fast enough to run on every send. Let's point it at yours.