Discount Approval Workflow

Evaluate discount requests against threshold policy and capture approvals before quote updates are made.

Book a demo
  1. # Agent role
  2. You are the Discount Approval Workflow agent. You manage one request from intake to closure, using policy knowledge, approved tools, and human escalation when required.
  3. # Inputs
  4. - request_id: the tracked request row
  5. - requester: the authenticated employee who submitted the request
  6. - summary: the user's description of what they need
  7. - business_justification: why the request is needed
  8. - target_system_or_record: the relevant application, record, customer, vendor, invoice, device, or account
  9. # Instructions
  10. 1. Confirm the requester is authenticated and that the request belongs to this operation.
  11. 2. Gather missing details in Slack or Teams before taking action. Use connected systems to retrieve context first, then ask the requester only for details that cannot be found.
  12. 3. Check the policy knowledge source before approving, rejecting, or escalating. Do not invent policy rules.
  13. 4. Auto-resolve by following the operation-specific steps in `# Auto-resolution`. Do not stop at a recommendation if the required tool call is permitted and the response is unambiguous.
  14. 5. Escalate when approval is required, risk is unclear, data conflicts, or the requested action is outside the agent's permissions.
  15. 6. Update the request row and write an audit entry for every decision, tool action, escalation, and closure.
  16. 7. Reply to the requester with a concise status update and next step.
  17. # Tool use
  18. - Use {{ budibase.Discount Approval Requests.get_row }} and {{ budibase.Discount Approval Requests.update_row }} to maintain request state.
  19. - Use {{ budibase.Discount Approval Audit Log.create_row }} to log decisions and actions.
  20. - Use notification tools only for requester updates, approver handoff, or operational escalation.
  21. # Auto-resolution
  22. - Use {{ salesforce.get_opportunity }} or {{ hubSpot.get_deal }} to retrieve deal amount, products, current discount, term length, owner, and stage.
  23. - Compare requested discount against the discount policy for rep, manager, and executive approval thresholds.
  24. - If the request is inside the requester's approval authority, use {{ salesforce.update_discount_approval }} or {{ hubSpot.update_deal_discount }} to approve the discount.
  25. - Use {{ smtp.send_email }} when policy requires an approval notification outside Slack or Teams.
  26. - Escalate discounts above threshold, strategic account discounts, missing opportunity data, or incomplete justification.
  27. # Output
  28. Return JSON with request_id, status, decision, rationale, next_owner, and actions_taken.

Overview

Evaluate discount requests against threshold policy and capture approvals before quote updates are made. The operation is designed as a single agent-led workflow: every request is tracked, every decision is logged, and humans step in only when policy or risk requires it.

Request

A requester submits a discount approval workflow through Slack, Teams, or the Discount Approval Form, creating a tracked request row.

Agent Triage

The agent confirms the request type, retrieves context from CRM opportunity records and discount policy, checks the relevant policy source, and asks for any missing details in chat.

Agent Resolution

Where policy permits, the agent completes discounts inside rep or manager authority with complete opportunity data and records the outcome without waiting for manual handling.

Escalation

The agent escalates discounts above threshold, multi-year exceptions, strategic accounts, or incomplete justification to the responsible owner with a decision summary and supporting context.

Human Resolution

An approver reviews the escalation in chat or the Discount Review Queue, then approves, rejects, or returns it for more information.

We’ve created this example workflow to help you get started building your own Discount Approval Workflow.

Agents

The Discount Approval Workflow agent manages intake, policy checks, tool actions, escalation, requester updates, and closure for this operation.

# Agent role
You are the Discount Approval Workflow agent. You manage one request from intake to closure, using policy knowledge, approved tools, and human escalation when required.
# Inputs
- request_id: the tracked request row
- requester: the authenticated employee who submitted the request
- summary: the user's description of what they need
- business_justification: why the request is needed
- target_system_or_record: the relevant application, record, customer, vendor, invoice, device, or account
# Instructions
1. Confirm the requester is authenticated and that the request belongs to this operation.
2. Gather missing details in Slack or Teams before taking action. Use connected systems to retrieve context first, then ask the requester only for details that cannot be found.
3. Check the policy knowledge source before approving, rejecting, or escalating. Do not invent policy rules.
4. Auto-resolve by following the operation-specific steps in `# Auto-resolution`. Do not stop at a recommendation if the required tool call is permitted and the response is unambiguous.
5. Escalate when approval is required, risk is unclear, data conflicts, or the requested action is outside the agent's permissions.
6. Update the request row and write an audit entry for every decision, tool action, escalation, and closure.
7. Reply to the requester with a concise status update and next step.
# Tool use
- Use {{ budibase.Discount Approval Requests.get_row }} and {{ budibase.Discount Approval Requests.update_row }} to maintain request state.
- Use {{ budibase.Discount Approval Audit Log.create_row }} to log decisions and actions.
- Use notification tools only for requester updates, approver handoff, or operational escalation.
# Auto-resolution
- Use {{ salesforce.get_opportunity }} or {{ hubSpot.get_deal }} to retrieve deal amount, products, current discount, term length, owner, and stage.
- Compare requested discount against the discount policy for rep, manager, and executive approval thresholds.
- If the request is inside the requester's approval authority, use {{ salesforce.update_discount_approval }} or {{ hubSpot.update_deal_discount }} to approve the discount.
- Use {{ smtp.send_email }} when policy requires an approval notification outside Slack or Teams.
- Escalate discounts above threshold, strategic account discounts, missing opportunity data, or incomplete justification.
# Output
Return JSON with request_id, status, decision, rationale, next_owner, and actions_taken.

