> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ravenna.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Deal desk

> Run a deal desk reps do not route around: an exception-only intake, CRM context pulled automatically, thresholded approvals, and a cycle time you report on weekly.

export const Checkbox = ({items = []}) => {
  const [checked, setChecked] = useState(Array(items.length).fill(false));
  const toggle = index => {
    setChecked(prev => {
      const copy = [...prev];
      copy[index] = !copy[index];
      return copy;
    });
  };
  return <div className="custom-checkbox-list">
      {items.map((text, index) => <div key={index} className="custom-checkbox-item flex items-center mb-2">
          <input type="checkbox" checked={checked[index]} onChange={() => toggle(index)} className="mr-2" />
          <span>{text}</span>
        </div>)}
    </div>;
};

A deal desk has one job and one failure mode. The job is deciding on pricing and terms exceptions. The failure mode is being slow enough that reps stop asking.

Everything on this page is in service of cycle time.

<Info icon="list-check">
  **Prerequisites:** a RevOps workspace with a public channel, and [HubSpot](/integrations/hubspot/overview) connected if you use it. Approvals need the [approval flows](/guides/playbooks/approval-flows) playbook.
</Info>

## What good looks like

<Checkbox
  items={[
"Standard-terms deals never touch the desk",
"An exception request arrives with the deal, the amount, and the ask already on it",
"A discount inside the standard band is approved in under an hour",
"Reps can see what has been approved before, so precedent does the work"
]}
/>

