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

# Automate the Routine

> Tasks that fire on events, reminders that keep the cadence, and Prompts that teach Ari how your company works, once.

export const AriMention = () => <span className="slack-mention">@Ari</span>;

export const SlackMessage = ({children, name = "Bailey", initials = "B", color = "#611f69", avatar = "/images/bailey-avatar.png", app = false, time = "2:47 PM"}) => <div className="slack-msg not-prose">
    <div className="slack-avatar" style={{
  backgroundColor: avatar ? "transparent" : color
}}>
      {avatar ? <img src={avatar} alt={name} /> : initials}
    </div>
    <div className="slack-msg-body">
      <span className="slack-name">{name}</span>
      {app ? <span className="slack-app-badge">APP</span> : null}
      <span className="slack-time">{time}</span>
      <div className="slack-text">{children}</div>
    </div>
    <div className="slack-actions">
      <button type="button" className="slack-action-btn" aria-label="Copy message" title="Copy message" onClick={e => {
  const msg = e.currentTarget.closest(".slack-msg");
  const el = msg && msg.querySelector(".slack-text");
  if (el && navigator.clipboard) {
    navigator.clipboard.writeText(el.innerText);
    const btn = e.currentTarget;
    const prev = btn.innerHTML;
    btn.innerHTML = '<svg viewBox="0 0 24 24" fill="none" stroke="#2AD48A" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>';
    setTimeout(() => {
      btn.innerHTML = prev;
    }, 1200);
  }
}}>
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <rect x="9" y="9" width="13" height="13" rx="2" ry="2" />
          <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />
        </svg>
      </button>
    </div>
  </div>;

At first, you ask Ari for things. Soon, the goal is to stop asking. Ari has
three tools for putting your AR operation on rails: **Tasks** react to events in your
systems, **Reminders** keep your cadence, and **Prompts** are the standing instructions
that make everything he does match how your company works.

## The three tools

<CardGroup cols={3}>
  <Card title="Tasks" icon="bolt" href="/ari/features/tasks">
    Event-driven: "when a Stripe invoice goes past due, send a reminder." Fires on
    activity in any connected integration.
  </Card>

  <Card title="Reminders" icon="bell" href="/ari/features/reminders">
    Time-driven: one-time or recurring nudges for you, a teammate, or a whole channel.
  </Card>

  <Card title="Prompts" icon="brain" href="/ari/features/prompts">
    Always-on: persistent instructions (payment terms, escalation rules, customer
    quirks) applied to every conversation, team-wide.
  </Card>
</CardGroup>

**Which one do I want?** If it should happen *when something occurs*, that's a Task. If
it should happen *at a time*, that's a Reminder. If it's *how Ari should always behave*,
that's a Prompt.

## Try it

<SlackMessage><AriMention /> create a task: when a Stripe invoice becomes overdue, send a payment reminder email and notify #collections</SlackMessage>

<SlackMessage><AriMention /> remind me every Monday morning at 9 AM to review overdue invoices</SlackMessage>

<SlackMessage><AriMention /> remember: our standard payment terms are net-30. For enterprise customers, use net-45.</SlackMessage>

## Chaining it together

Tasks can sequence into full workflows:

<SlackMessage><AriMention /> create a task: when a payment fails, send a reminder email. If no payment is received after 7 days, send a follow-up. If still unpaid after 14 days, notify #collections with a full account summary.</SlackMessage>

<Warning>
  Every task runs in one of two modes: **approval required** (Ari posts the plan and
  waits for you) or **auto-execute** (Ari acts immediately). Anything that contacts
  customers or modifies data defaults to approval mode. Keep it there until you've
  reviewed a few runs, and review a whole chain before enabling auto-execute on any step.
  See [Review plans and approvals](/ari/work-together/approvals).
</Warning>

## Coaching pays compound interest

The teams that get the most out of Ari front-load the coaching: billing defaults, the
collections escalation ladder, company vocabulary, and formatting preferences. Each
takes about a minute to set. See [Give Ari instructions](/ari/work-together/instructions) for the
playbook.

If Ari does something unexpected, ask `@Ari why did you do that?` and he'll tell you
which prompts he applied.

## Powered by

Tasks can listen to events from every connected integration:
[Stripe](/ari/integrations/stripe), [Chargebee](/ari/integrations/chargebee),
[HubSpot](/ari/integrations/hubspot), [Salesforce](/ari/integrations/salesforce),
[QuickBooks](/ari/integrations/quickbooks), [Email](/ari/integrations/email), and
contract events from LedgerUp itself.
