
“Hey, need a quick approval, customer wants to go under floor on the annual. Can someone take a look?”
If the question above sounds familiar to you, you already know how the next 20 minutes goes. Someone asks which SKU. The rep replies. Then a question about seat count pops up. They reply again. Then someone asks about the term, but the thread goes silent because the rep is tied up in a meeting. Then someone manually has to open a massive spreadsheet with hundreds, if not thousands of deal discount combinations, to work out whether this needs a director or the RVP, and manually creates the ticket typing in all the context so there’s a record of it.
What makes this worse is that all of this back and forth is for a policy that’s already open knowledge and written down. In almost every company I’ve looked at, the discount policy is documented, agreed on, and basically correct, but there’s nothing sitting between the Slack message and the ticket that can read it.
In one of our calls, a prospect sent me her version of that spreadsheet: bands by SKU, floors by term, and a column for who signs off once a rep goes under each one. She wanted a way to automate it, so she and her team didn’t have to spend hours doing the same dance repeatedly, so I built it in Ravenna.
I’ll walk through what it does, then be honest about the parts still held together with tape.
Why does the spreadsheet keep winning?
Spreadsheets win because they work (albeit incredibly slowly).
While people have been trying so many different ways to automate this, most of those automations don’t work when the sales rep is trying to get the deal done over a call, a DM or a Slack channel, outside the quoting tool. By the time it reaches CPQ the decision was already made and everybody’s just recording it.
The other fix is redesigning the process before automating it, but I’ve watched this one kill more projects than anything else. Somebody decides that before you can automate approvals you have to fix approvals, which means a working group, a stakeholder review, and a new tiering matrix nobody agrees on, killing the project. Meanwhile the spreadsheet is still there, still correct, still being read by hand eleven times a week.
So we didn’t touch the policy. I took her spreadsheet, turned it into JSON, and gave the Ravenna agent the ability to look things up in it.
What did I actually build?
An employee comes into the Slack channel and says they need to submit a pricing approval.
The agent picks it up and asks questions one at a time, the way a decent deal desk person would: what’s the product, how many, what term, what price are you proposing, who’s the customer. In my demo I handed it all five fields at once because I was showing a happy path. In real life a rep gives you three and forgets the rest, and the agent asks follow-ups for whatever’s missing instead of throwing a form at somebody who’s mid-negotiation.
Then it reads the request back and waits for confirmation before doing anything. While this may look cosmetic, it isn’t. Once confirmed, it runs the pricing evaluation, which calls a tool holding the customer’s own logic, so it can pull the bands for that specific SKU, seat count, and term. It came back with the floors for that combination and a verdict: the proposed price landed below the regional VP threshold, so it doesn’t follow the normal escalation path. It said so in the thread, in plain language, then asked whether I wanted this formalized as a ticket.
Just like that, the ticket was live right there in the thread. The agent did the heavy lifting, logging every detail, including SKU, seats, term, the works, and flagged it for the approver to review. He got the ping, opened the ticket, and saw the full picture: exactly what was requested, why it hit his desk, and the math behind it. He clicked approve, and that was it.
This is just the tip of the iceberg
What I showed in this demo is just a sneak peek at what the Ravenna agent can do. We’ve given it a lot more capabilities, including helping automate SARs, onboarding, offboarding and more.
If you want to see Ravenna agents in action, book a demo with the team, and we’ll show you the full workings.
Frequently Asked Questions
Do I need to change my discount policy to automate approvals?
No, and I’d argue you shouldn’t try. The agent reads your existing pricing logic, so the spreadsheet or matrix you already maintain stays the source of truth. Redesigning the policy first is the most common reason these projects never ship.
How does the agent know when to escalate?
It evaluates the request against your bands and floors for that SKU, quantity, and term, then applies whatever escalation rule your policy already specifies. In the walkthrough above, a price below the regional VP floor triggered a different approval path than a standard discount would have.
What stops it from filing a bad request?
I built in a confirmation step. The agent reads the collected fields back to the requester and waits for a yes before it runs the evaluation or creates anything. For higher-impact actions, Ravenna’s per-tool execution policies let you require an explicit approval rather than a confirmation.