<Steps>
  <Step title="Publish the standard band, then only handle exceptions">
    The highest-leverage move is not a form. It is writing down what does not need approval.

    Document the discount band a rep can offer unilaterally, the standard payment terms, the standard term length, and the standard liability position. Index it as knowledge so the agent answers "can I offer 12 percent" without a ticket existing.

    Most deal desks find that half their volume was reps checking something already permitted.

    <Callout icon="link" color="#6B7280">Learn more in [structuring knowledge for AI](/guides/best-practices/knowledge-for-ai)</Callout>
  </Step>

  <Step title="Ask for the ask, not the deal">
    The rep should not retype what the CRM already knows. Four fields:

    | Field           | Type                                                                     | Why                                                           |
    | --------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------- |
    | Deal            | Text                                                                     | The CRM deal name or ID, so everything else can be looked up  |
    | Exception type  | Select: discount, payment terms, term length, non-standard clause, other | Drives the approval path                                      |
    | Requested value | Number or text                                                           | The discount percentage, the net terms, the specific clause   |
    | Justification   | Text                                                                     | Competitive pressure, expansion commitment, strategic account |

    Add **Amount** as a workspace custom field populated from the CRM lookup rather than typed. Threshold routing needs it to be a real number field.

    <Callout icon="link" color="#6B7280">Learn more about [custom fields](/documentation/tickets/forms/custom-fields)</Callout>
  </Step>

  <Step title="Let the agent fetch the deal">
    This is what makes the desk feel fast. With HubSpot connected, an agent rule can find the deal and put its amount, stage, close date, and owner on the ticket before an approver opens it.

    <Prompt description="When a deal desk request names a deal or a company, use @Search deals with HubSpot to find it. Post the deal amount, stage, expected close date, and owner as a comment on the ticket. If you cannot find a matching deal, ask the requester for the deal link rather than guessing.">
      When a deal desk request names a deal or a company, use @Search deals with HubSpot to find it. Post the deal amount, stage, expected close date, and owner as a comment on the ticket. If you cannot find a matching deal, ask the requester for the deal link rather than guessing.
    </Prompt>

    For a CRM other than HubSpot, build the lookup as a [Foundry](/guides/how-to/foundry/overview) action and call it from a workflow's update step instead. The [Foundry examples](/guides/how-to/foundry/examples) page has this exact pattern.

    <Callout icon="link" color="#6B7280">Learn more about [HubSpot agent tools](/integrations/hubspot/agent-tools)</Callout>
  </Step>

  <Step title="Threshold the approvals, and keep the first round cheap">
    One approval template with skip conditions, sized so most requests clear in one round:

    | Round         | Policy          | Approvers                      | Skip condition                              |
    | ------------- | --------------- | ------------------------------ | ------------------------------------------- |
    | Sales manager | Any can approve | Requester's manager            | Discount is 10 percent or less              |
    | Deal desk     | Any can approve | RevOps group                   | None, always runs                           |
    | Finance       | Any can approve | Finance group                  | Discount is 25 percent or less              |
    | Legal         | Any can approve | Legal group                    | Exception type is not a non-standard clause |
    | VP Sales      | Any can approve | Requester's skip-level manager | Amount is under your strategic threshold    |

    Skip conditions skip a round when they **match**, so each one expresses when the round is *not* needed. Use **Any can approve** throughout. Consensus is the wrong policy on a desk optimized for speed.

    <Callout icon="link" color="#6B7280">Learn more about [skip conditions](/documentation/tickets/approvals/templates#skip-conditions)</Callout>
  </Step>

  <Step title="Run the independent reviews at the same time">
    Finance and Legal do not depend on each other. Put them in the same stage so they run in parallel, and a deal needing both takes one round-trip rather than two.

    <Callout icon="link" color="#6B7280">Learn more about [parallel rounds](/documentation/tickets/approvals/rounds#run-rounds-in-parallel)</Callout>
  </Step>

  <Step title="Set an SLA you would be embarrassed to miss">
    This is the adoption mechanism. Reasonable targets:

    * Standard discount approvals: first response within one business hour
    * Non-standard clauses: within four business hours
    * Anything with a close date this week: highest priority, regardless of size

    Measure against a business schedule covering your sales team's hours, not headquarters hours. A rep in another region should not wait overnight.

    Add a workflow on the close-date field so a deal closing within five days gets escalated automatically. That single rule prevents most of the end-of-quarter chaos.

    <Callout icon="link" color="#6B7280">Learn more in [SLAs and business hours](/guides/playbooks/slas-and-business-hours)</Callout>
  </Step>

  <Step title="Keep precedent visible">
    A public channel is the cheapest precedent database you will ever build. When an exception is approved, the reasoning is in the thread, and the next rep with the same situation finds it.

    Where a decision sets a lasting rule, promote it into the knowledge base so the agent can quote it. That is how the standard band gets wider over time without the desk getting busier.
  </Step>

  <Step title="Report cycle time, not volume">
    Volume tells you how busy you are. Cycle time tells you whether reps will keep using the desk.

    Three charts, reviewed weekly:

    * Time from submission to final approval, by exception type
    * Approval volume per approver, which finds the bottleneck
    * Requests by discount band, which tells you whether your standard band is set correctly

    If most requests cluster just above your unilateral limit, the limit is too low and you are creating work for yourself.

    <Callout icon="link" color="#6B7280">Learn more in [reporting and briefs](/guides/playbooks/reporting-and-briefs)</Callout>
  </Step>
</Steps>

## Where teams get this wrong

<AccordionGroup>
  <Accordion title="No published standard band">
    Half the desk's volume is reps checking something already allowed.
  </Accordion>

  <Accordion title="All must approve">
    It doubles the cycle time and rarely changes the decision.
  </Accordion>

  <Accordion title="Making the rep retype deal data">
    The CRM has it. Look it up.
  </Accordion>

  <Accordion title="A private channel">
    Precedent is the point.
  </Accordion>

  <Accordion title="Approvers with no deadline">
    A deal desk without an SLA becomes a DM habit within a month.
  </Accordion>
</AccordionGroup>

## Next

<CardGroup cols={2}>
  <Card title="Tooling requests" icon="wrench" href="/guides/playbooks/revops/tooling-requests" horizontal>
    The other half of the RevOps desk.
  </Card>

  <Card title="Approval flows" icon="check-check" href="/guides/playbooks/approval-flows" horizontal>
    Rounds, policies, and timeouts.
  </Card>
</CardGroup>


## Related topics

- [RevOps and Sales Ops](/guides/playbooks/revops/overview.md)
- [Tooling requests](/guides/playbooks/revops/tooling-requests.md)
- [Playbooks](/guides/playbooks/overview.md)
- [Guides](/guides/overview.md)
- [Approval flows](/guides/playbooks/approval-flows.md)