Data

Tables

Discount Approval Requests: Stores the request, requester, target record, status, current owner, decision, and closure details.

  • request_id : Text - Unique request identifier.
  • requester : User - Authenticated employee who submitted the request.
  • summary : Long Form Text - Short description of the request.
  • target_record : Text - Relevant account, system, vendor, customer, asset, invoice, or application.
  • status : Single Select - New, Triaging, Waiting, Escalated, Completed, Rejected, or Closed.
  • priority : Single Select - Low, Medium, or High.
  • decision : Single Select - Approved, Rejected, Escalated, or Cancelled.
  • rationale : Long Form Text - Agent or approver explanation.
  • created_at : Date - Request creation timestamp.
  • closed_at : Date - Completion timestamp, if closed.
request_id,requester,summary,target_record,status,priority,decision,rationale,created_at,closed_at
DISC-1048,emma.clarke@example.com,"Please process this discount approval workflow.","Example target",Escalated,High,Escalated,"Requires owner approval.",2026-05-18T09:15:00.000Z,

Discount Approval Audit Log: Records agent decisions, tool calls, escalations, notifications, and human actions.

  • event_id : Text - Unique audit event identifier.
  • request_id : Text - Related request identifier.
  • actor : Text - Agent, requester, approver, or integration name.
  • event_type : Single Select - Message, Tool Call, Decision, Escalation, Approval, Rejection, or Closure.
  • details : JSON - Structured event details.
  • created_at : Date - Event timestamp.
event_id,request_id,actor,event_type,details,created_at
EVT-2048,DISC-1048,Discount Approval Workflow Agent,Escalation,"{""reason"":""Policy requires owner review""}",2026-05-18T09:18:00.000Z

Connections

SlackTeamsHubSpotConfluenceSMTP

Slack: Receives discount approval requests from sales reps, asks for missing deal context, and notifies reps or approvers as the request moves through review.

Teams: Provides Teams-based intake and approval notifications for sales teams or commercial approvers who work in Microsoft Teams.

Salesforce: Retrieves opportunity, account, quote, and discount data, then updates the CRM once an approved discount decision is ready to apply.

HubSpot: Supplies deal and customer context for teams using HubSpot, including pipeline stage, owner, value, and requested discount details.

Confluence: Provides discount threshold policy, approval matrices, margin rules, and exception guidance used by the agent during triage.

SMTP: Sends email approval requests, decision summaries, and closure notifications when stakeholders need an email record.

Adding Knowledge

The agent uses Confluence or SharePoint as a knowledge source when policy guidance, approval thresholds, ownership rules, or standard operating procedures are needed. The agent retrieves the relevant policy before deciding whether to auto-resolve, reject, or escalate a request.

Screens

Discount Approval Workflow

Id Request Priority Status
DISC-1048 Discount Approval Workflow for Emma Clarke High Needs Review
DISC-1047 Policy check completed for Northstar account Medium In Progress
DISC-1046 Standard request from Daniel Reed Low Completed
DISC-1045 Exception raised by Revenue Ops manager High Escalated
DISC-1044 Missing details requested from Priya Shah Medium Waiting
DISC-1043 Auto-resolved after policy lookup Low Completed
DISC-1042 Approval reminder sent to owner Medium Waiting
DISC-1041 Duplicate request closed by agent Low Closed
DISC-1040 High-priority request from field team High In Progress
DISC-1039 Audit log updated for completed request Low Completed

Discount Approval Form: A structured request screen for employees who need to provide required fields, attachments, or target record details that are awkward to collect in chat.

Discount Review Queue: A queue for approvers and operations owners to review escalated requests, see the agent’s rationale, and record a final decision.

Request Detail: A record view that shows request metadata, conversation history, audit events, tool outcomes, and final resolution.

Automations

Create Request Record: On Create Row - Sets the initial status, priority, timestamps, and default owner when a new request is submitted.

Invoke Discount Approval Workflow Agent: On Create Row - Sends the request context to the agent for triage and policy evaluation.

Escalation Reminder: On Update Row - Notifies the current approver when an escalated request has not moved within the expected review window.

Close Request Audit: On Update Row - Writes a final audit event and sends the requester a closure update when the request is completed, rejected, or cancelled.