# Welcome to Riff

Riff gives your procurement and operations teams working AI agents — teammates that connect directly to your ERP, take action on your behalf, and keep a full audit trail of everything they do.

Riff is built for procurement and operations teams in manufacturing — connecting directly to your ERP to take action, not just report on it.

Riff builders build **two things**:

* **Apps** — a screen your team opens and uses. Humans drive the flow; AI is a feature inside it. *Build something people open.*
* **Agents** — a worker that runs a job. Clear trigger, clear done, runs without you, escalates only what it can't decide. *Configure something that runs and reports back.*

Your first decision: which one fits your problem?

{% embed url="<https://resources.riff.ai/academy/what-riff-is.mp4>" %}

## What will you build?

**Build an App when:**

* Your team needs a screen to see data, take action, or make calls in one place
* Humans are driving the flow — the product is the interface
* You want to surface ERP data without giving everyone full ERP access

**Build an Agent when:**

* The job has a clear trigger — a schedule, an inbound message, a new ERP record
* The outcome is clearly defined: done means done
* The work repeats at volume and currently lands on a person's plate

> **Not sure?** Most procurement automation starts with an Agent. If your team also needs a screen to work the results, you'll often end up building both.

## Think of an agent like a hire

The fastest way to understand Riff: **building an agent is like bringing someone on for a job.**

You define the role. You explain the inputs and outputs. You set the rules. The agent works.

Instead of writing a job description, you describe the agent's job in plain language:

> "Chase supplier order confirmations for all open POs more than 3 days past due. Send a reminder email, log the response in our ERP, and escalate anything unresolved after 48 hours."

Riff turns that description into a working agent — one that reads from your ERP, sends emails, logs results, and escalates exceptions, every day, without manual intervention.

## What Riff agents do

Riff agents handle the work that happens *around* your ERP — the chasing, checking, matching, and escalating that your team does manually today:

* **Supplier confirmation chasing** — read open POs, contact suppliers, log responses, escalate exceptions
* **Invoice matching** — match supplier invoices to POs and GRNs, flag discrepancies, route for approval
* **RFQ automation** — send RFQs to approved suppliers, chase responses, summarise bids for buyers
* **Exception management** — monitor ERP queues, categorise exceptions, take first-line action

## What Riff apps do

Riff apps give your team the screen they need to work the data your ERP holds:

* **Supplier performance dashboard** — buyers see open POs, delivery status, and at-risk orders at a glance
* **Invoice approval queue** — finance reviews and approves matched invoices without full ERP access
* **PO status portal** — supply chain tracks order progress in a purpose-built view
* **Goods receipt visibility** — ops confirms deliveries and flags discrepancies in real time

## Who builds on Riff

Riff builders are procurement managers, supply chain leads, and operations specialists — domain experts who know their process inside out. You don't need to write code. You need to know:

* **What data you're starting with** — usually ERP records: POs, invoices, supplier master data
* **What needs to happen** — send a message, update a record, route for approval, display a status
* **What counts as an exception** — no response after N days, amount over threshold, supplier not on approved list

If you can brief a new hire, you can build a Riff agent. If you can sketch a screen on a whiteboard, you can build a Riff app.

## Your ERP stays central

Riff doesn't sit *around* your ERP — it works *on* it. Native connectors for Infor LN, Infor M3, SAP, Oracle, and Microsoft Dynamics mean your agents read live data and write results back to the system of record, not to a spreadsheet. Apps surface the same live data in purpose-built screens for your team.


# What you can build with Riff

Apps and Agents — understand which build type fits your procurement or operations job before you start.

## Two build types. One platform.

Riff gives procurement and operations teams two things to build:

* **Apps** — a screen your team opens and uses. Dashboards, exception trackers, approval portals. Humans drive the interaction. AI is a feature inside the app.
* **Agents** — a configured worker that runs a job. Monitors your ERP, chases confirmations, flags exceptions, posts digests. Runs on its own and escalates only what it cannot decide.

***

### When to build an App

Build an App when a human needs to **see something, review something, or decide something**.

> *Procurement and ops examples:*
>
> * Open PO status dashboard — your team opens it each morning
> * Supplier delivery performance tracker — updated daily from your ERP
> * Invoice exception review portal — finance approves or queries each line
> * GR/IR reconciliation view — accountants match goods receipts to invoices

***

### When to build an Agent

Build an Agent when the job **runs on its own and acts on what it finds**.

> *Procurement and ops examples:*
>
> * Supplier confirmation chaser — detects unconfirmed deliveries, sends reminders, logs responses
> * Invoice matching agent — compares invoices to POs, flags mismatches, routes to the right approver
> * Delivery exception monitor — runs daily, alerts buyers to overdue POs, escalates aged items
> * RFQ outreach agent — sends requests to supplier list, collects quotes, summarises responses

***

### Quick decision guide

| If you need to...             | Build...        | Procurement example                                    |
| ----------------------------- | --------------- | ------------------------------------------------------ |
| See live ERP data             | App / Dashboard | Open POs, delivery status, GR/IR balance               |
| Track KPIs over time          | App / Dashboard | On-time delivery rate %, invoice cycle time            |
| Monitor and chase             | Agent           | Supplier confirmation chaser, overdue delivery monitor |
| Match, reconcile, flag        | Agent           | Invoice matching agent, GR/IR reconciliation agent     |
| Combine visibility and action | App + Agent     | Dashboard shows exceptions; Agent chases open items    |

***

### You can combine them

Most procurement teams use both:

* An **App** shows your team the current state — open POs, delivery performance, invoice queue
* An **Agent** works in the background — chasing confirmations, matching invoices, flagging exceptions


# Build your first app

## Before you build — what is an app?

An app in Riff is **a screen your users open**. A dashboard to review data, a form to submit requests, a portal to look something up. You design what people see and how they interact with it. AI can live inside the app as a feature — but humans are in the driving seat.

The mental model: if your project needs a user interface — something people come back to, look at, and use — build an app.

### What makes a good app?

|                     | Question                                 | Good fit                                                      | Not quite                                                       |
| ------------------- | ---------------------------------------- | ------------------------------------------------------------- | --------------------------------------------------------------- |
| **Interface**       | Does this need a screen?                 | Users need to see data, fill in forms, or make decisions      | Nobody needs to look at it — it just runs                       |
| **Human-led**       | Do humans drive the flow?                | Users decide what to do based on what they see                | The same steps happen the same way every time — that's an agent |
| **Recurring use**   | Will people come back to this regularly? | A daily dashboard, a weekly review tool, a lookup portal      | A one-off report — just export it                               |
| **AI as a feature** | Is AI one part of a larger workflow?     | A summarisation panel, a search tool, a recommendation widget | AI is doing the whole job unsupervised — that's an agent        |

If most of those are a green light, you're in the right place.

### App vs Agent — a quick distinction

Riff gives you two things to build. Knowing which is which saves you time.

**Build an App** when humans drive the flow, the output is a screen someone opens, or AI is a feature inside a larger workflow rather than the whole job.

**Build an Agent** when the job has a clear trigger and a clear "done" state, runs repeatedly, and humans only need to review exceptions — not every step.

Many projects combine both — an agent does the routine work in the background, an app surfaces the results for your team to review.

***

## Building your app

You build in Riff through conversation. Describe what you want, and the Riff agent builds it — connecting to your data and iterating based on your feedback. No forms to fill in, no templates to fight with.

Here's how to get started.

***

## Step 1 — Click New App

From your workspace home, click **New App** in the side navigation.

<figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2FrZaP2Y2vfw51fD4GBhyi%2Fimage.png?alt=media&amp;token=3d93185c-58a9-4af7-b1fb-4335715cb3d3" alt="New app/New agent buttons"><figcaption></figcaption></figure>

This opens a conversation in the **Ask Riff** tab. The agent will ask you a series of questions to understand what you're building — who it's for, what data it should show, and what actions users need to take.

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2FKe4sv0OxV1m2e1zhuxud%2Fimage.png?alt=media&amp;token=7b9e2f64-6f58-464d-ad90-86321dea1679" alt="App onboarding in the Ask Riff tab" width="563"><figcaption></figcaption></figure></div>

Answer as naturally as you'd brief a colleague. Once it has enough to work with, the agent creates a **plan** for your app — the pages it will build, the data it will connect, and the key features it will include.

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2F4jgxvSBXnqwftu8T4hss%2Fimage.png?alt=media&amp;token=bd8612da-4180-4892-bc4f-ab26916a4a09" alt="" width="478"><figcaption></figcaption></figure></div>

Review the plan. You can keep refining it in conversation until you're aligned, or tell the agent to go ahead and start building.

{% hint style="info" %}
Spend a moment on the plan before building starts. Iterating on a plan is faster than iterating on a half-built app.
{% endhint %}

***

## Step 2 — Watch it build in Preview

Once building starts, you'll move into the **app builder**. The interface is split: **Preview** on the left, **chat** on the right.

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2FKB9DhHMk7q2koLMyzpp2%2Fimage.png?alt=media&amp;token=bf0b8503-12ea-4417-b59f-d3295f853b46" alt="" width="563"><figcaption></figcaption></figure></div>

As the agent works, the Preview updates in real time — pages appear, data populates, the layout takes shape. You don't need to do anything while it builds, but you can jump in at any point with feedback.

At the top of the builder you'll find three tabs:

**Preview** — The live running app. This is your main view as the agent builds. If something looks wrong, paste a screenshot into the chat and tell the agent what to fix.

**Tasks** — The agent's plan converted into a focused task list. This is how you can see exactly what the agent is working on and what's coming next. If a build is taking longer than expected, check here first.

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2Fnp5cipb1vsLkKU8hSYku%2Fimage.png?alt=media&amp;token=667e5170-26c8-40b9-88b3-8c78630b74cb" alt="" width="563"><figcaption></figcaption></figure></div>

**Automations** — Where scheduled tasks live. This is where you'll see any jobs the app runs on a schedule — such as pulling data from an integration or running an AI workflow at a set time of day.

{% hint style="info" %}
Not sure if the agent understood what you wanted? Switch to **Plan mode** in the chat before building starts. The agent will describe what it's going to do without acting — a useful sense-check before it dives in.
{% endhint %}

***

## Step 3 — Connect your data

At some point the agent will ask where your data comes from. You have a few options depending on your setup.

**Integrations** — If your data lives in a connected system, open the **+** tab at the top of the builder and select **Integrations**. Connect the system and the agent will use it directly. Riff connects to tools like Google Sheets, Notion, Slack, and ERP systems via API.

**Database** — Riff has a built-in database. Upload a CSV or Excel file to get started, or connect an existing database. The agent handles the rest.

{% hint style="info" %}
Start with what you have. A CSV upload gets you a working app in minutes. You can switch to a live data connection later without rebuilding.
{% endhint %}

***

## Step 4 — Iterate until it's right

Building in Riff is iterative. Keep the conversation going — ask for changes, add screens, adjust layouts. Some useful prompts to keep in mind:

* *"Add a filter for \[field]"*
* *"Show this as a chart instead of a table"*
* *"Make this column sortable"*
* *"Add a second page for \[topic]"*
* *"The data on this panel is wrong — it should show \[X]"*

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2Fzc6bJdTgx6V3vHsvAQBu%2Fimage.png?alt=media&amp;token=f7bf2e7e-866a-4d01-ae25-fe0382f3c779" alt=""><figcaption></figcaption></figure></div>

Be specific. The more clearly you describe what you want, the faster the agent gets there. Using screenshots also improves the agen't ability to understand your needs.

***

## Step 5 — Deploy

When you're happy with how the app looks and behaves, click **Deploy** in the top right.

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2ForKGkzvzZ5nQg6R28fY1%2Fimage.png?alt=media&amp;token=8a52b6c2-9561-4bcd-b7bf-be5313fc355d" alt="" width="306"><figcaption></figcaption></figure></div>

For a full walkthrough of the deployment process, see [Deploying your app](/reference/app-builder/deploy).

***

## You're ready to build

That's the shape of a Riff app: a plan, a data source, a live preview, and a deploy. The app you just built isn't finished — it's a starting point. The best apps grow through use: your team opens it, tells you what's missing, and you add it in.

Keep the conversation with the Riff agent going. The more specific you are about what you want, the faster it gets there.


# Build your first agent

## Before you build — what is an agent?

The simplest way to think about it: **a Riff agent is like a new hire.**

You define the job. You give the agent a name, describe what triggers it to start, what it should do, and what "done" looks like. Then it runs — handling the routine, escalating the exceptions, and reporting back.

If you can write a handover note for the role, you can build the agent.

### What makes a good agent job?

Not every task is a good fit for an agent. Use this quick check before you build:

|               | Question                               | Good fit                                             | Not quite                                             |
| ------------- | -------------------------------------- | ---------------------------------------------------- | ----------------------------------------------------- |
| **Judgement** | Does someone have to think each time?  | "It depends" — each case is a real judgement call    | Same input, same output every time — a script does it |
| **Value**     | Is it worth the time it takes today?   | Hours every week, or work that's being skipped       | A few minutes a month — not worth a build             |
| **Handover**  | Could a new hire actually do this?     | You can write the handover note and name the systems | It's all tribal knowledge — write it down first       |
| **Stakes**    | If it gets one wrong, can you undo it? | Worst case is a draft you discard                    | High stakes — keep a human approval step for now      |

If most of those are a green light, you're ready to build.

### Agent vs App — a quick distinction

Riff gives you two things to build. Knowing which is which saves you time.

**Build an Agent** when the job has a clear trigger and a clear "done" state, runs repeatedly, and humans only need to review exceptions — not every step.

**Build an App** when humans drive the flow, the output is a screen someone opens, or AI is a feature inside a larger workflow rather than the whole job.

Many projects combine both — an agent does the routine work, an app surfaces the output for your team to review.

***

## Configuring your agent

An agent in Riff is configured through four things: **instructions** (what it does and how it behaves), **tools** (how it takes action in external systems), **skills** (step-by-step processes it follows), and **knowledge** (background context it can look up). You build all of these through a conversation with the Riff agent — no forms to fill in, no configuration files.

Here's how to get started.

***

## Step 1 — Click New Agent

From your workspace home, click **New Agent** in the side navigation. You'll see a panel asking you to describe your agent.

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2FrZaP2Y2vfw51fD4GBhyi%2Fimage.png?alt=media&amp;token=3d93185c-58a9-4af7-b1fb-4335715cb3d3" alt=""><figcaption></figcaption></figure></div>

Don't worry about getting this perfect — it's just a starting point. Describe the job you want the agent to do in plain English, the same way you'd explain it to a new hire.

{% hint style="info" %}
You can refine everything as you go. The description is a starting point, not a contract.
{% endhint %}

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2F4XkIgpgpzFBx4Q5YwDje%2Fimage.png?alt=media&amp;token=8f0996c0-723d-4d00-b4c6-4d0b096506d0" alt="" width="563"><figcaption></figcaption></figure></div>

***

## Step 2 — Start chatting with your agent

Once you've named and described your agent, you'll be dropped straight into a chat with it. This is where building happens — through conversation.

The agent will ask you a series of questions to understand the job: what triggers it, what systems it touches, what a good outcome looks like, and when it should escalate to a human.

Answer as naturally as you'd explain the role to someone new. The agent uses your answers to write its own instructions, and to figure out what tools, skills, and knowledge it needs.

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2F0EvZSHneN2SlSAkwmzrp%2Fimage.png?alt=media&amp;token=46ac4d17-fcbb-4609-90a0-538b1c34f6d0" alt=""><figcaption></figcaption></figure></div>

***

## Step 3 — Understand Build vs Live

In the left sidebar you'll see a **Build / Live** toggle. This is one of the most important things to understand as you work.

**Build** Your development environment. Use this to shape the agent — test how it responds, add tools and skills, adjust its instructions. Think of it as working behind the scenes before the agent goes on shift. Changes you make here don't affect anything your team is relying on.

**Live** The deployed version of your agent — the one doing real work. Switch to Live to test how the agent behaves once it's been deployed, before you point live work at it.

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2F9LSz7UMChuXueAedja9h%2Fimage.png?alt=media&amp;token=57fb1543-5dcb-4b37-95a4-ab7d758f84bb" alt=""><figcaption></figcaption></figure></div>

***

## Step 4 — Explore the tabs

At the top of the agent builder you'll find five tabs.

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2FIvyi3QOSHRkcXBgfjOMt%2Fimage.png?alt=media&amp;token=8088a44c-e6b6-46db-9ecf-8cb437ab4b78" alt=""><figcaption></figcaption></figure></div>

**Chat** Your main building surface. Have a conversation with the agent to configure it, test it, and iterate. This tab stays active in the background even when you're looking at other tabs — so a running response won't be interrupted.

**Profile** The full description of your agent: its purpose, its instructions, and all the tools, skills, and knowledge it has. This is a great anchor point for understanding what your agent can and can't do. Anything shown here can be adjusted by going back to the Chat tab and telling the agent what you want to change.

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2Fdrgig07pPqIxtdQTDCD3%2Fimage.png?alt=media&amp;token=ac32001a-b49c-4d18-b98a-e45c67f4bbcf" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2FwWNbzBCaaRLZMIZsrlqY%2Fimage.png?alt=media&amp;token=9ba34000-5af0-4ca3-a42b-b54447778ce5" alt="" width="563"><figcaption></figcaption></figure></div>

**Pipeline** Where you can see the tasks your agent is working on. *(More coming soon.)*

**Triggers** How your agent gets started — on a schedule, by email, or by an incoming event. *(More coming soon.)*

**Activity** A log of every run: what the agent did, which tools it called, and how long each step took.

***

## Three concepts to know

As you build, you'll hear three terms often. Here's what they mean:

### Tools

The hands of your agent. Tools connect it to external systems — your ERP, a Slack channel, an email inbox, a database. If your agent needs to *do something* in the world (read data, send a message, update a record), it needs a tool for that.

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2FKgIYg0gtS37EYfziPxGs%2Fimage.png?alt=media&amp;token=e7c6d752-31a5-4f2c-981e-d56c36410fb7" alt="" width="563"><figcaption></figcaption></figure></div>

### Skills

Step-by-step procedural guidance. If your agent needs to follow a specific process — a particular way of checking invoices, a house style for writing emails, a decision tree for approvals — write it as a skill. Think of it as the training manual for this one job.

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2FxG90XUZ28joSuwzC34rA%2Fimage.png?alt=media&amp;token=68cc875c-aae9-450e-a67a-acdc6f1564b8" alt="" width="563"><figcaption></figcaption></figure></div>

### Knowledge

Background context your agent can search when it needs it. Product catalogues, supplier lists, policy documents, glossaries — anything too large or too fluid to put directly in the agent's instructions. The agent looks it up when it's relevant, rather than holding it all in memory.

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2Fq7LuxqQN9DU7LMJg1HbI%2Fimage.png?alt=media&amp;token=206abd1b-a266-4819-bd22-9ee3bdfc7fc1" alt="" width="563"><figcaption></figcaption></figure></div>

***

## You're ready to build

That's the shape of a Riff agent: a job description, a set of tools to act on the world, skills to follow the right process, and knowledge to draw on when it needs context.

The agent you just configured isn't finished — it's a starting point. The best agents are built iteratively: start with a narrow job, get it working, then expand. Talk to your agent in the Build environment, watch how it reasons, and adjust. The Profile tab is always there to show you exactly what it knows and how it's been instructed to behave.

When you're happy with how it performs in Build, switch to Live and run it for real.

{% hint style="info" %}
**A note for beta testers:** We're actively developing Riff based on your feedback. If something doesn't work the way you'd expect, or a concept isn't clear, we want to know. Reach out directly — your input shapes what we build next.
{% endhint %}


# How to build an application

{% @riff-academy/riff-academy-guide url="<https://databutton.github.io/riff-academy/build-an-app.html>" %}


# How to debug an application

{% @riff-academy/riff-academy-guide url="<https://databutton.github.io/riff-academy/testing.html?section=what-this-shows>" %}


# How to deploy an application

{% @riff-academy/riff-academy-guide url="<https://databutton.github.io/riff-academy/deploy.html?section=what-this-shows>" %}

### Deploying your app: the five checks

#### What deploying changes

Deploying gives your app a web address and lets your team in. One button does it. The work is what has to be true before you press it.

While the app is only yours, you know every screen, you know which states are unfinished, and you work around anything rough without thinking about it. The moment a colleague opens it, none of that knowledge travels with the link. They see the app; they do not see what you know about it.

Two things have to be true before that happens.

**It has to be safe to deploy.** Your applications sit in a workspace dedicated to your company. You sign into it the same way you sign into any other tool at your company— the same single sign-on — and the workspace is locked down by group security, so anyone inside the company can open a deployed app and anyone outside cannot. This part is arranged with your IT before you get there.

**It has to be safe to use.** The person opening it knows what the tool is for and what to do, nothing sends them down a path you never pictured, and if something does not look right they know who to contact and how to report it. This part is yours, and it is what the five checks below are.

#### How the checks run

Each check is a skill: a set of instructions written once, so the same check runs the same way on every app. You do not write them and you do not need to read them.

Type a slash in the message box and the list opens. Type `/deployment` and it narrows to these. Clicking one sends it — there is nothing else to fill in. The agent runs the check, does the work, and tells you where to look.

What a skill cannot do is decide whether what it found matters. That stays with you, and it is called out in the sections where it applies.

***

### 1 · Someone owns it, and users can get help

* A contact card in the app: who built it, how to reach them
* A documentation page with guides and a glossary
* A bug report form, and an admin page where the reports land

Support is set up before launch on purpose. After launch is when it is needed, and by then it is too late to add.

| Skill                                        | What it does                                                                                                   |
| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `/deployment-add-contact-info`               | Adds a contact and maintainer card to the app, so a user can see who built it and how to reach them.           |
| `/deployment-implement-in-app-documentation` | Adds a documentation page inside the app, with sidebar navigation, workflow guides and a glossary.             |
| `/deployment-implement-bug-reporting`        | Adds a bug reporting system: users submit reports from the app, and you view and manage them on an admin page. |

***

### 2 · It works for people who are not you

* A pass over every route a user can take through the app
* The empty, error and loading screens you never see yourself
* Held together on a phone, not only on the machine you built it on

You stopped seeing most of this while you were building. The check is run rather than remembered because judging your own build is the hardest kind of judging.

| Skill                             | What it does                                                                                                                                                                               |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `/deployment-implement-ux-checks` | Runs a full user-experience check against established UX principles, covering broken flows and the empty, error and loading states a user hits when they do something you did not picture. |

***

### 3 · You know what it connects to, and what data moves

* Every connected system written down in one place
* What is read, what is written, what is stored
* Then your call: is that what you intended, and is personal data in there that need not be

The skill produces the map. The two questions at the end of it are yours — a check can tell you that data is moving, but not whether it should be.

| Skill                           | What it does                                                                                                                            |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `/deployment-check-integration` | Runs through every integration in the app and documents it: what it connects to, and what data is read, written, stored or transformed. |

***

### 4 · You know what happens if someone deletes something

* Audit logs and version history on data people can edit
* Point-in-time restore, so there is a way back
* Not every app needs this. That call is yours

The question this answers is what happens if something is wrong. If users can edit or delete records that matter, the app needs a way back. If they cannot, it does not.

| Skill                                     | What it does                                                                                      |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------- |
| `/deployment-add-audit-trail-and-restore` | Adds audit logs, version history and point-in-time restore for business data that users can edit. |

***

### 5 · Nothing is reachable that should not be

* Every page and route marked as protected or open to anyone
* A pass over the code for critical flaws
* A deeper audit for anything the first pass did not catch

The first part of this needs no security knowledge. Walk your key pages and API routes and read the protection status on each one: protected, or open to anyone. Anything open that should not be is a finding you can act on immediately.

| Skill                                | What it does                                                                                                             |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
| `/backend-implement-user-roles`      | Adds role-based access control, such as an admin and viewer. Validates role access is correct through testing endpoints. |
| `/deployment-check-security`         | Runs through the codebase to identify critical security flaws and anything that would block deployment.                  |
| `/deployment-perform-security-audit` | Runs a systematic security review for vulnerabilities, going deeper than the deployment check.                           |
|                                      |                                                                                                                          |

***

### Where the decision sits

The full list of deployment skills is fixed and it is the same for every app. What changes is what each one finds, and what you decide to do about it.

Repeatable work goes to the skill. The judgement stays with you: whether a role sees the right thing, whether the data moving is data that should be moving, whether a finding is worth acting on, and whether this is ready to ship.

Once the checks are done you press deploy, and it goes to an approver inside your workspace before it goes live. You decide who that approver is. If you are happy to deploy directly, that is you. If you would rather one person looks over anything before it reaches the company, you assign them and every deployment goes past them first.


# Source-to-Pay

Use cases covering the full journey from supplier selection and purchase requisition through to invoice payment and AP close. For procurement, AP, and operational finance teams.

Agents and apps built for the Source-to-Pay process handle the work that runs between raising a purchase requisition and settling the supplier's invoice. They connect directly to your ERP and supplier communications channels — chasing confirmations, matching invoices, negotiating price changes — and escalate only the cases that genuinely need a buyer's judgment.

The use cases below are grouped by the sub-process they belong to. Each entry shows the build type up front: **Agents** run on their own and report back; **Apps** are surfaces your team opens and acts in; **Dashboards** give live visibility without requiring interaction.

***

## Supplier communications

*Keeping PO confirmations, goods receipts, and supplier changes flowing — without manually chasing every email.*

### Agents

{% hint style="info" %}
**Agents** run autonomously. They chase suppliers, parse responses, write back to the ERP, and escalate only what they can't resolve.
{% endhint %}

#### Supplier Order Confirmation Handling

Know when a PO will slip before the customer does — without chasing every email manually.

Chases suppliers for order confirmations, parses incoming confirmations against the PO, and writes confirmed dates and line-level changes (splits, partials, date shifts) back to the ERP. Monitors EDI for confirmation changes. Escalates exceptions the supplier can't or won't resolve.

|                  |                                         |
| ---------------- | --------------------------------------- |
| **Value driver** | Productivity                            |
| **KPI moved**    | PO touchless rate %                     |
| **What it does** | Chase · Parse · Write to ERP · Escalate |

***

#### Goods Receipt Tracking

Know what hasn't arrived before planning assumes it has.

Monitors expected packing slips against PO commitments. Chases suppliers when slips don't arrive on schedule, verifies slip contents against POs, and updates receipt dates in the ERP. When deliveries are partial, splits PO lines into received and remaining and triggers follow-up on the remainder.

|                  |                                              |
| ---------------- | -------------------------------------------- |
| **Value driver** | Service Level                                |
| **KPI moved**    | Inventory record accuracy %                  |
| **What it does** | Monitor · Chase · Verify · Split & follow up |

***

#### Purchasing Inbox Triage

Get structured PO and invoice data out of the purchasing inbox automatically.

Monitors the purchasing email inbox in real time, classifies incoming emails as order confirmations or invoices, applies labels, and extracts key fields (PO number, amount, dates) into a structured log. Feeds downstream workflows that previously required a clerk reading every message.

|                  |                                    |
| ---------------- | ---------------------------------- |
| **Value driver** | Productivity                       |
| **KPI moved**    | PO touchless rate %                |
| **What it does** | Monitor · Classify · Extract · Log |

***

## Invoices & accounts payable

*Getting every invoice into the ERP, matched, and cleared — with humans reviewing only the exceptions that need judgment.*

### Agents

{% hint style="info" %}
**Agents** run autonomously — capturing invoices, matching them to POs and goods receipts, and routing only the exceptions.
{% endhint %}

#### Freight Invoice Verification

Catch overcharges from carriers before you pay them.

Checks freight invoices against estimated costs in the ERP, agreed rates with carriers, and the actual shipments delivered. Flags deviations and routes disputes to the right person.

|                  |                                                  |
| ---------------- | ------------------------------------------------ |
| **Value driver** | Cost                                             |
| **KPI moved**    | Freight cost as % of revenue                     |
| **What it does** | Verify charges · Verify volumes · Route disputes |

***

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### Three-Way Match App

Give AP clerks a clean queue of just the cases that need judgment.

Manual review surface for invoices the three-way match agent can't auto-clear. Shows the invoice, PO, goods receipt, and diagnosis side by side — with the lever the user has to resolve it.

|                  |                                        |
| ---------------- | -------------------------------------- |
| **Value driver** | Productivity                           |
| **KPI moved**    | AP touchless rate %                    |
| **What it does** | Review exceptions · Resolve mismatches |

***

#### Invoice Reconciliation Sweep

Catch what daily AP missed before month-end close.

Automated reconciliation across all invoices for a given month against the financial system. Identifies discrepancies, late payments, and duplicate payments. Used by AP leads as a month-end sweep before close.

|                  |                                          |
| ---------------- | ---------------------------------------- |
| **Value driver** | Working Capital                          |
| **KPI moved**    | DPO                                      |
| **What it does** | Month-end sweep · Identify discrepancies |

***

#### Invoice Status Lookup

Answer "where's my invoice" without an AP clerk.

Dashboard connected to the ERP for searching and tracking invoice status. Used by AP clerks and stakeholders who otherwise field "where's my invoice" calls all day.

|                  |                               |
| ---------------- | ----------------------------- |
| **Value driver** | Productivity                  |
| **KPI moved**    | AP touchless rate %           |
| **What it does** | Search · Track invoice status |

***

## Cost avoidance & negotiation

*Responding to supplier price changes, consolidating the tail, and keeping contracts visible — without letting requests get rubber-stamped.*

### Agents

{% hint style="info" %}
**Agents** monitor the procurement inbox, assess incoming price requests, negotiate within defined authority, and update the ERP with agreed terms.
{% endhint %}

#### Price Request Handling

Push back on supplier price increases efficiently — instead of rubber-stamping every request.

Monitors the procurement inbox for supplier price change requests. Pulls supplier profile, price history, contracts, volumes, and material mapping. Computes proportionality (supplier change % vs weighted raw-material change %) and impact against business rules. Decides Accept / Negotiate / Reject within autonomous authority, runs the back-and-forth, updates ERP pricing, and logs outcomes to the supplier profile.

|                  |                                          |
| ---------------- | ---------------------------------------- |
| **Value driver** | Cost                                     |
| **KPI moved**    | Savings vs baseline %                    |
| **What it does** | Assess · Decide · Negotiate · Update ERP |

***

#### Supplier Consolidation Execution

Consolidate the tail and middle tier instead of just talking about it.

Scans the supplier base by category, finds overlapping capabilities, and computes consolidation savings and risk. Decides the approach (RFQ, negotiate with existing, or hybrid) and executes — shifting spend in the ERP (master data, contracts, default supplier on items) and winding down losing suppliers (notify, close contracts, run out open POs).

|                  |                                         |
| ---------------- | --------------------------------------- |
| **Value driver** | Cost                                    |
| **KPI moved**    | Spend under management %                |
| **What it does** | Identify · Decide · Execute · Wind down |

***

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### Contract Management Kanban

Give vendor managers a working surface on top of the contract repository.

Contract management database with kanban board for tracking contracts through their lifecycle (Draft → In Negotiation → Active → Renewal → Expired). Used where the contract repository works but lacks a working surface for day-to-day management.

|                  |                                            |
| ---------------- | ------------------------------------------ |
| **Value driver** | Cost                                       |
| **KPI moved**    | Contract leakage $                         |
| **What it does** | Track · Search · Manage contract lifecycle |

***

#### Supplier Spend Pareto

Pick the tail suppliers worth consolidating off.

Daily Pareto view of spend per supplier. Identifies tail suppliers where consolidation is likely worth it and surfaces the action tools the team needs to actually move spend off them. Used by category managers as the entry point for rationalisation work.

|                  |                                              |
| ---------------- | -------------------------------------------- |
| **Value driver** | Cost                                         |
| **KPI moved**    | Spend under management %                     |
| **What it does** | Visualise spend distribution · Identify tail |

***

#### Procurement Automation Ratio

See where PO automation is sticking and where it's not.

Trends the PO automation ratio over time — how many POs flowed through end to end without manual touch vs how many needed intervention — broken down by category and supplier.

|                  |                                            |
| ---------------- | ------------------------------------------ |
| **Value driver** | Productivity                               |
| **KPI moved**    | PO touchless rate %                        |
| **What it does** | Track automation ratio · Trend by category |

***

## PO visibility & requisitions

*Giving teams a live view of where every PO stands — without opening the ERP.*

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### Purchase Order Kanban

Track every PO without opening the ERP.

Kanban board tracking purchase order statuses (New, Confirmed, Done, Blocked). Updated by the supplier communication agent for cases it can move, and by the team manually for the rest. Gives buyers a shared view of where every PO sits.

|                  |                                    |
| ---------------- | ---------------------------------- |
| **Value driver** | Productivity                       |
| **KPI moved**    | PO touchless rate %                |
| **What it does** | Track PO status · Shared team view |

***

#### Purchase Requisition Triage Dashboard

Approve, override, or escalate triaged requisitions from one surface.

Working surface for the purchase requisition triage agent. Shows open requisitions, the proposed route to PO (existing supplier, framework agreement, consolidation candidate), and the cases that need a decision. Users approve, override, or escalate from here.

|                  |                                        |
| ---------------- | -------------------------------------- |
| **Value driver** | Cost                                   |
| **KPI moved**    | Perfect Order Rate                     |
| **What it does** | Review · Approve · Override · Escalate |

***

#### Procurement Process Map

Run procurement reviews against the live process, not slides.

Dynamic process map of the procurement function with built-in KPIs and current progress against targets. Includes an editable KPI target table so targets can be adjusted as priorities shift. Used to anchor monthly reviews in the actual flow rather than a static deck.

|                  |                                            |
| ---------------- | ------------------------------------------ |
| **Value driver** | Productivity                               |
| **KPI moved**    | Procurement cost as % of spend             |
| **What it does** | Process map · Live KPIs · Editable targets |

***

#### Supplier Performance Scorecards

Walk into a supplier review with the scorecard ready.

Generates on-demand scorecards per supplier covering delivery performance, quality incidents, total spend, and risk exposure. Chat-based — ask for any supplier and get the scorecard back inline. Used in supplier review meetings and renegotiation prep.

|                  |                                  |
| ---------------- | -------------------------------- |
| **Value driver** | Service Level                    |
| **KPI moved**    | Supplier OTIF %                  |
| **What it does** | Generate scorecard · Review prep |

***

#### Open Purchase Order Aging

See which suppliers and sites are slipping before it becomes a production problem.

Shows open and overdue PO lines by supplier and site, with aging buckets and trend over time. Helps teams see which suppliers are slipping, which sites are exposed, and which lines need follow-up first. The natural companion dashboard for the supplier communication agent's exception output.

|                  |                                           |
| ---------------- | ----------------------------------------- |
| **Value driver** | Service Level                             |
| **KPI moved**    | Supplier OTIF %                           |
| **What it does** | Aging by supplier · Site exposure · Trend |

***

#### Supplier Master Highlights

See supplier master gaps at a glance.

Highlights the supplier master data fields teams actually use: activity status, category, integrity assessment, country, and parent relationships. Shows which suppliers are still active, where data is missing, and where parent-child relationships in the master don't match what's actually being purchased.

|                  |                                  |
| ---------------- | -------------------------------- |
| **Value driver** | Service Level                    |
| **KPI moved**    | Plan adherence %                 |
| **What it does** | Audit master data · Surface gaps |


# Plan-to-Produce

Use cases covering demand forecasting, inventory management, production scheduling, and product lifecycle. For planning, supply chain, and operations teams.

Agents and apps built for the Plan-to-Produce process handle the work that keeps supply aligned with demand — from building the forecast and tuning safety stock through to managing product introductions, phase-outs, and production exceptions.

The use cases below are grouped by sub-process. **Agents** run on their own and report back; **Apps** are surfaces your team opens and acts in; **Dashboards** give live visibility without requiring interaction.

***

## Demand & forecasting

*Building and maintaining forward-looking demand plans — with sight of the assumptions driving each line.*

### Agents

{% hint style="info" %}
**Agents** run on a defined cadence — pulling actuals, generating projections, and surfacing where the plan is diverging from reality.
{% endhint %}

#### Campaign Forecasting & Planning

Get usable campaign volumes to supply chain before launch — not after.

Builds sales forecasts for promotional campaigns by pulling historical sales, product data, and customer-specific signals from source systems. Generates volume projections per SKU and customer and produces the outputs supply chain and finance need downstream.

|                  |                                                                  |
| ---------------- | ---------------------------------------------------------------- |
| **Value driver** | Revenue                                                          |
| **KPI moved**    | Campaign sell-through rate                                       |
| **What it does** | Pull signals · Generate projections · Produce downstream outputs |

***

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### Demand Forecast Workbench

Adjust the forecast with sight of which assumption drives each line.

Visualises the components of the forecast (baseline, seasonality, campaign uplift, customer-specific patterns) at the level downstream consumers need: SKU, customer, region, time period. Lets the forecaster see which assumption is driving each line and adjust before publishing.

|                  |                                                          |
| ---------------- | -------------------------------------------------------- |
| **Value driver** | Service Level                                            |
| **KPI moved**    | Forecast accuracy (MAPE)                                 |
| **What it does** | Visualise forecast components · Adjust before publishing |

***

#### Campaign Volume Planner

Replace the 100-column campaign spreadsheet with a workflow that has an audit trail.

Structured workflow for planning trade promotion campaigns: campaign list, calendar timeline, SKU association, weekly volume editing, and budget vs spend. Produces the volume projections supply chain and finance need downstream, with full audit trail and change tracking on every modification.

|                  |                                                           |
| ---------------- | --------------------------------------------------------- |
| **Value driver** | Revenue                                                   |
| **KPI moved**    | Campaign sell-through rate                                |
| **What it does** | Plan volumes by SKU · Track budget vs spend · Audit trail |

***

## Inventory & stock management

*Keeping inventory levels right — catching slow movers early and tuning safety stock before it becomes a service level problem.*

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### Safety Stock Analyzer

See the stock-out vs working-capital trade-off before tuning parameters.

Compares current safety stock, minimum order quantity, and order increment against historical issue patterns and planned allocations. Surfaces items at risk of stock-out and items carrying more buffer than the variability justifies. Lets planners see the trade-off before touching ERP parameters.

|                  |                                                                          |
| ---------------- | ------------------------------------------------------------------------ |
| **Value driver** | Working Capital                                                          |
| **KPI moved**    | Inventory turnover                                                       |
| **What it does** | Compare safety stock to history · Surface over- and under-buffered items |

***

#### Weekly Call-Off Report

Get the week's call-offs into buyers' inboxes before they open planning.

Runs every Monday: fetches call-off data from the data warehouse, generates a structured Excel report of purchase order releases due that week, and emails to defined recipients. Replaces the manual pull that used to start every buyer's week.

|                  |                                                          |
| ---------------- | -------------------------------------------------------- |
| **Value driver** | Working Capital                                          |
| **KPI moved**    | Inventory turnover                                       |
| **What it does** | Fetch call-off data · Generate report · Email recipients |

***

#### Slow-Moving Stock Monitor

Quantify the working capital tied up in aging stock.

Compares current inventory levels against historical sales to surface slow-moving stock. Lets planners and category managers see which items are aging out and how much working capital is tied up in them. Feeds the phase-out and rundown workflows.

|                  |                                                        |
| ---------------- | ------------------------------------------------------ |
| **Value driver** | Working Capital                                        |
| **KPI moved**    | Obsolescence write-off $                               |
| **What it does** | Surface slow movers · Quantify working capital at risk |

***

#### Distribution Order Tracker

Spot internal supply flow patterns worth rebalancing.

Shows distribution orders per item over time, with warehouse, site, and safety stock context pulled from the ERP. Lets logistics and planning see where transfers are clustering, which sites pull from which, and how the pattern is shifting.

|                  |                                                            |
| ---------------- | ---------------------------------------------------------- |
| **Value driver** | Service Level                                              |
| **KPI moved**    | Fill rate %                                                |
| **What it does** | Track distribution orders · Spot rebalancing opportunities |

***

## Production & capacity

*Keeping production plans honest — with visibility of where workload and capacity do not line up.*

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### Capacity vs Workload Planner

Plan staffing against workload at the work centre level — and see where the assumptions held.

Forward planning view that compares planned production workload against expected workforce capacity (accounting for planned absences) per work centre. Backward analysis measures actual hours worked against planned capacity to show where assumptions held and where they did not.

|                  |                                                    |
| ---------------- | -------------------------------------------------- |
| **Value driver** | Productivity                                       |
| **KPI moved**    | Capacity utilization %                             |
| **What it does** | Plan capacity vs workload · Review actuals vs plan |

***

#### Factory Labor Pulse

See where labor hours are concentrated and how they are moving.

Ingests time-recorder exports across factories and aggregates production order operation labor time per month and factory. Displays trend lines and tables that let operations leads see where labor hours are concentrated and how they are moving period over period.

|                  |                                                    |
| ---------------- | -------------------------------------------------- |
| **Value driver** | Productivity                                       |
| **KPI moved**    | Labor hours per unit produced                      |
| **What it does** | Aggregate labor time · Trend by factory and period |

***

## Product lifecycle

*Managing new product introductions and phase-outs cleanly — so nothing falls through the gate and nothing lingers past its time.*

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### Product Phase-In Workflow

Get every new product through readiness without anything falling through.

Routes new product introductions through the readiness checklist across product management, warehousing, sales, purchasing, and IT governance. Captures GTIN, E-number, multi-language descriptions, vendor info, tariffs, and compliance attributes (REACH/RoHS). Surfaces gaps and at-risk launches as items move through the gates.

|                  |                                                                          |
| ---------------- | ------------------------------------------------------------------------ |
| **Value driver** | Revenue                                                                  |
| **KPI moved**    | Time-to-launch (days)                                                    |
| **What it does** | Route through readiness gates · Capture launch attributes · Surface gaps |

***

#### Product Phase-Out Workflow

Retire products cleanly across ERP, BOMs, and wholesalers.

Routes product retirements through ERP cleanup, BOM updates, and wholesaler notifications. Replaces the manual spreadsheet and email loop that usually accompanies a phase-out, and ensures downstream systems and partners are updated on the same cadence.

|                  |                                                      |
| ---------------- | ---------------------------------------------------- |
| **Value driver** | Working Capital                                      |
| **KPI moved**    | Obsolescence write-off $                             |
| **What it does** | ERP cleanup · BOM updates · Wholesaler notifications |

***

#### Decommission Approval App

Decommission products with a defensible approval trail.

Identifies products eligible for decommissioning based on configurable criteria (age, sales volume, EOL date), generates a structured report, sends to stakeholders for approval, and updates the master record only once the approval comes back. Approval is mandatory — nothing is decommissioned automatically.

|                  |                                                             |
| ---------------- | ----------------------------------------------------------- |
| **Value driver** | Working Capital                                             |
| **KPI moved**    | Obsolescence write-off $                                    |
| **What it does** | Identify candidates · Generate report · Structured approval |


# Order-to-Cash

Use cases covering order handling, quoting, configuration, shipping, and sales performance. For sales operations, customer service, and commercial finance teams.

Agents and apps built for the Order-to-Cash process handle the work that runs from the moment an order arrives through to delivery, invoicing, and margin tracking. They sit across order entry, configuration and quoting, shipment and document management, and commercial performance visibility.

The use cases below are grouped by sub-process. **Agents** run on their own and report back; **Apps** are surfaces your team opens and acts in; **Dashboards** give live visibility without requiring interaction.

***

## Order handling & visibility

*Keeping orders moving — spotting where they get stuck, balancing workload across the team, and monitoring health across the full order book.*

### Agents

{% hint style="info" %}
**Agents** handle rule-based order tasks autonomously — selecting batches, verifying traceability, and escalating exceptions.
{% endhint %}

#### Batch Picking & Traceability

Pick the right batches every time, with traceability that holds up to audit.

For each order, selects the right batches based on applicable rules: expiry, customer-specific batch requirements, regulatory traceability. Verifies that picked batches, shipped quantities, and invoiced amounts match across the full chain.

|                  |                                                             |
| ---------------- | ----------------------------------------------------------- |
| **Value driver** | Service Level                                               |
| **KPI moved**    | OTIF to customer %                                          |
| **What it does** | Select batches · Verify picked, shipped, and invoiced match |

***

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### Batch Traceability App

Pick rule-compliant batches and prove the chain when audited.

Working surface for batch selection in order picking: shows the applicable rules (expiry, customer-specific requirements, regulatory traceability) and the candidate batches that satisfy them. Verifies that picked batches, shipped quantities, and invoiced amounts match across the full chain.

|                  |                                                                 |
| ---------------- | --------------------------------------------------------------- |
| **Value driver** | Service Level                                                   |
| **KPI moved**    | OTIF to customer %                                              |
| **What it does** | Show applicable rules · Select compliant batches · Verify chain |

***

#### Order Document Pre-Check

Stop typos and inconsistencies leaving in the document pack.

Scans uploaded order documents (up to 15 document types per shipment) for typos and inconsistencies before they are sent to the customer. Surfaces issues as a checklist with the source field highlighted. Used by customer service as the last gate before the document pack goes out.

|                  |                                                    |
| ---------------- | -------------------------------------------------- |
| **Value driver** | Service Level                                      |
| **KPI moved**    | OTIF to customer %                                 |
| **What it does** | Scan document pack · Surface issues before sending |

***

#### Sales Order Flow Insights

See where orders get stuck on the way to confirmation.

Sales order flow analysis from order entry to final confirmation sent to the customer. Ingests order header, holdback, blocking, and history data from the ERP. Lets sales operations see where orders get stuck, how long each stage takes, and which blocking reasons are driving the delays.

|                  |                                                           |
| ---------------- | --------------------------------------------------------- |
| **Value driver** | Service Level                                             |
| **KPI moved**    | OTIF to customer %                                        |
| **What it does** | Map order flow · Surface blocking reasons and stage times |

***

#### Sales Block Insights

Prioritise the blocking reasons that move the most volume.

Breaks down sales order blockings by sales office, user, and blocking reason. Lets the sales ops team see whether blocks are concentrated in a few users, a few reasons, or a few customer types — and prioritise the fixes that move the most volume.

|                  |                                                              |
| ---------------- | ------------------------------------------------------------ |
| **Value driver** | Service Level                                                |
| **KPI moved**    | OTIF to customer %                                           |
| **What it does** | Break down blocks by office, user, reason · Prioritise fixes |

***

#### Order Handling Workload Insights

Balance order-handling load across reps before service slips.

Workload visibility by sales office and user: orders and order lines per rep for any selected week or month. Used by sales ops leads to balance load and spot where service levels are at risk because workload has shifted faster than headcount.

|                  |                                                        |
| ---------------- | ------------------------------------------------------ |
| **Value driver** | Productivity                                           |
| **KPI moved**    | Orders per FTE                                         |
| **What it does** | Show load by rep · Spot imbalance before service slips |

***

#### Customer Success Order-to-Cash

Run the weekly health check on the order book.

Order-to-cash dashboard tracking handling time, hold reasons, and throughput across the full sales order lifecycle. Used by customer service and sales ops leads as their weekly health check — spotting trends before customers notice them.

|                  |                                                       |
| ---------------- | ----------------------------------------------------- |
| **Value driver** | Service Level                                         |
| **KPI moved**    | OTIF to customer %                                    |
| **What it does** | Track handling time and throughput · Spot hold trends |

***

## Quoting & configuration

*Getting from enquiry to order faster — whether that is configuring a product, extracting a tender, or turning a supplier quote into an ERP import.*

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### Product Selector Configurator

Get customers to the exact product code without rep involvement.

Step-by-step guided configurator for engineered or configured items. Walks the customer or sales rep through the relevant attributes (dimensions, materials, ratings, connection types), resolves to exact product codes, and generates a complete order submission with downloadable PDF.

|                  |                                                                      |
| ---------------- | -------------------------------------------------------------------- |
| **Value driver** | Revenue                                                              |
| **KPI moved**    | Quote-to-order conversion                                            |
| **What it does** | Guide through configuration · Resolve to product code · Generate PDF |

***

#### Conversational Configurator

Configure products through conversation when a wizard gets too long.

Conversational AI replacing static dropdown product selectors. Asks the customer what they are solving, walks the configuration rules in conversation, and resolves to exact product codes with a downloadable order PDF. Used where the product family has enough rules that a step-by-step wizard becomes too long.

|                  |                                                                         |
| ---------------- | ----------------------------------------------------------------------- |
| **Value driver** | Revenue                                                                 |
| **KPI moved**    | Quote-to-order conversion                                               |
| **What it does** | Configure through conversation · Resolve to product code · Generate PDF |

***

#### Tender Spec Extractor

Turn a multi-hundred-page tender into quote-ready line items.

Extracts structured product requirements from large tender documents. Filters relevant sections by code or topic, extracts attributes (location, quantity, technical specs), and produces an editable table exported to Excel. Used by sales engineers to turn tender packs into quote-ready line items without the manual page-by-page sweep.

|                  |                                                               |
| ---------------- | ------------------------------------------------------------- |
| **Value driver** | Revenue                                                       |
| **KPI moved**    | Tender win rate                                               |
| **What it does** | Filter tender sections · Extract attributes · Export to Excel |

***

#### Quote-to-Phase-In Generator

Eliminate copy-paste from supplier PDFs to ERP phase-in templates.

Automates the extraction of manufacturer PDF quotes, calculates sales prices with currency conversion and margin markup, and generates the ERP phase-in import template for won projects. Eliminates manual copy-paste from multi-hundred-line PDFs.

|                  |                                                                   |
| ---------------- | ----------------------------------------------------------------- |
| **Value driver** | Revenue                                                           |
| **KPI moved**    | Quote-to-order conversion                                         |
| **What it does** | Extract PDF pricing · Calculate sales price · Generate ERP import |

***

## Shipping & freight

*Getting shipments out clean and catching freight costs before they become overcharges.*

### Agents

{% hint style="info" %}
**Agents** verify freight invoices against agreed rates and flag deviations before payment.
{% endhint %}

#### Freight Invoice Verification

Catch overcharges from carriers before you pay them.

Checks freight invoices against estimated costs in the ERP, agreed rates with carriers, and the actual shipments delivered. Flags deviations and routes disputes to the right person.

|                  |                                             |
| ---------------- | ------------------------------------------- |
| **Value driver** | Cost                                        |
| **KPI moved**    | Freight cost as % of revenue                |
| **What it does** | Verify charges and volumes · Route disputes |

***

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### Shipping Document Validator

Catch document errors before they stop a regulated shipment.

Validates that all required documents accompanying a shipment (invoices, certificates of analysis, regulatory documents) are present, consistent, and correct. Catches discrepancies between documents before they reach the customer or customs.

|                  |                                            |
| ---------------- | ------------------------------------------ |
| **Value driver** | Service Level                              |
| **KPI moved**    | OTIF to customer %                         |
| **What it does** | Validate document presence and consistency |

***

#### Freight Invoice Validator

Catch freight overcharges before paying them.

Extracts and validates freight invoice data against agreed rates, the underlying shipment, and the ERP cost estimate. Surfaces deviations and routes disputes to the right person. Used by freight finance to clear the invoice queue without manual cross-checking each one.

|                  |                                                                           |
| ---------------- | ------------------------------------------------------------------------- |
| **Value driver** | Cost                                                                      |
| **KPI moved**    | Freight cost as % of revenue                                              |
| **What it does** | Validate against rates and shipment · Surface deviations · Route disputes |

***

#### Demurrage & Detention Tracker

Act on demurrage exposure while it can still be avoided.

Logistics control surface focused on demurrage, detention, and storage exposure. Tracks active exposure by carrier and port, ages it, and surfaces where action can still avoid the charge. Used by logistics controllers to manage what the freight team usually only sees on the invoice.

|                  |                                                                            |
| ---------------- | -------------------------------------------------------------------------- |
| **Value driver** | Cost                                                                       |
| **KPI moved**    | Freight cost as % of revenue                                               |
| **What it does** | Track active exposure · Age by carrier and port · Surface actionable cases |

***

## Commercial performance

*Keeping margin visible and commercial agreements tracked — so nothing slips quietly below threshold.*

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### Margin Drift Monitor

Recover margin given away vs the price list before quarter-end.

Live view of flagged orders where the achieved margin diverged from the price list or contract terms beyond threshold. Shows orders at risk, value exposed, and worst offenders — with a chat interface for sales managers to drill in and understand each case.

|                  |                                                             |
| ---------------- | ----------------------------------------------------------- |
| **Value driver** | Revenue                                                     |
| **KPI moved**    | Gross margin %                                              |
| **What it does** | Flag margin drift · Drill into cases · Support rep coaching |

***

#### Wholesaler Kickback Tracker

Know which kickback tiers are in reach and what it takes to hit them.

Tracks tiered kickback rules per wholesaler (monthly, quarterly, yearly triggers based on sales volume and activity). Shows actual progress vs threshold and allocates net kickback margins proportionally down to individual products.

|                  |                                                    |
| ---------------- | -------------------------------------------------- |
| **Value driver** | Revenue                                            |
| **KPI moved**    | Net margin after rebates %                         |
| **What it does** | Track tier progress · Allocate margins to products |

***

#### Campaign SKU Analyzer

Commit campaign nominations without a round-trip to the analyst.

Live SKU, sales, and inventory analysis surface for campaign nomination. Lets campaign managers drill into performance history (sales, margin, inventory time-series) per candidate SKU before committing to the nomination.

|                  |                                                      |
| ---------------- | ---------------------------------------------------- |
| **Value driver** | Revenue                                              |
| **KPI moved**    | Campaign sell-through rate                           |
| **What it does** | Drill into SKU history · Inform campaign nominations |

***

#### Top Seller Tracker

Start assortment reviews from a real best-seller list.

Identifies best-performing products by aggregating sales data from the last three years. Displays the top items in a revenue leaderboard with year-over-year movement. Used by buyers and category managers as a starting point for assortment review.

|                  |                                              |
| ---------------- | -------------------------------------------- |
| **Value driver** | Revenue                                      |
| **KPI moved**    | Assortment contribution margin               |
| **What it does** | Rank products by revenue · Show YoY movement |

***

#### Multi-Site KPI Dashboard

See which business units are pulling ahead and which are slipping.

Multi-location KPI dashboard visualising sales, revenue, margin, and inventory with percentage change comparisons across business units. Lets leadership see which units are pulling ahead and which are slipping without opening five different reports.

|                  |                                                 |
| ---------------- | ----------------------------------------------- |
| **Value driver** | Productivity                                    |
| **KPI moved**    | Close cycle days                                |
| **What it does** | Compare KPIs across sites · Highlight variances |


# ESG & Regulatory

Use cases covering emissions reporting, trade compliance, supplier screening, and regulatory filings. For ESG, compliance, trade, and supply chain teams.

Agents and apps built for ESG and regulatory processes handle the data collection, calculation, filing, and audit-trail work that sits behind compliance reporting. They connect to ERP data, supplier communication channels, and regulatory systems — chasing supplier submissions, calculating liabilities, and filing declarations on schedule.

The use cases below are grouped by sub-process. **Agents** run on their own and report back; **Apps** are surfaces your team opens and acts in; **Dashboards** give live visibility without requiring interaction.

***

## Emissions reporting

*Assembling defensible Scope 3 inventories, product carbon footprints, and per-shipment emissions — ready when CDP, CSRD, or a customer RFQ asks.*

### Agents

{% hint style="info" %}
**Agents** collect emissions data from suppliers, calculate carbon footprints, and assemble the figures that feed regulatory reporting — escalating gaps before they become filing problems.
{% endhint %}

#### Supplier Emissions Data Collection

Have supplier emissions factors ready when reporting needs them.

Emails suppliers to request emissions factors and energy data for the components they supply. Chases non-responders, validates that numbers arrive in the right units and format, loads them into the right system, and flags suppliers whose data has not been refreshed in over 12 months.

|                  |                                                     |
| ---------------- | --------------------------------------------------- |
| **Value driver** | Revenue                                             |
| **KPI moved**    | Tender win rate                                     |
| **What it does** | Request · Chase · Validate · Load · Flag stale data |

***

#### Scope 3 Emissions Inventory Assembly

File a defensible Scope 3 inventory on time.

Each reporting cycle, assembles the Scope 3 inventory across the supply chain — Category 1 (purchased goods) from the supplier emissions ledger, Category 4 and 9 (upstream and downstream transport) from per-shipment freight emissions, and Category 12 (end-of-life) from product disposition data. Reconciles totals against the prior year, identifies material movement drivers, and flags missing supplier factors or freight records before the inventory enters the reporting pack.

|                  |                                                                                 |
| ---------------- | ------------------------------------------------------------------------------- |
| **Value driver** | Risk & Compliance                                                               |
| **KPI moved**    | ESG filings on time                                                             |
| **What it does** | Pull Cat 1, 4, 9, 12 emissions · Reconcile · Flag gaps · Produce filing figures |

***

#### Product Carbon Footprint Calculation

Have per-SKU PCFs ready when customers and tenders ask.

Calculates product carbon footprints per SKU by rolling up BOM components with supplier-specific or secondary emissions factors, manufacturing energy intensity per site, and inbound and outbound freight emissions. Recalculates when supplier data refreshes, routings change, or recipes are revised, and surfaces the deltas. Produces the PCF disclosures requested in customer RFQs, tenders, and Digital Product Passports.

|                  |                                                                                  |
| ---------------- | -------------------------------------------------------------------------------- |
| **Value driver** | Revenue                                                                          |
| **KPI moved**    | Tender win rate                                                                  |
| **What it does** | Roll up PCF from BOM and emissions · Recalculate on change · Produce disclosures |

***

#### Shipment Emissions Calculation

Have Scope 3 freight numbers ready when customers and reporting ask.

For each completed shipment, pulls weight, distance, mode, and carrier, and computes the carbon footprint using the right emissions factor. Stores the result against the shipment record so it can flow into Scope 3 reporting and customer emissions requests. Flags shipments where input data was incomplete.

|                  |                                                                                |
| ---------------- | ------------------------------------------------------------------------------ |
| **Value driver** | Revenue                                                                        |
| **KPI moved**    | Tender win rate                                                                |
| **What it does** | Compute per-shipment footprint · Store against record · Flag incomplete inputs |

***

## Trade compliance & customs

*Keeping shipments moving — with the right HS codes, customs documentation, and mandatory fields in place before goods reach the border.*

### Agents

{% hint style="info" %}
**Agents** handle customs classification, mandatory field collection, and compliance filings — catching gaps before they hold up a shipment.
{% endhint %}

#### Trade Compliance & Customs Classification

Stop shipments getting stuck at customs.

Defines and maintains HS codes, customs descriptions, and country of origin for items based on product features and BOM. Ensures correct classification per destination market and keeps documentation ready for export.

|                  |                                                        |
| ---------------- | ------------------------------------------------------ |
| **Value driver** | Service Level                                          |
| **KPI moved**    | OTIF to customer %                                     |
| **What it does** | Classify items · Maintain per-market · Keep docs ready |

***

#### CBAM Declaration & Filing

File quarterly CBAM declarations without penalty exposure.

For EU imports of in-scope goods (iron, steel, aluminium, cement, fertilisers, hydrogen, and electricity), identifies CN-code matches on incoming POs, collects embedded emissions data from non-EU suppliers ahead of each quarterly deadline, calculates the CBAM liability, and files the declaration through the CBAM registry. Falls back to default values within regulatory rules where primary data is not available.

|                  |                                                                  |
| ---------------- | ---------------------------------------------------------------- |
| **Value driver** | Risk & Compliance                                                |
| **KPI moved**    | CBAM penalty exposure                                            |
| **What it does** | Identify in-scope POs · Collect supplier data · Calculate · File |

***

#### EUDR Due Diligence Statement

Keep EUDR-scope shipments moving with a valid DDS on file.

For commodities in scope of the EU Deforestation Regulation (cocoa, coffee, palm oil, soy, rubber, timber, cattle, and derived products), collects geolocation coordinates of production plots and legal-harvest evidence from suppliers, runs coordinates against deforestation datasets, assembles the Due Diligence Statement, and files it in EU TRACES. Blocks shipments where a valid DDS reference is not on file.

|                  |                                                                                 |
| ---------------- | ------------------------------------------------------------------------------- |
| **Value driver** | Service Level                                                                   |
| **KPI moved**    | OTIF to customer %                                                              |
| **What it does** | Collect evidence · Run deforestation check · File DDS · Block without reference |

***

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### Item Master Customs Audit

Clear the customs-data backlog before customs catches it.

Item data quality analysis tool focused on export and customs compliance. Evaluates HS codes, country of origin, weights, and dimensions per SKU and produces a quality report with a summary dashboard and downloadable issue list.

|                  |                                                                       |
| ---------------- | --------------------------------------------------------------------- |
| **Value driver** | Service Level                                                         |
| **KPI moved**    | OTIF to customer %                                                    |
| **What it does** | Evaluate customs fields per SKU · Produce quality report · Issue list |

***

#### Shipment Mandatory Field Audit

Catch shipment-level customs gaps that item audits miss.

Compares shipment records against item master to identify shipments missing mandatory customs fields: HS code, gross weight, net weight, country of origin. Surfaces the shipment-level gaps that pure item-level audits miss — because the issue is in how the item was shipped, not in the master.

|                  |                                                                    |
| ---------------- | ------------------------------------------------------------------ |
| **Value driver** | Service Level                                                      |
| **KPI moved**    | OTIF to customer %                                                 |
| **What it does** | Cross-reference shipments against item master · Surface field gaps |

***

## Supplier screening & due diligence

*Keeping the supplier base clear of sanctions exposure and forced labour risk — with defensible documentation on file.*

### Agents

{% hint style="info" %}
**Agents** screen suppliers on creation, re-screen when lists update, and produce the disclosures required under LkSG, CSDDD, and equivalent regulations.
{% endhint %}

#### Sanctions List Screening

Stay clear of sanctioned counterparties.

Screens each new supplier and customer against published sanctions lists on creation. Re-screens the full master when the lists update. Documents each screening result and escalates matches to compliance.

|                  |                                                                             |
| ---------------- | --------------------------------------------------------------------------- |
| **Value driver** | Risk & Compliance                                                           |
| **KPI moved**    | Sanctions exposure                                                          |
| **What it does** | Screen on creation · Re-screen on list update · Document · Escalate matches |

***

#### Forced Labour & Human Rights Risk Screening

Have defensible due diligence on file for LkSG, CSDDD, and equivalents.

Screens the supplier base against UFLPA entity lists, forced labour indices, and country/sector risk maps on supplier creation and re-screens when source lists update. Triggers enhanced due diligence questionnaires when risk thresholds are hit, tracks remediation plans against deadlines, and produces the disclosures required under LkSG, the Norwegian Transparency Act, the UK Modern Slavery Act, and the EU CSDDD.

|                  |                                                                           |
| ---------------- | ------------------------------------------------------------------------- |
| **Value driver** | Risk & Compliance                                                         |
| **KPI moved**    | LkSG/CSDDD exposure                                                       |
| **What it does** | Screen · Re-screen · Trigger enhanced due diligence · Produce disclosures |


# Cross-functional

Use cases that span multiple business functions or support internal operations — productivity tools, internal workflows, and platform-level visibility.

Apps and agents that do not belong to a single process but are used across the organisation — internal tooling, operational workflows, data access, and platform-level visibility. These are typically faster to build and lower in complexity than process-specific use cases.

The use cases below are grouped by theme. **Agents** run on their own and report back; **Apps** are surfaces your team opens and acts in; **Dashboards** give live visibility without requiring interaction.

***

## Data access & ERP visibility

*Getting data out of the ERP and into the hands of people who need it — without queuing for the analytics team or writing SQL.*

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### ERP Natural-Language Chat

Get answers from ERP data without queuing for the analytics team.

Natural-language chat interface over the ERP data warehouse. Users ask business questions; the agent queries the underlying tables, returns results as tables or charts, and explains the joins. Replaces the standing queue of report requests that piles up against the analytics team.

|                  |                                                             |
| ---------------- | ----------------------------------------------------------- |
| **Value driver** | Productivity                                                |
| **KPI moved**    | Analytics ticket backlog                                    |
| **What it does** | Query ERP data in plain language · Return tables and charts |

***

#### Production Data No-Code Browser

Get production data into the hands of people who cannot write SQL.

No-code interface for browsing, filtering, and exporting production report data locked in a data warehouse. Used where reports exist but the people who need them cannot query SQL.

|                  |                                                      |
| ---------------- | ---------------------------------------------------- |
| **Value driver** | Productivity                                         |
| **KPI moved**    | Data team incidents per month                        |
| **What it does** | Browse · Filter · Export production data without SQL |

***

#### Pipeline Health Dashboard

Spot pipeline failures before downstream consumers notice.

Status surface for data pipelines (Azure Data Factory, dbt, Airflow): shows successful, running, and failed runs with timing and trend. Used by the data team to spot failures before downstream consumers notice them.

|                  |                                                  |
| ---------------- | ------------------------------------------------ |
| **Value driver** | Productivity                                     |
| **KPI moved**    | Data team incidents per month                    |
| **What it does** | Monitor pipeline runs · Trend failures over time |

***

#### AI Agent Control Tower

See what AI is running, what it is costing, and where it is working.

Central dashboard of every AI agent in the organisation: status, model usage, costs, reliability, data access, and estimated business value. Used by the AI lead to see what is actually running, what it is costing, and where it is working.

|                  |                                                 |
| ---------------- | ----------------------------------------------- |
| **Value driver** | Cost                                            |
| **KPI moved**    | AI spend as % of IT budget                      |
| **What it does** | Track all agents · Monitor cost and reliability |

***

## Internal operations & productivity

*Lightweight tools that replace the spreadsheet or shared drive for common internal workflows.*

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### Idea Triage & Prioritisation

Give the org a real channel for ideas — with a ranked backlog out the other end.

Idea submission platform where employees post ideas; AI evaluates each one against business value and expected time savings and ranks the backlog. Gives the AI lead a working portfolio to pick from instead of a never-read inbox.

|                  |                                                      |
| ---------------- | ---------------------------------------------------- |
| **Value driver** | Cost                                                 |
| **KPI moved**    | Savings from CI ideas $                              |
| **What it does** | Submit ideas · Evaluate against value · Rank backlog |

***

#### Excel Merge Utility

Collapse the manual copy-paste step before an ERP import.

Merges multiple Excel files into a single import template. User uploads the target template and the source files; the app consolidates them and outputs a downloadable merged template. Used before most ERP imports that pull from multiple sources.

|                  |                                                         |
| ---------------- | ------------------------------------------------------- |
| **Value driver** | Productivity                                            |
| **KPI moved**    | Manual data prep hours saved                            |
| **What it does** | Upload sources · Consolidate · Download merged template |

***

#### Routine Handbook Search

Find the right routine without navigating the shared drive.

Searchable handbook for managers and frontline staff: routines, procedures, and policies uploaded as PDFs, with automatic change detection between versions. Replaces the shared drive that nobody can navigate.

|                  |                                                           |
| ---------------- | --------------------------------------------------------- |
| **Value driver** | Productivity                                              |
| **KPI moved**    | Frontline staff hours saved                               |
| **What it does** | Search procedures · See what has changed between versions |

***

#### HR Handbook Assistant

Get HR policy answers without filing a ticket.

Internal assistant for employees to search HR policies (absence, hours, salary, holidays, responsibilities) and browse company-wide content (goals, values, direction). Replaces the intranet search nobody trusts.

|                  |                                                     |
| ---------------- | --------------------------------------------------- |
| **Value driver** | Productivity                                        |
| **KPI moved**    | HR ticket deflection rate                           |
| **What it does** | Answer HR policy questions · Browse company content |

***

#### HSE Case Tracker

Capture HSE cases with the fields incident reporting actually needs.

Structured data entry application for HSE cases with the database fields incident reporting actually needs (date, location, severity, category, root cause, corrective action). Replaces the form-and-email loop that usually accompanies HSE reporting.

|                  |                                                |
| ---------------- | ---------------------------------------------- |
| **Value driver** | Risk & Compliance                              |
| **KPI moved**    | Lost time injuries                             |
| **What it does** | Structured HSE case capture · Track to closure |

***

#### Risk Assessment Workbench

Keep the risk assessment live instead of refreshing it once a year.

Collaborative risk assessment tool (ISO27001-aligned) with role-based workflows, AI-assisted risk identification, probability/impact scoring, and colour-coded heatmaps. Used by compliance and IT risk teams to keep the assessment current.

|                  |                                                     |
| ---------------- | --------------------------------------------------- |
| **Value driver** | Risk & Compliance                                   |
| **KPI moved**    | ISO/compliance audit findings                       |
| **What it does** | AI-assisted risk ID · Score · Track collaboratively |

***

## Market & competitive intelligence

*Keeping teams informed on market movements and competitor activity — without a standing news-clipping habit.*

### Apps

{% hint style="info" %}
**Apps** are surfaces your team opens — interactive tools, dashboards, and workspaces. A dashboard is a type of app that gives live visibility; other apps let your team take action, approve decisions, or run structured workflows.
{% endhint %}

#### Market Monitoring Agent

Get a daily brief on sector news, competitors, and macro signals.

Daily monitoring agent scanning sector news, competitor announcements, and macro trends. Pulls relevant statistical sources (national statistics offices) for import/export and consumption data. Delivers a daily or weekly briefing tailored to the category.

|                  |                                                       |
| ---------------- | ----------------------------------------------------- |
| **Value driver** | Revenue                                               |
| **KPI moved**    | Win rate %                                            |
| **What it does** | Scan sector news · Pull macro data · Deliver briefing |

***

#### Competitor Intelligence Tracker

Keep competitive awareness fresh without a news-clipping habit.

Monitors a list of competing products and companies, scans for recent announcements, customer stories, press releases, and forum sentiment, and compiles results into a structured report on a defined cadence. Used by product and category managers to keep awareness current.

|                  |                                                            |
| ---------------- | ---------------------------------------------------------- |
| **Value driver** | Revenue                                                    |
| **KPI moved**    | Win rate %                                                 |
| **What it does** | Monitor competitors · Compile structured report on cadence |


# Team Workspace

The Team Workspace is the shell you see after logging in to Riff. It is shared across your whole team and gives you a single place to reach all your apps, agents, and team-level resources.

The Team Workspace is what you see immediately after logging in. It is not an app or an agent — it is the team-level shell that holds everything your team builds.

## What's in the Team Workspace

| Surface                                        | What it is                                                                                            |
| ---------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| [Home](/reference/team-workspace/home)         | Your personalised landing page — recent agents, recent apps, quick actions                            |
| [Ask Riff](/reference/team-workspace/ask-riff) | A persistent chat with the Riff agent that has access to your team's integrations and Context library |
| [Context](/reference/team-workspace/context)   | Your team's knowledge library — information the Riff agent draws on across all your work              |
| My apps                                        | All the apps your team has built                                                                      |

## Starting a build

From the Team Workspace you can start a new build at any time:

* **New app** — opens the App builder
* **New agent** — opens the Agent builder

Each builder has its own interface and its own reference section. See [App builder](/reference/app-builder) and [Agent builder](/reference/agent-builder).


# Home

Home is the first screen you see when you open your Riff workspace. It's your starting point — from here you can open any app or agent you've built, or start something new.

## What you'll find on Home

**Your apps and agents** A grid of everything in your workspace. Each card shows the name, a short description, and when it was last updated. Click any card to open it.

**Recent activity** A feed of what's been happening — agent runs completed, tasks raised, integrations triggered. Useful for a quick morning check without opening each app individually.

**New App / New Agent buttons** The two primary actions in Riff. Use these to start building. If you're not sure which to pick, see [Apps and Agents](https://github.com/ElleNealAI/riff-docs/blob/main/concepts/apps-and-agents/README.md).

## Finding something specific

If you have more than a handful of apps and agents, use the search bar at the top of Home to filter by name. You can also filter by type — Apps only, or Agents only.


# Ask Riff

Ask Riff is a persistent, threaded chat with the Riff agent at team level — available from the left sidebar of the Team Workspace.

Ask Riff is a team-level chat with the Riff agent. It lives in the left sidebar of the Team Workspace and gives you a single place to ask questions, explore data across your integrations, and get help — without opening a specific app or agent.

{% hint style="info" %}
Ask Riff is an Enterprise feature.
{% endhint %}

## Layout

Two panels side by side:

**Left — Conversations** A scrollable list of past conversations, each showing a title (or "Untitled Conversation") and a date stamp. A **+** button at the top starts a new conversation. A collapse icon hides the panel when you want more space.

**Right — Main chat** When you start a fresh conversation, a centred heading appears: *"What would you like to explore?"* Below it, four suggestion cards offer questions relevant to your team's connected integrations — these are generated based on which integrations your team has enabled, so they reflect your actual data. Type in the input at the bottom or click a card to send it immediately.

Once a conversation has messages, the suggestion cards are replaced by the scrollable thread history.

## What the Riff agent can do here

The Riff agent in Ask Riff has access to your team's connected integrations and your [Context](/reference/team-workspace/context) library. You can ask it to:

* Pull data across systems — "How many open POs do we have with Acme this month?"
* Surface exceptions — "Which supplier confirmations are more than 48 hours overdue?"
* Answer questions from your knowledge library — "What's our escalation policy for invoice mismatches?"
* Help you think through a build — "What's the best way to structure an agent that handles delivery exceptions?"

## Chat input

* **Agent dropdown** — adjust model (Best / Standard / Fast), context window, tone of voice, response style, and technical level
* **Image icon** — attach images to your message
* Type your message and press Enter or the arrow button to send

## Ask Riff vs. the Riff agent in a builder

|               | Ask Riff                                     | App builder / Agent builder chat                |
| ------------- | -------------------------------------------- | ----------------------------------------------- |
| Scope         | Your whole Team Workspace                    | A single app or agent project                   |
| What it knows | All connected integrations + Context library | That project's integrations, code, instructions |
| Best for      | Answering cross-workspace questions          | Building and configuring                        |

Ask Riff is not a builder. To create or change an app or agent, open the App builder or Agent builder.


# Context

Context is your team's knowledge library — information the Riff agent draws on when helping you build and when your agents run their jobs.

Context is your team's shared knowledge library. The Riff agent refers to it when answering questions in Ask Riff, when building in the App builder, and when your agents run their tasks.

## What you see

The Context tab shows your knowledge library as a browsable, searchable list. Entries are organised by domain and category. Click any entry to expand it and read its full content.

Use the search bar to find entries by name or content — search is semantic, so you can describe what you're looking for rather than matching exact words.

## How knowledge gets in

Knowledge is added by the Riff agent — not manually. As the Riff agent works with your data and integrations, it identifies information worth saving (supplier details, business rules, terminology, process notes) and surfaces it as a suggestion.

**Pending suggestions** appear as a section in the Context tab. Each suggestion shows what the agent proposes to save and why. You decide what to keep:

* Click **Add** to confirm — the entry joins your knowledge library
* Click **Dismiss** to skip it

You cannot paste, upload, or write entries directly. The Riff agent is the route in.

## What knowledge entries contain

Each entry has a name and content (written in plain text or markdown). Entries may also have optional metadata — including tags, source, and update frequency — which the Riff agent sets when it creates them.

## How the Riff agent uses Context

The Riff agent does not automatically load your entire Context library into every response. Instead, it searches Context on demand — when it determines that background knowledge would help it answer a question or complete a task more accurately.

You can ask the Riff agent to search Context explicitly: *"Check what we know about Acme Logistics before drafting this email."*

## Keeping Context useful

Context is most valuable when it reflects your current business reality. Review your library periodically — especially when supplier relationships change, processes update, or new ERP reference data is introduced. Ask the Riff agent to update or retire entries that are no longer accurate.


# App builder

The App builder is where you build user-facing applications — dashboards, forms, portals, and tools that your team or customers open and use.

The App builder is the interface you work in when you are building an app. An app is something people open and use — a dashboard, a form, a portal, a reporting tool. The Riff agent builds it with you.

## Layout

Three zones:

* **Topbar** — project name, tab row, Version History, Deploy button
* **Content area** — changes per active tab
* **Console / Logs panel** — slides up from the bottom on demand

## Default tabs

These tabs are open when you first enter the App builder:

| Tab                                                                                                    | What it is                                                       |
| ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- |
| [Preview](/reference/app-builder/preview)                                                              | Your app running live — interact with it exactly as a user would |
| [Tasks](/reference/app-builder/tasks)                                                                  | Shared task board between you and the Riff agent                 |
| [Automations](https://github.com/ElleNealAI/riff-docs/blob/main/reference/app-settings/automations.md) | Schedule your app's backend endpoints to run on a cron           |

## Additional tabs

Open any of these via the **+** button in the topbar:

| Tab                                                  | What it is                                                               |
| ---------------------------------------------------- | ------------------------------------------------------------------------ |
| [Integrations](/reference/shared/integrations)       | Connect your app to external services                                    |
| [Database](/reference/app-builder/database)          | Browse your app's database and ask the Riff agent to work with your data |
| [Storage](/reference/shared/storage)                 | Upload and manage files                                                  |
| [Secrets](/reference/shared/secrets)                 | Store API keys and credentials                                           |
| [Access](/reference/app-builder/access)              | Control who can reach your workspace and app                             |
| [Code Editor](/reference/app-builder/code-editor)    | Edit source code directly                                                |
| [Packages](/reference/app-builder/packages)          | Manage frontend and backend dependencies                                 |
| [Version History](/reference/shared/version-history) | Compare and restore past code states                                     |

## Deploying your app

When your app is ready for real users, click **Deploy** in the topbar. See [Deploy](/reference/app-builder/deploy) for the full flow and pre-deployment checks.

## The Riff agent in the App builder

The Riff agent chat panel runs on the right side of the App builder. It builds your app in response to your messages. See [Riff agent chat](/reference/app-builder/riff-agent-chat) for what the panel contains and how to use it effectively.

## App Settings

Configure your app's name, instructions, design guidelines, and workspace controls under App Settings. See [App Settings](/reference/app-builder/app-settings).


# Preview

Preview shows your app running live inside the App builder. Use it to test your work in real time as you build.

Preview is the default tab when you open an app in the App builder. It shows your app running live — you can interact with it exactly as your users will, and any change the Riff agent makes appears instantly without you needing to refresh.

## What you see

A full-height frame showing your app in its current state. While it connects you'll see the Riff loading screen briefly. Once ready, the app is fully interactive.

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2FvDBotLVwXbszzm83WoDt%2Fimage.png?alt=media&amp;token=5cbf3da4-04d1-46ba-bafa-0735b5dd0366" alt=""><figcaption></figcaption></figure></div>

## How to use it

**Test as a user would.** Click buttons, fill in forms, navigate between pages. If something looks wrong, you've caught it before your team or customers see it.

**Changes appear immediately.** The Riff agent's edits hot-reload into Preview. You don't need to save or refresh — what you see is always current.

## Notes

Preview shows the **development version** of your app — not the deployed (production) version. Deploying is a separate step. See [Deploy](/reference/app-builder/deploy).


# Tasks

Tasks is the shared task board between you and the Riff agent. See what is in progress, what is queued, and what has been completed.

Tasks is a shared board between you and the Riff agent. When you ask the Riff agent to build something, it breaks the work into tasks here — so you can both track progress without re-reading long chat histories.

## What you see

A card headed **"Agent tasks"** with two controls at the top right:

* **Search** — filter tasks by title in real time
* **Show subtasks** toggle — reveals child tasks nested under parent tasks (off by default)

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2FUkauiJdK0A0aITQHbLBS%2Fimage.png?alt=media&amp;token=66ca47e9-8601-4e25-9636-8c4941564f31" alt=""><figcaption></figcaption></figure></div>

Tasks are grouped into four sections, from top to bottom:

<table><thead><tr><th width="192.3798828125">Section</th><th>What it contains</th></tr></thead><tbody><tr><td><strong>In Progress</strong></td><td>What the Riff agent is actively working on right now</td></tr><tr><td><strong>To Do</strong></td><td>Work that is queued but not yet started</td></tr><tr><td><strong>Done</strong></td><td>Completed tasks</td></tr><tr><td><strong>Cancelled</strong></td><td>Tasks that were dropped</td></tr></tbody></table>

Done and Cancelled only appear when tasks exist in those states.

## How it works

The Riff agent creates and updates tasks automatically as it works. When it starts on something it moves it to In Progress; when it finishes it moves it to Done. You can also create tasks manually or change their status.

## When to use it

* To check what the Riff agent is currently working on
* To see what is queued before you add more instructions
* To review completed work at a glance without scrolling back through chat
* To track parallel work across a longer build session


# Riff agent chat

The Riff agent chat panel runs on the right side of the App builder. This is where you direct the Riff agent to build, change, and fix your app.

The Riff agent chat panel is on the right side of the App builder. You build your app by talking to the Riff agent here — describing what you want, reviewing what it builds, and iterating.

For the full reference on the chat panel controls (thread navigation, Agent dropdown, Build / Plan toggle, file attachments, skill mentions), see [Riff agent chat panel](/reference/riff-agent/chat-panel).

## Starting a conversation

Type what you want and press Enter. The Riff agent reads your message, considers the current state of your app and your connected integrations, and responds — usually by making changes directly.

You don't need to frame requests as technical instructions. Describe the outcome you want:

* "Add a table that shows open purchase orders from this week, sorted by supplier"
* "The submit button isn't working — can you check what's happening?"
* "Connect this form to the SAP integration and write the output back to the PO table"

## Threads

Each conversation is a thread. Use the Thread Selector at the top of the panel to switch between threads or start a new one. Threads let you keep separate topics — a feature you're building, a bug you're debugging — without losing context from either.

## The Build / Plan toggle

By default the Riff agent is in **Build mode** — it acts on your messages. Switch to **Plan mode** when you want to review what it intends to do before it does it. Plan mode is shown in orange. See [Build / Plan toggle](/reference/riff-agent/build-plan-toggle).

## Skills

Type `/` in the chat input to load a skill — a prepared brief or instruction set for a specific type of task. The skill's content is added to your message. See [Skills](/reference/riff-agent/skills).


# Code Editor

The Code Editor gives you a direct view of every source file in your app. Use it to inspect what the Riff agent has built or make changes the agent cannot handle through prompting.

The Code Editor shows the full source code of your app in a two-column layout. The Riff agent writes and edits code on your behalf through chat — the Code Editor is there for the times you need to look directly at the code or make a change yourself.

## Layout

**Left panel (file tree)** — a hierarchical list of all files in your project, organised into folders (frontend files, backend files, and so on).

**Right panel (editor)** — the contents of the selected file, with syntax highlighting.

Click any file in the left panel to open it in the editor. Edit directly in the editor when needed.


# Database

Browse your app's built-in database tables and inspect data — and ask the Riff agent to create, query, update, or delete records directly.

Every Riff app includes a built-in PostgreSQL database. The Database tab lets you browse your tables and inspect rows. The Riff agent can interact with the database directly on your behalf.

## What you can see

<table><thead><tr><th width="204.00775146484375">Capability</th><th>Detail</th></tr></thead><tbody><tr><td>Table browser</td><td>View all tables in your database</td></tr><tr><td>Data inspection</td><td>Browse rows in any table — useful for verifying data your app has written</td></tr><tr><td>Environment switcher</td><td>Toggle between your development (Workspace) and production (Deployed) database</td></tr></tbody></table>

## What the Riff agent can do

The Riff agent has direct tools to work with your database. You can ask it to:

* **Create records** — "Add ten sample purchase orders to the database so I can test the dashboard"
* **Read and analyse data** — "How many invoices are in an open state right now?" or "Show me the last 5 supplier records that were updated"
* **Update records** — "Set the status of PO-1042 to Confirmed"
* **Delete records** — "Remove the test data we created earlier"
* **Generate synthetic data** — "Populate the supplier table with 20 realistic test entries"

This means you rarely need to write SQL yourself. Ask the Riff agent what you need and it will handle the database interaction.

## Notes

* The tab shows your **development database** by default. Switch to production using the environment dropdown when you need to inspect live data.
* All schema changes (adding tables, columns, migrations) should be done by asking the Riff agent — it creates version-controlled migrations automatically.


# Packages

Packages shows all the libraries your app depends on and lets you add or remove them without using a command line.

The Packages tab lists every library your app depends on, organised into three cards:

<table><thead><tr><th width="217.18603515625">Card</th><th>What it shows</th></tr></thead><tbody><tr><td><strong>Frontend packages</strong></td><td>Installed NPM packages for your React / TypeScript frontend</td></tr><tr><td><strong>Backend packages</strong></td><td>Installed Python packages for your FastAPI backend</td></tr><tr><td><strong>Build artifacts</strong></td><td>Compiled build output</td></tr></tbody></table>

Each card shows package names and versions, with controls to add or remove packages.

## How packages are managed

The Riff agent installs packages automatically when it needs a library to complete a build task — you usually do not need to think about this.

If you need a specific package that the agent has not installed, ask it in chat: *"Install the pandas library"* or *"Add a charting library for the frontend."*


# Logs

The Logs panel shows real-time output from your app — backend print statements, API calls, errors, and browser console messages.

The Logs panel is a sliding panel at the bottom of the App builder. It shows real-time output from your app — everything your backend prints, every API call, every error — so you can see what is happening as it happens.

## Opening the panel

Click the **Show logs** button (terminal icon) in the lower area of the workspace. The panel slides up from the bottom with a dark background and monospace text. Click the toggle in the panel header to close it again.

## What you see

Log entries appear newest first. Each entry shows:

* **Source** — `frontend` or `backend`
* **Severity** — the log level (info, warning, error)
* **Message** — the log text

## Controls

<table><thead><tr><th width="283.85272216796875">Control</th><th>What it does</th></tr></thead><tbody><tr><td><strong>Filter field</strong></td><td>Type to narrow logs to lines containing that text</td></tr><tr><td><strong>Send logs to agent</strong> (wrench icon)</td><td>Copies the visible log entries into the Riff agent chat — the agent reads them and proposes a fix</td></tr><tr><td><strong>Clear</strong></td><td>Wipes the current log list to start a clean trace</td></tr><tr><td><strong>Hide toggle</strong></td><td>Closes the panel</td></tr></tbody></table>

## When to use it

* An API call is failing — check the backend logs to see the error before asking the Riff agent to fix it
* A form submission is not working — check frontend logs for browser errors
* Something looks wrong in the data — trace the backend calls that wrote it
* **Send logs to agent** is the fastest path to diagnosis: one click gives the Riff agent the exact error context it needs


# Deploy

Deploy publishes your app to a permanent public URL so real users can access it.

The Deploy button is in the top-right of the App builder — a blue pill with a rocket icon. Clicking it publishes your app to a live URL accessible by anyone you share it with.

Until you deploy, your app runs only in the development workspace, visible only to you.

## The deploy flow

1. Click **Deploy** in the topbar
2. A popover opens showing:
   * Any error from a previous failed deployment
   * The deployment URL your app will be (or already is) published at
   * A checklist of pre-deployment validations
3. Wait for all checklist items to pass (each shows a tick or a block)
4. Click **Deploy** inside the popover to start deployment
5. The topbar button shows **"Deploying…"** with a spinner while it runs
6. When complete, the button returns to **Deploy** and your app is live

## Pre-deployment checklist

Riff runs these checks automatically before allowing deployment:

| Check               | What it verifies                                              |
| ------------------- | ------------------------------------------------------------- |
| Subdomain available | Your chosen app URL is not already taken                      |
| Public username set | Your account has a public username configured                 |
| Deploy permission   | You have permission to deploy this app                        |
| Security checks     | Basic security validation passes                              |
| Owner first deploy  | The first deployment of any app must be done by the app owner |

If any check fails, the Deploy button inside the popover stays disabled. The checklist shows which item is blocking and why.

## Your app's URL

Deployed apps are published at `username.riff.works/app-name`. This URL is permanent — it does not change between deployments.

## If deployment fails

The topbar button turns amber and shows **"Retry Deploy"**. Open the popover to see the error from the failed attempt. Fix the issue and click Deploy again.

## Development vs. production

The workspace is your development environment — changes here do not affect the live app until you deploy. Your development and production databases are separate. See [Riff environment](/reference/app-builder/riff-environment) for how the two environments relate.

## Before you deploy

Riff provides a set of pre-deployment skills you can run before going live. These are not automatic — you trigger them intentionally as part of your readiness process. Think of them as a structured checklist that produces a documented record before anything goes live.

To trigger a skill, type `/` followed by the skill name in the agent chat.

<table><thead><tr><th width="49">#</th><th width="271.4805908203125">Skill</th><th>What it does</th></tr></thead><tbody><tr><td>1</td><td><code>deployment-check-security</code></td><td>Scans for critical vulnerabilities: leaked API keys, missing auth checks, hardcoded secrets, and injection risks. Reports HIGH and MEDIUM findings only.</td></tr><tr><td>2</td><td><code>deployment-check-integration</code></td><td>Maps every external service connection — what data is read, what is written, whether any personal data (PII) is involved. Produces a documented integration record.</td></tr><tr><td>3</td><td><code>perform-security-audit</code></td><td>End-to-end security review: authentication, secrets, SQL injection, endpoint authorisation, PII logging, input validation, and error exposure. Creates tasks for all high and critical findings.</td></tr><tr><td>4</td><td><code>implement-user-roles</code></td><td>Configures role-based access so each user sees only the data relevant to them — important when the app is shared across teams or departments.</td></tr><tr><td>5</td><td><code>implement-ux-checks</code></td><td>Reviews key screens and flows for usability issues before your users encounter them in production.</td></tr></tbody></table>

Run these in order. Each produces a report in the task board. Review findings, action any blockers with the agent, then deploy when all checks are green.


# App Settings

Per-app configuration — design guidelines, management settings, custom instructions, automations, and workspace controls.

App Settings control how each individual app is configured. Access them by clicking the app name in the top left of the App builder, then selecting **Settings**.

***

## App Design

Set the visual rules the Riff agent follows when it generates or updates your app's UI. The agent reads these guidelines before making any interface change.

| Setting           | What it controls                                                           |
| ----------------- | -------------------------------------------------------------------------- |
| Design Guidelines | Summary of your app's visual purpose — edit to match your brand            |
| Design Approach   | Overall philosophy (e.g. "minimal and data-dense", "clear and accessible") |
| Key Features      | Elements to emphasise (e.g. "tables over charts", "mobile-friendly")       |
| Shapes            | Preferred geometry (e.g. "rounded corners", "sharp rectangles")            |
| Typography        | Font and text hierarchy guidance                                           |
| Favicon           | The icon shown in browser tabs                                             |

App Design is a guide for the Riff agent, not a hard constraint. For specific components, give the agent more detailed instructions in chat. Design guidelines are auto-generated when you first create the app — they are often generic by default, so review and edit them early.

Changes to App Design affect future generations. Existing UI components are not automatically updated.

***

## App Management

Tell the Riff agent what your app is for. The more context you provide here, the better its decisions about structure, naming, and logic.

| Setting         | What it does                                                               |
| --------------- | -------------------------------------------------------------------------- |
| Name            | Display name of your app. Changing this does NOT change the deployed URL.  |
| Pitch           | One-sentence description — the Riff agent uses this as its primary framing |
| App Description | Full description of features, integrations, and key workflows              |
| Target Audience | Who will use this app (e.g. "procurement team, 20 users, internal")        |

**Examples for procurement and operations apps:**

| Field           | Example                                                                                                                                                                   |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pitch           | "Monitors open POs and chases supplier confirmations automatically"                                                                                                       |
| App Description | "Connects to Infor LN via the ION API, pulls open POs daily, and sends confirmation requests to suppliers. Escalates overdue items to the procurement manager via email." |
| Target Audience | "Procurement team — 5 buyers and 1 procurement manager. Internal use only."                                                                                               |

App Management context is read by the Riff agent on every request. Keep it accurate as the app evolves. A clear pitch and description reduce the number of clarifying questions the agent asks.

***

## Custom Instructions

Give the Riff agent rules that apply specifically to this app. Custom Instructions take priority over the agent's default behaviour and over global preferences.

**When to use them:**

* Your app handles regulated data and you want the agent to always add data handling notes to code comments
* Your team follows a specific naming convention for database tables or API endpoints
* Your procurement workflow has an escalation rule the agent must always respect
* You want consistent date formats, currency conventions, or language standards throughout

**Examples:**

> "This app integrates with SAP S/4HANA. All API calls must include the X-CSRF-Token header. Never cache authentication tokens."

> "PO values above €50,000 must always require a second approver flag in the database. Never remove this check."

> "Use ISO 8601 date formatting (YYYY-MM-DD) throughout. Supplier IDs are always six digits, zero-padded."

Keep instructions concise — 50 to 500 characters is the recommended range. Longer instructions slow the agent down. If the agent ignores an instruction, check whether it conflicts with a platform constraint.

***

## Automations

Schedule work inside your app to run automatically — at a set time, on a repeating pattern, or triggered by a time-based rule. Once configured, the job runs without anyone pressing a button.

{% hint style="info" %}
**Automations are a feature, not a build type.** On Riff you build Apps and Agents. Automations are something you add to them — the mechanism that tells your app *when* to run a job without manual input.
{% endhint %}

{% embed url="<https://youtu.be/I4bswn6Lwk0>" %}
Riff Automations — overview and walkthrough
{% endembed %}

**When to add an Automation:**

* The job repeats on a fixed schedule — daily, weekly, end-of-month, or any recurring pattern
* No one should have to remember to kick it off — supplier chasing, exception digests, overnight syncs
* The trigger is time, not a human action

**Common examples for procurement and manufacturing teams:**

* Chase open supplier confirmations every morning at 6am before buyers arrive at their desks
* Push a weekly open-PO summary to the team every Friday at 4pm
* Trigger an overnight ERP data reconciliation at 2am when systems are quiet
* Send a procurement exception digest each day at 7am so buyers start with a clear picture

**Actions available:**

| Action                   | What it does                                              |
| ------------------------ | --------------------------------------------------------- |
| Add a cron schedule      | Set a time-based rule to trigger a workflow automatically |
| Target an API endpoint   | Point an automation at an endpoint inside your app        |
| Pause / resume           | Suspend a schedule without deleting it                    |
| Run multiple automations | Each fires independently                                  |

**Common cron patterns:**

| Pattern        | Runs…                   |
| -------------- | ----------------------- |
| `0 7 * * 1-5`  | Every weekday at 7:00am |
| `0 6 * * *`    | Every day at 6:00am     |
| `0 2 * * *`    | Every night at 2:00am   |
| `0 16 * * 5`   | Every Friday at 4:00pm  |
| `*/30 * * * *` | Every 30 minutes        |

If cron syntax is unfamiliar, describe the schedule in plain language in chat and the Riff agent will suggest the right expression.

***

## Workspace Management

Control the runtime state of your app — from routine maintenance to taking a live app offline.

| Control               | What it does                                                        | When to use it                                                       |
| --------------------- | ------------------------------------------------------------------- | -------------------------------------------------------------------- |
| **Upgrade**           | Moves your workspace to the latest Riff runtime                     | When new features or fixes are available                             |
| **Restart workspace** | Restarts app services — clears in-memory state, reloads environment | After changing secrets, after an upgrade, or when a process is stuck |
| **Undeploy**          | Removes the app from the public internet — workspace stays editable | To take a live app offline without deleting it                       |
| **Hibernate**         | Pauses the workspace to reduce resource usage                       | For apps that are built but not yet in active use                    |

**Notes:**

* **Restart** clears in-memory state only — your database, files, and secrets are not affected
* **Undeploy** is reversible — you can redeploy at any time
* **Upgrade** may require a restart to take full effect — the Riff agent will prompt you if needed
* **Hibernate** pauses the workspace — scheduled automations will not run while hibernated


# Access

The Access tab controls who can collaborate on your app, whether Riff support can view your workspace, and whether external systems can reach your development API.

The Access tab has three sections, each controlling a different type of access to your app and its workspace.

## Collaborators

Shows who can open and edit this app in the App builder. On enterprise accounts, team membership is managed at account level — you can see who has access but cannot add or remove collaborators here.

## Support Access

Controls whether the Riff support team can view your workspace.

**Default: disabled (private).** Your workspace is not accessible to Riff support unless you enable this.

When you need help from Riff support:

1. Click **Enable support access**
2. A shareable link to your workspace appears — share this with the support team
3. When the session is resolved, click **Revoke support access** to remove it

Support access is not permanent. Revoke it when you no longer need assistance.

## Workspace API

Controls whether external systems can call your development API endpoints.

**Default: private.** Your development API is not reachable from outside the workspace.

When you need an external service (a webhook, a third-party automation) to call your development endpoints:

1. Click **Enable public access**
2. The API base URL appears: `https://api.riff.new/_projects/{id}/dbtn/devx/app/routes`
3. Access expires automatically after **12 hours**
4. Click **Disable public access** to remove it before expiry if needed

This is a development-only feature. Production API access is managed through your deployed app URL.


# Riff environment

How Riff apps and agents are structured — the two environments (development and production), the file layout, and the infrastructure underneath.

Every Riff app has two environments that are completely independent.

| Environment     | Purpose                                                              |
| --------------- | -------------------------------------------------------------------- |
| **Development** | Your private build workspace. Changes here do not affect live users. |
| **Production**  | The live environment. Becomes active when you deploy.                |

Development and production have separate databases, separate environment variables, and separate secrets values. You can point a secret (e.g. your ERP API key) to a test endpoint in development and the live endpoint in production.

## How apps are built

Riff apps use the following stack — the Riff agent manages all of this for you:

| Layer    | Technology              |
| -------- | ----------------------- |
| Frontend | React + TypeScript      |
| Backend  | Python + FastAPI        |
| Database | PostgreSQL (serverless) |

You describe what you want to build. The Riff agent writes, tests, and deploys the code. You do not need to know the technology stack.

## File structure

| Location                   | What lives there                      |
| -------------------------- | ------------------------------------- |
| `frontend/src/pages/`      | One file per page (route) in your app |
| `frontend/src/components/` | Reusable UI components                |
| `backend/app/apis/`        | Backend API endpoints                 |
| `backend/app/libs/`        | Shared backend logic                  |

## Notes

* You do not need to manage infrastructure or hosting — the platform handles these.&#x20;
* The Riff agent connects to external systems through [Secrets](/reference/shared/secrets) and [Integrations](/reference/shared/integrations).
* Runtime output and errors are visible in [Logs](/reference/app-builder/logs).


# Agent builder

The Agent builder is where you configure an autonomous agent — a worker that runs jobs, monitors processes, and takes action on your behalf.

The Agent builder is the interface you work in when you are configuring an agent. An agent is an autonomous worker with a clear job — it runs on a trigger, does its work, and reports back. Unlike an app, there is no user-facing screen; the agent operates in the background.

## Layout

The Agent builder has **five sticky tabs** always visible at the top, plus additional tabs available via the **+** button. There is no Preview iframe — the chat interface is the primary way you interact with the agent during development.

## The five sticky tabs

| Tab                                           | What it is                                                                                 |
| --------------------------------------------- | ------------------------------------------------------------------------------------------ |
| [Chat](/reference/agent-builder/chat)         | Talk to the Riff agent to configure your agent; switch between Build and Live mode         |
| [Pipeline](/reference/agent-builder/pipeline) | Visual board showing your agent's tasks and their current states                           |
| [Profile](/reference/agent-builder/profile)   | Read-only view of your agent's full configuration — instructions, knowledge, skills, tools |
| [Triggers](/reference/agent-builder/triggers) | The email addresses and scheduled runs that activate your agent                            |
| [Activity](/reference/agent-builder/activity) | A log of every agent run — tools called, duration, success or error                        |

## Additional tabs (via the + button)

The same features available in the App builder are also accessible here:

| Tab                                                  | What it is                   |
| ---------------------------------------------------- | ---------------------------- |
| [Integrations](/reference/shared/integrations)       | Connect to external services |
| [Storage](/reference/shared/storage)                 | Upload and manage files      |
| [Secrets](/reference/shared/secrets)                 | Store credentials            |
| [Access](/reference/shared/access)                   | Workspace access controls    |
| [Version History](/reference/shared/version-history) | Restore past states          |

## The Riff agent in the Agent builder

The Chat tab is the primary building surface. The Riff agent configures your agent in response to your messages — updating its instructions, adding skills and knowledge, connecting tools. See [Chat](/reference/agent-builder/chat) and [the Riff agent](/reference/riff-agent).


# Chat

The Chat tab is the primary building surface in the Agent builder. Configure your agent by talking to the Riff agent here.

The Chat tab is where you build your agent. You describe what the agent should do, what it should know, and how it should behave — and the Riff agent writes the instructions, adds skills, connects tools, and configures everything in response.

## Layout

Two columns:

**Left sidebar** (collapsible on mobile):

* **Build / Live toggle** — switches which version of your agent you are talking to (see below)
* **Email button** — shows your agent's email addresses in a popover
* **Chats** header with a **+** button — starts a new chat session
* **Show task sessions** checkbox — when on, includes automated schedule runs in the session list alongside your manual chats (off by default)
* **Sessions list** — each entry shows a timestamp, an optional **Task** badge (for scheduled runs), and a delete button on hover

**Right area** — the active chat with the Riff agent. Message history scrolls up; text input is at the bottom. Same controls as the App builder chat panel: Agent dropdown, Build / Plan toggle, skill mentions via `/`, file and image attachments.

See [Riff agent chat panel](/reference/riff-agent/chat-panel) for the full control reference.

## Build / Live toggle

| Mode      | What it does                                                                                           |
| --------- | ------------------------------------------------------------------------------------------------------ |
| **Build** | Sends your messages to the development version of your agent — use this while configuring and testing  |
| **Live**  | Sends your messages to the deployed production version — use this to verify how the live agent behaves |

Start in Build. Switch to Live only when you want to check that a deployed agent is behaving as expected.

## Sessions

Each session is an independent conversation. Sessions are preserved — you can return to an earlier one or keep different topics in separate sessions.

Toggle **Show task sessions** on to see automated runs (triggered by schedules) alongside your manual sessions. Toggle it off to see only your own conversations.

{% hint style="info" %}
The Chat tab stays mounted even when you navigate to Pipeline, Profile, Triggers, or Activity. If the Riff agent is mid-response when you click away, it keeps running — you will not lose it.
{% endhint %}


# Pipeline

The Pipeline tab shows your agent's tasks as a visual board — what the agent is working on, what's waiting, and what's done.

The Pipeline tab shows your agent's work as a horizontal Kanban board. Each column represents a state in your agent's workflow. Each card is a task the agent is managing.

## Layout

**Top bar:** title "Pipeline" · subtitle "The agent's working board." · **Dev / Prod toggle** (right side)

**Columns:** one per workflow state, scrollable horizontally. Each column shows a header with the state label and task count, and a scrollable list of task cards below.

## Dev / Prod toggle

Switches the board between your development environment and production environment. Use Dev while testing; use Prod to see what real users and real triggers are producing.

## Task cards

Each card shows:

* **Agent type badge** — small uppercase label (e.g. "ANALYST")
* **Live indicator** — a pulsing blue dot appears when the agent is actively working on this task right now
* **Task title**
* **Metadata** — Priority · Assignee · Due Date (when set)
* **Description preview** — first two lines
* **Status dropdown** — at the bottom of the card; click to move the task to a different state

Click anywhere on a card (except the status dropdown) to open the task detail page.

## When to use Pipeline

Pipeline is most useful when your agent manages multi-step processes or case-style workflows — where tasks move through defined stages (e.g. Received → In Review → Resolved). The live indicator shows you exactly which task the agent is working on at any given moment.

If your agent runs simple one-shot jobs (triggered, runs, done), you may find the [Activity](/reference/agent-builder/activity) tab more useful for observability.


# Profile

The Profile tab shows your agent's full configuration — instructions, knowledge, skills, and tools — in one read-only view.

The Profile tab is a read-only reference card for your agent's full configuration. It shows exactly what your agent knows, what it can do, and how each capability is defined.

{% hint style="info" %}
**Everything on this tab is read-only.** To change anything — update instructions, add a skill, connect a new tool — open the Chat tab and tell the Riff agent what to update.
{% endhint %}

## What you'll see

**Quick links grid** — compact rows of chips for the first 8 items across:

* **Tools** (wrench icon) — the actions your agent can take
* **Skills** (sparkles icon) — reusable capability definitions loaded into the agent
* **Knowledge** (book icon) — background context the agent draws on Each row shows "+ more" if there are additional items beyond 8.

**Instructions** — your agent's full system instructions in markdown. This is the core definition of what your agent does and how it behaves. "No instructions yet" if empty.

**Knowledge** — expandable list of knowledge entries. Each item shows the entry name and a first-line preview. Click to expand the full content.

**Skills** — expandable list of skill definitions. Each item shows the skill name and a preview. Click to expand the full skill.

**Tools** — expandable list with a filter selector (All / Custom / Riff managed). Each item shows the tool name, description, and a "Riff managed" badge where applicable. Click to expand the full tool schema.

## Using Profile effectively

Profile is the fastest way to audit your agent's current state without asking it questions. Before a production deployment, check that:

* Instructions clearly describe the job and the constraints
* All expected tools are listed and correctly scoped
* Knowledge entries are current
* Skills match what the agent needs to do its work


# Triggers

The Triggers tab shows every way your agent can be activated — its email addresses and any scheduled runs you have set up.

The Triggers tab shows how your agent is reached and when it runs automatically. It is the place to verify your agent's contact addresses and check that scheduled runs are configured correctly.

## Three sections

### Email

Your agent has two email addresses:

| Address                                               | When to use it                                                                              |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| **Workspace** address (`projectid-dev@agent.riff.ai`) | For testing — send here during development to trigger the development version of your agent |
| **Deployed** address (`projectid@agent.riff.ai`)      | For production — the address external systems and real users send to                        |

Click the copy button next to either address to copy it to your clipboard.

When an email arrives, your agent receives it as a message and responds just as it would to a chat message. You can forward real emails here, connect your inbox via a rule, or give the address to a supplier or system directly.

### Scheduled runs

Lists every scheduled trigger configured for this agent. Each entry shows:

* **Schedule name** and **status** (enabled or paused)
* **When it runs** — a plain-language description (e.g. "Every day at 9:00 AM")
* **Last run** timestamp (when available)

To create a schedule, tell the Riff agent in the Chat tab what you want — for example: "Run every morning at 7am and check for any open POs that haven't had a supplier confirmation in 48 hours."

### Webhooks

Coming soon.

## What Triggers does not do

You cannot edit or delete schedules from this tab — use the Chat tab to ask the Riff agent to make changes. Triggers is a read-only view of what is configured.


# Activity

The Activity tab shows a log of every agent run — which tools were called, how long each step took, and whether it succeeded or failed.

The Activity tab is the observability surface for your agent. It shows a timeline of every execution — when the agent ran, what triggered it, which tools it called, how long each step took, and whether it succeeded or failed.

## Two views

Toggle between **Activity** (default) and **Logs** using the control at the top of the tab.

## Activity view

Scrollable list of agent runs, newest first. Each entry (collapsed) shows:

* **Status dot** — green for success, red for error
* **"Agent run"** label
* **Tool count badge** — e.g. "3 tools"
* **Duration** — e.g. "234ms"
* **Relative timestamp** — e.g. "2 hours ago"

Click any entry to expand it and see:

* **Message excerpt** — the prompt or trigger that started this run (shown in quotes)
* **Turn count** — how many reasoning cycles the agent took
* **Tool calls list** — for each tool: status dot · tool name · duration · input parameters preview

Multiple sessions are separated by a horizontal rule showing the session ID.

## Logs view

Raw console output for deeper technical debugging. Switch back to Activity using the toggle.

## When to use Activity

* **Troubleshooting** — a run failed; expand it to see which tool call errored and what the inputs were
* **Performance** — check how long each step is taking and whether any tool is a bottleneck
* **Verification** — confirm that scheduled triggers are firing and completing successfully
* **Audit** — see the full history of what the agent did and when

## Empty and error states

* **No activity yet** — the agent has never run (check that triggers are configured in the [Triggers](/reference/agent-builder/triggers) tab)
* **Could not load activity log** — a loading error; refresh the tab


# The Riff agent

The Riff agent is the AI building assistant that works with you inside the App builder, the Agent builder, and Ask Riff. It is always the same agent — one consistent collaborator.

The Riff agent is the AI assistant that helps you build. It lives in the chat panel of the App builder, in the Chat tab of the Agent builder, and in Ask Riff in the Team Workspace.

{% hint style="info" %}
**The Riff agent is not the same as the agents you build.** The Riff agent is your building assistant — it is always there, helping you configure things. The agents you build in the Agent builder are autonomous workers that run your business processes on a trigger. The words look similar; the things are different.
{% endhint %}

## Where the Riff agent appears

| Surface                                   | What it does there                                                                                     |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| **App builder** — chat panel (right side) | Builds your app — writes code, installs packages, connects integrations — in response to your messages |
| **Agent builder** — Chat tab              | Configures your agent — writes instructions, adds skills and knowledge, connects tools                 |
| **Ask Riff** — Team Workspace             | Answers questions across your whole workspace using your team's integrations and Context library       |

The chat panel looks and behaves consistently across all three surfaces. The same controls are available everywhere.

## What the Riff agent can see

When you are working in the App builder or Agent builder, the Riff agent has access to:

* The current state of your project (code, instructions, skills, knowledge)
* Your connected integrations
* Your Context library
* The task board
* Skills you have loaded via `/` in the chat input

## Reference

* [Chat panel](/reference/riff-agent/chat-panel) — the controls, toggles, and input options in the chat interface
* [Build / Plan toggle](/reference/riff-agent/build-plan-toggle) — switch between executing changes and planning them first
* [Skills](/reference/riff-agent/skills) — reusable prompts you load into the Riff agent via `/`
* [Tools](/reference/riff-agent/tools) — the actions the Riff agent can take on your behalf


# Chat panel

The controls, toggles, and input options in the Riff agent chat panel — the same in the App builder, Agent builder, and Ask Riff.

The Riff agent chat panel is the interface you use to communicate with the Riff agent while building. It appears on the right side of the App builder, in the Chat tab of the Agent builder, and in Ask Riff. The controls are the same in all three places.

## Thread navigation (top)

* **New Chat** (`+` icon) — starts a fresh conversation thread
* **Thread Selector** — a dropdown listing all threads for this project. Each entry shows a description and a timestamp (e.g. "Mon 12/05/2025 · 3 hours ago"). Click to switch threads.

## Chat input (bottom)

**Attachments** Click the attachment icon or drag a file into the chat. Supported formats: images (PNG, JPG, etc.) and documents (PDF, Word, Excel, CSV, plain text).

**Agent dropdown** Adjust how the Riff agent behaves for this conversation:

| Setting             | Options                              |
| ------------------- | ------------------------------------ |
| **Model**           | Best · Standard · Fast               |
| **Context Window**  | Small · Medium · Large · Extra Large |
| **Tone of Voice**   | Neutral · Friendly · Professional    |
| **Response Style**  | Concise · Normal · Explanatory       |
| **Technical Level** | Beginner · Intermediate · Advanced   |

Tone, Response Style, and Technical Level are saved to your profile and carry across sessions.

**Build / Plan toggle** Controls whether the Riff agent acts or describes. See [Build / Plan toggle](/reference/riff-agent/build-plan-toggle).

**Text input** Grows as you type. Press Shift+Enter for a new line without sending.

Type `/` to open the skill picker — a searchable list of available skills, each showing its name and description. Select one to load its content into your message.

**Send / Stop**

* Arrow up (↑) — sends your message (or press Enter)
* Square — stops the Riff agent's current response mid-stream

## Chat history (middle)

* Messages from you and the Riff agent, with markdown and code syntax highlighting
* Tool use shown inline: tool name · progress indicator · elapsed time
* HTML visualisations rendered live in the panel
* Older messages load as you scroll up (200 messages per batch)
* A completion chime plays when the Riff agent finishes responding — turn this off in your profile settings


# Build / Plan toggle

The Build / Plan toggle switches the Riff agent between executing changes and planning them first without making any edits.

The Build / Plan toggle is in the Riff agent chat input. It controls whether the Riff agent executes changes or plans them first.

## The two modes

| Mode                | What the Riff agent does                                                       |
| ------------------- | ------------------------------------------------------------------------------ |
| **Build** (default) | Writes code, makes changes, installs packages, updates configuration — it acts |
| **Plan**            | Describes exactly what it would do and why, without making any changes         |

Plan mode is shown in orange in the chat input.

## When to use Plan

* **Before a significant change** — ask the Riff agent to plan a new feature before it builds it. Review the plan, refine it in conversation, then switch to Build.
* **When something is going wrong** — switch to Plan to understand what the agent intends to do next before it does it.
* **When you want to learn** — Plan mode explains the Riff agent's reasoning, which helps you understand what is being built and why.

## When to use Build

Build is the default for a reason — most of the time you want the Riff agent to act, not just describe. Use Build whenever you are ready for changes to happen.

## Important

The Build / Plan toggle only affects what the Riff agent does in response to your message. It does not affect your agent's live behaviour or any deployed version. It is a building tool, not a runtime control.


# Skills

Skills are reusable capability definitions you can load into the Riff agent during a conversation by typing / in the chat input.

Skills are reusable instructions or workflows you can load into the Riff agent at any point in a conversation. They let you give the Riff agent a detailed, consistent brief for a specific type of task without retyping it each time.

## How to use a skill

Type `/` in the chat input. A fuzzy-searchable list of available skills appears, each showing its name and a short description. Select the skill you want — its content is loaded into your message prompt.

You can add your own message after the skill content before sending.

## What skills are for

Skills are most useful for tasks you repeat across multiple sessions or projects — for example:

* A brief for how the Riff agent should approach a particular type of feature
* A checklist the agent should follow when reviewing something
* A prompt template for a common workflow

## Managing skills

Skills are configured in the agent's settings. Reach out to the Riff team if you would like to add a new skill.


# Tools

Tools are the actions the Riff agent can take on your behalf while helping you build — reading files, writing code, querying your database, and more.

Tools are the actions the Riff agent uses to get things done. When you ask the Riff agent to build a feature, fix a bug, or connect an integration, it uses tools behind the scenes to carry out each step.

## How tools work

You do not call tools directly. The Riff agent decides which tools to use and in what order, based on your message. While it works, the chat panel shows each tool call inline — the tool name, what it is doing, and how long it takes.

## What the Riff agent can do

The Riff agent has tools to:

* **Read and write code** — create, edit, and delete files in your project
* **Install packages** — add frontend (NPM) and backend (Python) libraries
* **Query and write to the database** — read table data, create records, run migrations
* **Search your knowledge** — look up information in your Context library
* **Call your integrations** — interact with connected services (ERPs, Slack, email, etc.)
* **Create and update tasks** — manage the task board as it works
* **Suggest knowledge** — propose new entries for your Context library based on what it learns

## Riff-managed vs. custom tools

In the Agent builder, your agent's Profile tab shows the tools available to the agent you are building. These may include:

* **Riff-managed tools** — built-in tools the platform provides (shown with a "Riff managed" badge)
* **Custom tools** — tools you have added specifically for this agent

These are tools for your built agent — not the same as the tools the Riff agent uses while helping you build. The [Profile](/reference/agent-builder/profile) tab is where you review and manage your agent's tool set.


# Shared features

Features available in both the App builder and Agent builder via the + tab picker.

These features are available in both the App builder and the Agent builder. Open them via the **+** button in the tab row of either builder.

| Feature                                              | What it is                                           |
| ---------------------------------------------------- | ---------------------------------------------------- |
| [Integrations](/reference/shared/integrations)       | Connect to external services — ERPs, APIs, databases |
| [Storage](/reference/shared/storage)                 | Upload and manage files your app or agent uses       |
| [Secrets](/reference/shared/secrets)                 | Store API keys and credentials securely              |
| [Access](/reference/shared/access)                   | Control who can reach your workspace                 |
| [Version History](/reference/shared/version-history) | Compare and restore past code states                 |


# Integrations

Connect your app or agent to external services — ERPs, APIs, communication tools, and databases.

The Integrations tab connects your app or agent to external services. Every connection you set up here is available to the Riff agent and to your built agent as a credentialed data source or action target — no manual token handling required.

Available in both the App builder and Agent builder via the **+** button.

## What you see

A searchable grid of integration cards. Each card shows the service name, its logo, and its current connection status. A refresh icon sits at the top right.

## Connecting a service

Click any integration card to open a detail panel. From there you can:

* **Connect** — for OAuth services, this takes you through the authorisation flow in your browser
* **Disconnect** — remove the connection
* **Reconfigure** — update connection settings

Once connected, the integration is immediately available for the Riff agent to use.

## Account-level integrations (enterprise)

Enterprise teams configure shared integrations at account level — for example, a single SAP connection that all apps and agents can use without each team member managing credentials.

Click **Link Account Integration** to attach an account-level integration to your project. Once attached, it appears as environment variables in your backend. Team members can use it without seeing the underlying credentials.

## Asking the Riff agent to connect

You can also describe what you need in chat: *"Connect this agent to Slack so it can post exception alerts to #procurement."* The Riff agent will guide you through authorising the connection.

For ERP connectivity (Infor LN/M3, SAP, Oracle ERP Cloud, Microsoft Dynamics 365), see the [Integrations section](/integrations/about-integrations-v2) for per-system setup guides.


# Storage

Upload and manage files your app or agent uses — internal files for backend processing and public assets served to users.

The Storage tab is your app or agent's file system. It holds files the backend reads and writes (processed data, generated reports, uploaded documents) and assets served to users (images, downloadable files).

Available in both the App builder and Agent builder via the **+** button.

## What you see

Two upload buttons near the top:

* **Upload to internal storage** — files accessible to your backend code only, not publicly reachable
* **Upload to public storage** — files served publicly (e.g. images, downloadable PDFs)

Below the buttons: a table of all stored files, organised into categories — internal files, data objects, and public assets — with file sizes and last-modified dates.

## How to use it

**Upload manually** — click either button to open a file picker. The file is stored immediately.

**Ask the Riff agent** — *"Save this generated report to internal storage"* or *"Set up the agent to store invoice PDFs as they arrive."*

## Internal vs. public

<table><thead><tr><th width="173.77520751953125">Type</th><th>Who can access it</th></tr></thead><tbody><tr><td><strong>Internal</strong></td><td>Your backend code only — never exposed to the browser or public URLs</td></tr><tr><td><strong>Public</strong></td><td>Anyone with the URL — use for assets your app serves to users</td></tr></tbody></table>

Use Storage for files (PDFs, CSVs, images, documents). Use the [Database](/reference/app-builder/database) for structured data (tables, records, relationships).


# Secrets

Secrets stores sensitive credentials — API keys, connection strings, tokens — in an encrypted vault your app or agent reads at runtime.

Secrets is an encrypted vault for sensitive credentials. Your app or agent reads secrets at runtime as environment variables — they are never written into source code or exposed to the frontend.

Available in both the App builder and Agent builder via the **+** button.

## What you see

Three collapsible sections:

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2FlrjWlMxh3OBgw0LXoBsY%2Fimage.png?alt=media&amp;token=e0a40332-2a0a-4a9d-b492-123e96cc5340" alt="" width="563"><figcaption></figcaption></figure></div>

<table><thead><tr><th width="416.41082763671875">Section</th><th>When it applies</th></tr></thead><tbody><tr><td><strong>Variables for Backend</strong></td><td>Available in all environments (development and production)</td></tr><tr><td><strong>Variables for Backend, only in app workspace</strong></td><td>Development only</td></tr><tr><td><strong>Variables for Backend, only in deployed app</strong></td><td>Production only</td></tr></tbody></table>

Each variable row shows its name, a hidden value (click **Reveal & Edit** to view or change it), and a delete button. Variables from team-level integrations appear as read-only with a lock icon.

## Adding a secret

1. Expand the appropriate section
2. Click **Add secret**
3. Enter the key name (e.g. `ERP_API_KEY`) and value
4. Save — the Riff agent can use it immediately by referencing the key name

On enterprise accounts, click **Add from Team** to attach a shared account-level secret. It appears as a read-only variable once added — your project can use it without seeing the raw value.


# Access

Control who can collaborate on your project, whether Riff support can view your workspace, and whether external systems can reach your development API.

The Access tab controls three types of access to your project workspace. Available in both the App builder and Agent builder via the **+** button.

## Collaborators

Shows who can open and edit this project. On enterprise accounts, team membership is managed at account level.

## Support Access

Controls whether the Riff support team can view your workspace.

**Default: disabled.** Your workspace is private to your team.

To get help from Riff support:

1. Click **Enable support access**
2. A shareable workspace link appears — send this to the support team
3. Click **Revoke support access** when the session is resolved

## Workspace API

Controls whether external systems can call your development API endpoints.

**Default: private.** Your development API is not reachable from outside the workspace.

To allow an external service (a webhook, an automation tool) to call your development endpoints:

1. Click **Enable public access**
2. The API base URL appears: `https://api.riff.new/_projects/{id}/dbtn/devx/app/routes`
3. Access expires automatically after **12 hours**
4. Click **Disable public access** to remove it earlier if needed

{% hint style="info" %}
Native user authentication for deployed apps (email/password login, session management) is configured separately. See [Native Authentication](https://github.com/ElleNealAI/riff-docs/blob/main/reference/app-builder/native-authentication.md).
{% endhint %}


# Version History

Every time you make a meaningful change to an app or agent in Riff, the platform saves a checkpoint. Version History lets you look back at any checkpoint and restore it — so you can try things, change your mind, and recover if something goes wrong.

## Why this matters

When you're building or adjusting a procurement agent, you might make a change that has unintended effects — a new instruction that changes how the agent handles delivery exceptions, or a UI update that breaks a form. Version History means you're never one bad edit away from losing your work.

Think of it like track changes in a Word document, or the undo history in a spreadsheet — but for your entire app or agent.

## Viewing version history

Open an app or agent, then go to **Settings → Version History** (or click the history icon in the top toolbar). You'll see a list of saved checkpoints, each showing:

* **When** it was saved
* **Who** made the change (you or a teammate)
* **What changed** — a short summary of what was different

<div data-with-frame="true"><figure><img src="https://4203676568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmj3x7kCuQ8vAs0u0uIPo%2Fuploads%2Fwaa2lStTgEXFcxLqJAx9%2Fimage.png?alt=media&amp;token=ad55817c-0ecf-4c04-8d53-7d7fdf1b45a2" alt="" width="563"><figcaption></figcaption></figure></div>

## Restoring a previous version

Click any checkpoint to preview what it looked like. If it's what you want, click **Restore this version**. The app or agent returns to exactly that state.

Restoring doesn't delete your more recent work — it's saved as a new checkpoint, so you can always come back to where you were.

## Automatic vs. named checkpoints

Riff saves checkpoints automatically as you work. You can also save a named checkpoint manually — useful before making a significant change you might want to roll back from.

To save a named checkpoint: go to **Settings → Version History → Save checkpoint now**, give it a name (e.g. "Before supplier portal redesign"), and click **Save**.


# Concepts

Understand how Riff works — so you can deploy with confidence.

Before you deploy a Riff agent against a live ERP, the people who matter most — your Head of IT, CFO, or compliance team — will ask hard questions. What exactly does this thing do? Can it make mistakes? Who's watching it?

This section answers those questions honestly, with clear explanations of how Riff works under the hood.

| Page                                                                     | What you'll understand                                                                          |
| ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- |
| [Apps and Agents](/concepts/apps-and-agents)                             | When to build a screen vs. a worker — and how the two work together                             |
| [What is a Riff agent?](/concepts/what-is-a-riff-agent)                  | The mental model — what an agent is, what it isn't, and how to think about deploying one        |
| [How agents act on ERPs](/concepts/how-agents-act-on-erps)               | How Riff connects to Infor, SAP, Oracle, and Dynamics — and what "taking action" actually means |
| [Reversibility and audit trail](/concepts/reversibility-and-audit-trail) | Every action can be undone. Every edge case escalates to a human. Here's how.                   |
| [Security](broken://pages/wLC1EG1OmKIPJXajOASa)                          | SOC 2, SSO, GDPR, data residency, and access control                                            |


# Apps and Agents

When to build a screen, when to build a worker — and how Apps and Agents work together in Riff.

Every project you build in Riff starts with one question: **does this need a screen, or a worker?**

The answer shapes everything — what you configure, how your users interact with it, and how Riff runs it. Getting this decision right early saves time and produces a better outcome.

## Two equally first-class build types

Riff gives every builder two things to build:

**Apps** — a workspace your users open. A surface to look at data, fill in forms, ask questions, and take action. You design the interface; AI can live inside it as a feature. Humans drive the flow.

> *"Build something people open and use."*

**Agents** — a configured worker that runs a job. A clear trigger (schedule, email, webhook), a defined task, a clear "done" state. The agent runs on its own, reports back, and escalates only what it can't decide.

> *"Configure something that runs and reports back."*

Apps and Agents are not competing choices — many Riff projects combine both. An agent chases supplier confirmations and surfaces exceptions in an App that your procurement team reviews each morning.

## When to build an App

Choose an App when:

* **Humans drive the flow.** Your users need to look at something, enter data, or make a decision — and the interface matters.
* **The output is a screen.** A dashboard, a portal, a form — something people come back to regularly.
* **AI is a feature, not the worker.** You want an AI-powered search, a recommendation panel, or a summarisation tool embedded in a larger workflow.
* **The task can't be fully defined upfront.** Users explore, filter, and decide based on what they see.

**Procurement examples:**

* A supplier portal where buyers review PO confirmations before approving
* An exception dashboard showing invoices the agent flagged for human review
* A spend analytics app where the team queries ERP data in plain language

## When to build an Agent

Choose an Agent when:

* **The job repeats on a schedule or trigger.** Every morning, every time an email arrives, every time a new PO is raised.
* **The outcome is an action, not a report.** Create a record, send an email, update a field, approve a line.
* **You can define "done" clearly.** The agent has a checklist — supplier confirmed, invoice matched, exception escalated — and stops when it's done.
* **Human input should be the exception, not the rule.** The agent escalates edge cases; routine work runs without interruption.

**Procurement examples:**

* Chase supplier order confirmations on a schedule and update Infor LN when confirmed
* Match incoming invoices against POs in SAP and flag discrepancies above a tolerance threshold
* Run an RFQ, collect responses, and surface the shortlist for a buyer to approve

## How Apps and Agents work together

The most effective Riff deployments combine both. A common pattern:

1. **An Agent does the routine work** — chasing, matching, updating — and writes results and exceptions to Riff's native database.
2. **An App surfaces the output** — your team opens it each morning to see what the agent handled and what needs their attention.
3. **The App feeds decisions back** — when a buyer approves an exception in the App, that triggers the Agent to act.

You build and manage both from the same workspace. They share integrations, storage, and authentication.

## Not sure which to build?

A quick check: if your project has a clear trigger and a clear done state — build an Agent. If your users need a screen — build an App. If both — build both.

If you're still unsure, start with an App to explore the data and the workflow. Once the pattern is clear, extract the repeating parts into an Agent.


# What is a Riff agent?

What a Riff agent is, how to think about it, and what makes it different from automation or a chatbot.

The simplest mental model: **a Riff agent is like a new hire.**

You define the job. You give the agent a name, tell it what triggers it to start, what it's supposed to do, and what "done" looks like. Then it runs — handling the routine, escalating the exceptions, and reporting back. You don't babysit it. You review its work.

This is the frame that consistently lands with procurement and operations teams. If you can write a job description for the role, you can build the agent.

## What an agent looks like in practice

A Riff agent has:

* **A trigger** — a schedule (every morning at 7am), an email arriving in its inbox, a webhook from your ERP, or a manual kick-off.
* **A task** — the job it's been configured to do. "Check all open POs in Infor LN. For any line due for delivery in the next 5 days with no supplier confirmation, send a chase email."
* **A done state** — when the agent considers the job complete. "All lines either confirmed by the supplier or escalated to the buyer."
* **An escalation path** — what happens when it encounters something it can't decide. It routes to a human — via email, Slack, or the task board — rather than guessing.
* **An audit trail** — every action logged, with what it did, when, and why.

Agents in Riff have their own email address and Slack handle. Suppliers and colleagues can reply to them directly. Replies feed back into the agent's context for its next action.

## What a Riff agent is not

**Not a chatbot.** A chatbot answers questions. A Riff agent takes action. It creates records, sends emails, updates ERP fields, matches invoices. You don't have a conversation with it — you define its job once and it runs.

**Not a rigid automation.** A traditional automation follows a fixed sequence of steps — if A then B, always. A Riff agent reasons about its task. It reads what's in front of it, decides what to do, and adapts if the situation is different from usual. It can handle variation in supplier email formats, partial confirmations, and edge cases that would break a hard-coded workflow.

**Not a black box.** Every step the agent takes is logged. You can see what it did, what it read, what it decided, and why. If it escalated something to you, you can see exactly what triggered that decision.

## The escalation-first design principle

Riff agents are built to escalate before they act in uncertain situations — not after they've already made a mistake.

You configure the thresholds. For a confirmation-chasing agent, you might tell it: "If the supplier's reply is ambiguous or the confirmed quantity differs from the PO by more than 5%, don't update the ERP — escalate to the buyer." For an invoice-matching agent: "If the invoice total is within £50 of the PO, auto-match. Otherwise, flag for review."

The agent follows those rules consistently. Routine cases run without human input. Edge cases land in the right person's queue with the context they need to decide.

## What agents run on

Agents connect to your ERP and the systems around it — Infor LN/M3, SAP S/4HANA, Oracle ERP Cloud, Microsoft Dynamics 365 — through Riff's native integrations. They read data from those systems and, where you've authorised it, write back. Every write action is pre-declared and permissioned before the agent ever runs.

See [How agents act on ERPs](/concepts/how-agents-act-on-erps) for the detail on how that works.


# How agents act on ERPs

How Riff connects to your ERP and what "taking action" actually means at a technical level.

The most common question from IT and procurement leadership before a Riff pilot: *"What exactly does the agent do in our ERP?"*

This page answers that directly.

## How Riff connects

Riff connects to your ERP through native integrations. Supported out of the box:

* **Infor LN / M3** — procurement, inventory, financials
* **SAP S/4HANA** — procurement, AP, supplier management
* **Oracle ERP Cloud** — procurement, financials, supply chain
* **Microsoft Dynamics 365** — procurement, finance, operations

Each integration is configured once in your Riff workspace — credentials stored in Riff's encrypted secrets manager, never in code. Once connected, agents in your workspace can use that integration as a tool.

Custom ERP connections and middleware (REST APIs, message queues, SFTP) are configured the same way — builders define the connection, agents use it.

## Two kinds of operations: read and write

Agents can do two things with your ERP:

**Read** — query data to inform a decision. Check open POs, read invoice status, look up supplier records, pull delivery schedules. Read operations carry no risk of changing data.

**Write** — take action: create a record, update a field, approve a line, send a communication. Write operations change your ERP.

Write access is the part that matters most from a governance perspective. Riff's approach to this is the typed actions model.

## Typed actions: pre-declared, permissioned, logged

Every action an agent can take against your ERP is **typed** — pre-declared at build time, before the agent ever runs.

What this means in practice:

1. **The builder defines the action.** When building the agent, you specify exactly what write operations it's allowed to perform: "create a PO confirmation record in Infor LN", "update invoice status to 'matched' in SAP", "send a chase email from the agent's inbox." These are explicit, named operations — not open-ended instructions for the AI to figure out.
2. **Each action is reviewed before deployment.** You can inspect every action the agent is configured to take before it goes live. There are no hidden capabilities.
3. **Every execution is logged.** Each time the agent takes an action, it writes to the audit trail: what it did, what data it read, what it changed, when, and which agent ran it. The log is immutable.
4. **The agent only does what it's typed to do.** If a situation arises that doesn't match one of the agent's pre-declared actions, it doesn't improvise — it escalates to a human.

## What this is not

Riff agents are not "AI generating API calls on the fly." They don't write SQL or construct ERP requests dynamically at runtime based on a prompt.

The operations are defined, reviewed, and approved by the builder before deployment. The AI reasoning happens around *when* to trigger those operations and *what data to pass to them* — not *what operations to perform*.

This distinction is what makes Riff auditable and appropriate for ERP write access. The set of things an agent can do is bounded and knowable before it runs.

## Escalation when the agent can't decide

If the agent encounters a situation that doesn't fit its configured decision logic — an ambiguous supplier reply, a quantity discrepancy outside tolerance, a missing PO reference — it escalates rather than guessing.

Escalations appear in:

* The agent's **Task Board** in your Riff workspace
* The **buyer's email or Slack** (configurable)
* Any downstream system you've wired an escalation action to

The escalation includes the full context: what the agent was doing, what it read, and why it stopped. The human picks up from there.

See [Reversibility and audit trail](/concepts/reversibility-and-audit-trail) for how the audit log and undo paths work.


# Reversibility and audit trail

How Riff ensures every agent action can be undone, every edge case reaches a human, and every step is logged.

The question IT and compliance teams ask most often about AI in the ERP: *"What happens when it makes a mistake?"*

The honest answer is: agents will encounter situations they're not sure about. Riff is built so that when that happens, a human is always in the loop before anything irreversible occurs — and so that anything that did happen can be traced and undone.

## Every action has an undo path

Before an agent action can be deployed, it must have a defined reversal. If the agent creates a PO confirmation record, there must be a corresponding delete or update operation. If it updates an invoice status, there must be a way to revert it.

This isn't just a safety feature — it's an architectural requirement. The builder defines both the action and its reversal at build time. Riff stores both in the agent's configuration.

If you need to undo something the agent did — a mis-matched invoice, an incorrect confirmation — you can trigger the reversal from the audit log. No support ticket, no manual ERP edit. The reversal is part of the same audit trail.

## Escalation before action

Riff agents are designed to escalate *before* acting in uncertain situations — not after they've already made a mistake.

Every agent is configured with decision thresholds:

* **Auto-act:** the agent takes the action without asking. Used for cases where the outcome is unambiguous — a supplier reply that exactly matches the expected format, an invoice that matches the PO within tolerance.
* **Escalate:** the agent routes to a human before acting. Used for anything outside the defined range — ambiguous replies, amounts over a threshold, missing reference numbers.

You set these thresholds when you build the agent. They're explicit and reviewable before deployment.

Escalations are delivered where your team already works — email, Slack, or the Task Board in your Riff workspace. Each escalation includes the full context: what the agent was processing, what it read, and exactly why it stopped. The human picks up from there with everything they need.

## Plan Mode: review before running

For agents where you want extra oversight — new agents, high-value transactions, first-run validation — Riff's Plan Mode shows you what the agent *intends to do* before it does it.

In Plan Mode, the agent builds an execution plan and presents it for approval. You review the proposed actions, approve or adjust, and only then does the agent execute. Once you're confident the agent behaves correctly, you switch it to direct execution and it runs autonomously.

## The audit trail

Every action an agent takes is written to an immutable audit log:

| Field     | What it records                                  |
| --------- | ------------------------------------------------ |
| Timestamp | When the action ran                              |
| Agent     | Which agent, which version                       |
| Action    | What was done (typed action name)                |
| Input     | What data the agent read to make the decision    |
| Output    | What the agent changed — before and after values |
| Outcome   | Completed, escalated, or reversed                |
| User      | If a human approved or reversed, who and when    |

The audit log is accessible from the workspace and exportable. For compliance purposes — SOX controls, GDPR audit requirements, internal procurement governance — the log provides a complete chain of custody for every agent-driven transaction.

## How this maps to governance requirements

For procurement and finance teams running agents against live ERPs, the audit trail and reversibility model is designed to satisfy:

* **Separation of duties:** the builder who configures an agent can be different from the user who approves its deployment and the buyer who reviews its escalations. Roles and permissions are set at the workspace level.
* **Four-eyes for high-value actions:** use escalation thresholds to require human approval above a defined transaction value.
* **Audit trail for external audit:** the log provides timestamped, immutable evidence of every agent action for internal audit, external audit, or regulatory review.
* **Right to explanation:** every agent decision is traceable to the data it read and the rule it applied. There are no opaque AI decisions in the transaction record.


# Playbooks

Step-by-step task guides for procurement, finance, and operations teams building on Riff.

Playbooks are task-oriented guides for the jobs your team runs every day. Each playbook walks you through one specific workflow — from connecting your ERP to a finished App or Agent doing the job.

Pick the domain that matches your team's work:

| Domain                                | What it covers                                                   |
| ------------------------------------- | ---------------------------------------------------------------- |
| [Procurement](/playbooks/procurement) | Supplier confirmations, RFQs, PO matching, delivery exceptions   |
| [Finance](/playbooks/finance)         | Invoice reconciliation, payment exceptions, approval escalation  |
| [Operations](/playbooks/operations)   | Open order monitoring, stock threshold alerts, inbound logistics |

## How playbooks work

Each playbook covers one task. It tells you:

1. **What you're building** — the job to be done, and whether an App or Agent is the better fit
2. **What you need** — ERP system, permissions, data connections
3. **Step by step** — exactly how to build it in Riff
4. **What good looks like** — how to verify it's working

Most playbooks show both an **Agent path** (automated, unattended work) and an **App path** (tasks where a human should stay in control). Use whichever fits your team's workflow.

## Before you start

* Not connected to your ERP yet? Start with [Integrations](https://github.com/ElleNealAI/riff-docs/blob/main/integrations/README.md)
* New to Riff? The [Getting Started](https://github.com/ElleNealAI/riff-docs/blob/main/getting-started/README.md) tutorials cover your first build end to end
* Not sure whether to build an App or Agent? Read [Apps and Agents](/concepts/apps-and-agents)


# Procurement

Riff playbooks for procurement teams — supplier confirmations, RFQs, PO matching, and delivery exceptions.

These playbooks cover the core procurement workflows that Riff teams automate or build into Apps. Written for buyers, procurement leads, and sourcing managers — not developers.

| Playbook                                                                            | What it does                                           | Best fit    |
| ----------------------------------------------------------------------------------- | ------------------------------------------------------ | ----------- |
| [Chase supplier confirmations](/playbooks/procurement/chase-supplier-confirmations) | Follow up on unconfirmed purchase orders automatically | Agent       |
| [Run an RFQ](/playbooks/procurement/run-an-rfq)                                     | Send and track requests for quotation across suppliers | Agent + App |
| [Match purchase orders to invoices](/playbooks/procurement/match-purchase-orders)   | Reconcile GR/IR and flag discrepancies before payment  | Agent       |
| [Handle delivery exceptions](/playbooks/procurement/handle-delivery-exceptions)     | Surface and action inbound delivery discrepancies      | Agent + App |

## ERP compatibility

These playbooks are written for teams running **Infor LN / M3**, **SAP S/4HANA**, **Oracle ERP Cloud**, or **Microsoft Dynamics 365**. Where steps differ between systems, the playbook calls it out.

## Agent or App?

* **Agent** — runs on a schedule, acts on your ERP directly, escalates only when it needs a human call. Best for routine, high-volume tasks (chasing confirmations, matching POs).
* **App** — a screen your team opens to see status, take action, and approve decisions. Best for exception handling and approval workflows where a human needs to be in the loop.

Many procurement workflows use both: an Agent flags exceptions, an App lets the team action them.


# Chase supplier confirmations

Build a Riff agent that automatically chases unconfirmed purchase orders — so your buyers spend time on decisions, not status emails.

**Best fit:** Agent **ERP systems:** Infor LN / M3, SAP S/4HANA, Oracle ERP Cloud, Microsoft Dynamics 365 **Time to build:** \~30 minutes

***

## What you're building

You're configuring a Riff agent that monitors your open purchase orders, identifies lines that haven't received a supplier confirmation by a defined deadline, and automatically sends a follow-up message to the supplier. When a confirmation arrives, the agent updates your ERP and closes the loop. When a supplier is unresponsive, the agent escalates to your buyer.

This replaces the daily task of manually pulling an open PO report, filtering for unconfirmed lines, and sending chase emails one by one.

***

## What you need

* A Riff workspace with your ERP connected (see [Integrations](https://github.com/ElleNealAI/riff-docs/blob/main/integrations/README.md))
* Read access to purchase orders in your ERP
* Write access to update order status or add notes (for the confirmation step)
* Supplier email addresses stored in your ERP or reachable through your ERP's vendor master
* The agent's inbox enabled (Settings → General → Agent inbox)

***

## Step 1: Define the job

Before you open Riff, write down:

* **Which PO lines to chase** — e.g. lines with status "Sent to supplier" and no confirmation after 48 hours
* **What a confirmation looks like** — an email reply, a portal acknowledgement, a status change in the ERP
* **What to do when confirmed** — update a status field, add a note, notify the buyer
* **What to do when unresponsive** — escalate after how many chase attempts?

This is the agent's brief. You'll enter it in plain language in the Agent Profile.

***

## Step 2: Create the agent

1. In your Riff workspace, click **+ New** → **Agent**
2. Name the agent — e.g. "PO Confirmation Chaser"
3. You're now in the agent workspace. Open the **Profile** tab

***

## Step 3: Write the agent's brief

In the **Profile** tab, describe the job in plain language. For example:

> You monitor open purchase orders in \[your ERP]. Every morning, you check for PO lines that have been sent to a supplier but haven't received a confirmation within 48 hours. For each unconfirmed line, you send a follow-up email to the supplier's contact. If a supplier hasn't responded after three chase attempts, you escalate to the buyer assigned to that PO.
>
> When a confirmation arrives, you update the PO status in \[your ERP] to "Confirmed" and add a note with the confirmation date and the supplier contact who replied.

Keep it specific. The agent uses this brief to decide what actions to take and when to escalate.

***

## Step 4: Connect your ERP

1. Open the **Integrations** tab in the agent workspace
2. Select your ERP system — Infor LN/M3, SAP, Oracle, or Dynamics
3. Authenticate with your ERP credentials (or use a service account — recommended for production agents)
4. Test the connection — Riff will confirm it can reach your ERP

For specific connection steps by ERP, see:

* [Infor LN / M3](/integrations/native-integrations-v2/infor-ln)
* [SAP S/4HANA](/integrations/native-integrations-v2/sap)
* [Oracle ERP Cloud](/integrations/native-integrations-v2/oracle-erp)
* [Microsoft Dynamics 365](/integrations/native-integrations-v2/dynamics-365)

***

## Step 5: Set the trigger

1. Open the **Triggers** tab
2. Click **+ Add trigger** → **Schedule**
3. Set the schedule — e.g. every day at 07:00 local time
4. Optionally add a second trigger: **Incoming email** — so the agent can process supplier replies as they arrive, not just on the morning run

***

## Step 6: Test the agent

1. Open the **Chat** tab
2. Type: `Show me the open PO lines that are overdue for confirmation`
3. The agent will query your ERP and return a list. Check it matches what you'd expect from your ERP's own open PO report.
4. If the list looks right, type: `Send a chase email to the supplier on PO [number]`
5. Review the draft email in the chat before the agent sends it

The first run should always be supervised. Watch the **Activity** tab to see every action the agent takes and confirm it matches your expectations.

***

## Step 7: Go live

Once you're happy with the agent's behaviour in test:

1. Open **Settings** → **Deployment**
2. Enable the agent
3. The trigger will fire on schedule

From this point, the agent runs unattended. It will send chase emails, update your ERP when confirmations arrive, and escalate to buyers when suppliers are unresponsive.

***

## What good looks like

* Your open PO report shows fewer unconfirmed lines over time
* Buyers are only contacted when a supplier is genuinely unresponsive (not as a first step)
* Your ERP reflects confirmation status without manual updates
* The agent's Activity log shows every action, so you have a full audit trail

***

## Variations

**If your suppliers confirm via a portal, not email:** Adjust the agent brief to check the portal's confirmation status rather than waiting for an email reply. You'll need to add the portal as a data source in the Integrations tab.

**If you want a human to approve each chase email before it sends:** Change the agent's escalation setting to "Draft and ask" rather than "Act directly." The agent will draft the email and put it in your review queue instead of sending automatically.

**If PO lines are spread across multiple ERP systems:** Connect both ERP systems in the Integrations tab. Brief the agent on which system to use for which supplier or entity.


# Run an RFQ

Build a Riff agent (or app) to send RFQs to suppliers, track responses, and surface the best quote — without the spreadsheet chase.

**Best fit:** Agent (sending and tracking) + App (comparison and decision) **ERP systems:** Infor LN / M3, SAP S/4HANA, Oracle ERP Cloud, Microsoft Dynamics 365 **Time to build:** \~45 minutes

***

## What you're building

A workflow that handles the request-for-quotation cycle end to end: the agent sends RFQ emails to your approved supplier list, tracks responses as they arrive, and surfaces the best quote against your criteria (price, lead time, quality rating). Your buyer reviews the shortlist in a simple App and makes the award decision — which the agent then writes back to your ERP.

***

## What you need

* Riff workspace with your ERP connected
* Your approved supplier list (from ERP vendor master or a spreadsheet — Riff can import either)
* Read access to open purchase requisitions in your ERP
* Write access to create purchase orders or RFQ records
* Supplier email addresses (from vendor master or Riff's address book)

***

## Option A: Agent-first (recommended for high volume)

Use this when your team runs frequent RFQs with a stable supplier list and clear award criteria.

### Step 1: Define the job

Before you start, write down:

* Which requisitions trigger an RFQ (e.g. all PRs above £5,000 or for a specific category)
* Which suppliers to contact (all approved, or a subset per category)
* What the RFQ email should say and what deadline you give suppliers
* How you score responses (lowest price wins, or price × lead time × quality rating)
* Who makes the final award decision

### Step 2: Create the agent

1. Click **+ New** → **Agent**
2. Name it — e.g. "RFQ Agent"
3. Open the **Profile** tab and describe the job:

> You monitor open purchase requisitions in \[ERP]. When a requisition meets the RFQ criteria (value above £5,000 and category = indirect materials), you send a request for quotation to the three approved suppliers in that category. You track responses over the deadline period. When all responses are received (or the deadline passes), you summarise the quotes and flag the best option to the buyer. You do not award the order — that decision stays with the buyer.

### Step 3: Connect and configure

1. **Integrations tab**: connect your ERP, authenticate, test connection
2. **Triggers tab**: add a schedule trigger (e.g. daily at 09:00 to check for new PRs) and an email trigger (to process incoming supplier responses)

### Step 4: Build the App (comparison view)

When the agent has collected quotes, buyers need a screen to review them:

1. Click **+ New** → **App** (or add to your existing procurement App)
2. Build a comparison table — supplier name, unit price, lead time, quality rating, total score
3. Add an "Award to supplier" button that confirms the selection and triggers the agent to write the PO to your ERP

See [Designing your first App](https://github.com/ElleNealAI/riff-docs/blob/main/getting-started/designing-your-first-app.md) for step-by-step guidance on the App build.

### Step 5: Test and go live

1. In the agent's **Chat** tab: `Show me the open requisitions that qualify for an RFQ`
2. Confirm the list is correct
3. `Draft the RFQ emails for PR-XXXXX` — review the drafts before the agent sends
4. Once happy, enable the trigger and go live

***

## Option B: App-first (recommended for complex RFQs)

Use this when each RFQ needs significant manual input — custom specs, negotiation, or multi-round bidding.

1. Build an App with an RFQ form (supplier selection, line items, deadline, evaluation criteria)
2. The App submits the RFQ via the agent's send capability
3. Responses come back into the App's inbox for review

***

## What good looks like

* Buyers spend their time on award decisions, not email management
* All RFQ activity is logged against the requisition in your ERP
* Response deadlines are tracked automatically — no chasing needed
* The agent escalates when a supplier goes dark before deadline

***

## Variations

**If your suppliers use a portal:** Adapt the agent to submit RFQs via the portal API and poll for responses.

**If you need multi-round bidding:** The agent can send a second round to shortlisted suppliers based on first-round results.

**If award criteria are non-standard:** Brief the agent with your scoring model. It can apply weighted criteria across supplier attributes stored in your ERP.


# Match purchase orders to invoices

Build a Riff agent that matches purchase orders to invoices, flags GR/IR discrepancies, and keeps your three-way match clean.

**Best fit:** Agent **ERP systems:** Infor LN / M3, SAP S/4HANA, Oracle ERP Cloud, Microsoft Dynamics 365 **Time to build:** \~30 minutes

***

## What you're building

A Riff agent that performs three-way matching — purchase order to goods receipt to supplier invoice — and flags discrepancies before they reach the payment run. Your accounts payable team stops reviewing every invoice manually; they review only the ones the agent can't resolve automatically.

***

## What you need

* Riff workspace with your ERP connected
* Read access to purchase orders, goods receipts, and incoming invoices
* Write access to add notes or hold invoices for review
* Defined tolerance thresholds (e.g. accept price variance up to 2%, quantity variance up to 5%)

***

## Step 1: Define the matching rules

Write down your matching logic before you brief the agent:

* **Matching criteria**: PO number on invoice + matching line items + quantity within tolerance
* **Price tolerance**: e.g. invoice price must be within 2% of PO price
* **Quantity tolerance**: e.g. invoice quantity must match GR quantity within 5%
* **What to do on match**: approve for payment (or flag for scheduled payment run)
* **What to do on mismatch**: hold invoice, add note with discrepancy detail, alert AP team

***

## Step 2: Create the agent

1. Click **+ New** → **Agent**
2. Name it — e.g. "PO Matching Agent"
3. In the **Profile** tab:

> You process incoming supplier invoices in \[ERP]. For each invoice, you check it against the corresponding purchase order and goods receipt (three-way match). If the invoice price is within 2% of the PO price and the quantity matches the GR within 5%, you approve the invoice for the next payment run. If the discrepancy is outside tolerance, you hold the invoice and add a note explaining the specific mismatch. You then alert the AP controller with a summary of held invoices.

***

## Step 3: Connect your ERP

Each ERP handles GR/IR differently:

* **SAP S/4HANA**: GR/IR clearing account (transaction MR11), Logistics Invoice Verification (MIRO)
* **Infor LN**: Purchase order receipts matched against purchase invoices in the PO module
* **Oracle ERP Cloud**: Receipt accounting and payables matching via the Financial Orchestrator
* **Dynamics 365**: Invoice matching in Accounts Payable → Vendor invoices

Connect your ERP in the **Integrations** tab and test that the agent can read invoices, POs, and GRs.

***

## Step 4: Set the trigger

* **Schedule**: run after your ERP's daily invoice processing batch (e.g. daily at 19:00)
* **Real-time**: add an integration event trigger if your ERP supports invoice-received webhooks

***

## Step 5: Test with a sample

1. In the **Chat** tab: `Show me the five most recent invoices and their matching status`
2. Pick one matched and one unmatched invoice
3. `Run a three-way match on invoice INV-XXXXX` — confirm the output is correct
4. Check that discrepancies are flagged and notes are added correctly

***

## What good looks like

* AP team only touches invoices with genuine discrepancies
* Every matched and held invoice has a note in your ERP explaining why
* Held invoices are cleared (or escalated) before the payment run
* The agent's Activity log is the audit trail — every match decision is logged

***

## Variations

**If invoices arrive by email (PDF):** Add an email trigger. The agent reads the PDF, extracts invoice data, and runs the match.

**If your ERP auto-books GRs at a time lag:** Add a buffer (e.g. don't match invoices arriving within 24 hours of the PO — wait for the GR to land).

**If you have multiple legal entities:** Brief the agent with entity-specific tolerances and route escalations to the correct AP controller per entity.


# Handle delivery exceptions

Build a Riff workflow to surface inbound delivery discrepancies — short deliveries, wrong items, damaged goods — and keep your team moving.

**Best fit:** Agent (detection) + App (action queue) **ERP systems:** Infor LN / M3, SAP S/4HANA, Oracle ERP Cloud, Microsoft Dynamics 365 **Time to build:** \~40 minutes

***

## What you're building

An agent that monitors inbound deliveries and flags exceptions automatically — short deliveries, wrong items, quantity mismatches, damaged goods. The flagged exceptions appear in a team App where your warehouse or procurement team can action them: raise a debit note, contact the supplier, or update the PO.

***

## What you need

* Riff workspace with your ERP connected
* Read access to goods receipt records and purchase orders
* Write access to create exception records or notes in your ERP
* An agreed classification for exception types (short delivery, wrong item, quality reject, etc.)

***

## Part 1: Build the detection agent

### Step 1: Brief the agent

Create a new Agent and describe the job:

> You monitor goods receipts in \[ERP] as they are posted. For each receipt, you compare the received quantity and item against the corresponding purchase order line. If the received quantity is more than 5% below the ordered quantity, you flag it as a short delivery. If the item code or description doesn't match the PO, you flag it as a wrong item. If a quality rejection code is posted alongside the receipt, you flag it as a quality exception. For each exception, you create an exception record in \[ERP] with the receipt number, PO number, supplier, exception type, and discrepancy detail.

### Step 2: Connect and trigger

* **Integrations tab**: connect your ERP
* **Triggers tab**: add a schedule trigger (e.g. every 4 hours during business hours, or after each shift's GR batch)

***

## Part 2: Build the action App

Your team needs a screen to see and action the exception queue.

### Step 3: Create the App

1. Click **+ New** → **App**
2. Name it — e.g. "Delivery Exception Queue"
3. Build a table view showing:
   * Exception type
   * Supplier and PO number
   * Received vs ordered quantity
   * Date received
   * Assigned to (blank until claimed)
   * Status (New / In progress / Resolved)

### Step 4: Add action buttons

For each exception, add buttons that trigger the appropriate workflow:

| Button                | What happens                                                           |
| --------------------- | ---------------------------------------------------------------------- |
| Raise debit note      | Agent drafts a debit note against the supplier and adds it to your ERP |
| Contact supplier      | Agent drafts an exception notification email for review before sending |
| Accept short delivery | Closes the exception and updates the PO quantity                       |
| Reject delivery       | Flags the receipt for return and creates a return-to-supplier record   |

### Step 5: Assign and notify

Configure the agent to:

* Assign exceptions to the right team member based on category or supplier
* Send a daily summary of open exceptions to the procurement lead

***

## What good looks like

* Exceptions are flagged within minutes of a goods receipt being posted
* Every exception has a clear status and owner in the App
* Supplier correspondence and ERP updates are logged against the exception
* Nothing falls through the cracks between shifts or handovers

***

## Variations

**If your team works on mobile:** Build the App with a mobile-friendly layout and enable push notifications for new high-priority exceptions.

**If debit notes need approval:** Add an approval step in the App before the agent raises the debit note in your ERP.

**If you want to track exception rates by supplier:** Add a dashboard tab to the App showing exception volume, type, and resolution time by supplier — useful for supplier performance reviews.


# Finance

Riff playbooks for finance teams — invoice reconciliation, payment exceptions, and approval escalation.

These playbooks cover the finance workflows that sit alongside procurement: invoice reconciliation, payment approvals, and transaction exception handling. Written for finance controllers, AP leads, and shared services teams.

| Playbook                                                                          | What it does                                   | Best fit    |
| --------------------------------------------------------------------------------- | ---------------------------------------------- | ----------- |
| [Reconcile supplier invoices](/playbooks/finance/reconcile-supplier-invoices)     | Match invoices to POs and GRs, hold mismatches | Agent       |
| [Escalate flagged transactions](/playbooks/finance/escalate-flagged-transactions) | Route payment exceptions to the right approver | Agent + App |

## ERP compatibility

These playbooks are written for teams running **Infor LN / M3**, **SAP S/4HANA**, **Oracle ERP Cloud**, or **Microsoft Dynamics 365**.

## Note on the overlap with Procurement

Invoice reconciliation (GR/IR matching) appears in both the Procurement and Finance playbooks. The [Procurement version](/playbooks/procurement/match-purchase-orders) is written from the buyer's perspective; the [Finance version](/playbooks/finance/reconcile-supplier-invoices) is written from the AP controller's perspective. Both are valid starting points — pick whichever matches your role.


# Reconcile supplier invoices

Build a Riff agent that reconciles supplier invoices against purchase orders and goods receipts — so your AP team focuses on exceptions, not routine matching.

**Best fit:** Agent **ERP systems:** Infor LN / M3, SAP S/4HANA, Oracle ERP Cloud, Microsoft Dynamics 365 **Time to build:** \~30 minutes **See also:** [Match purchase orders to invoices](/playbooks/procurement/match-purchase-orders) (buyer perspective)

***

## What you're building

A Riff agent that runs the end-of-day invoice reconciliation: checking each invoice against the corresponding PO and goods receipt, auto-approving clean matches, and routing exceptions to the right person before the payment run.

***

## What you need

* Riff workspace with your ERP connected
* Read access to supplier invoices, purchase orders, and goods receipts
* Write access to update invoice status, add notes, or create exception records
* Finance-team tolerance thresholds (may differ from procurement's thresholds)
* Escalation routing: who receives which type of exception

***

## Step 1: Map your reconciliation workflow

Before briefing the agent, answer these questions:

| Question                         | Example answer                                                     |
| -------------------------------- | ------------------------------------------------------------------ |
| When do invoices arrive?         | Daily batch from ERP AP module                                     |
| What's the matching tolerance?   | Price: ±2%, Quantity: ±3%                                          |
| What are the exception types?    | Price mismatch, quantity mismatch, no GR posted, duplicate invoice |
| Who handles each exception type? | AP Controller → price/quantity; Buyer → no GR                      |
| What's the payment run schedule? | Every Tuesday and Friday                                           |

***

## Step 2: Create the agent

1. Click **+ New** → **Agent**
2. Name it — e.g. "Invoice Reconciliation Agent"
3. In the **Profile** tab, brief the agent with your workflow:

> You run the daily invoice reconciliation in \[ERP] every evening at 18:00. For each invoice received today, you check it against the corresponding PO and GR. Invoices that match within tolerance (price ±2%, quantity ±3%) are approved for the next payment run. Invoices with price or quantity mismatches are held and routed to the AP Controller. Invoices with no matching GR are held and routed to the buyer on the PO. Duplicate invoices are blocked and flagged to the AP Controller immediately. After processing, you send a reconciliation summary to the Finance Controller showing: total invoices processed, approved, and held by category.

***

## Step 3: Connect your ERP

Connect via the **Integrations** tab. Key AP access needed per system:

| ERP              | Key access                                                            |
| ---------------- | --------------------------------------------------------------------- |
| SAP S/4HANA      | Accounts Payable → Invoice verification (MIRO), GR/IR clearing (MR11) |
| Infor LN         | Procurement → Purchase invoice processing                             |
| Oracle ERP Cloud | Payables → Invoice processing and approval workflows                  |
| Dynamics 365     | Accounts Payable → Vendor invoice journal and matching                |

***

## Step 4: Set up escalation routing

In the **Profile** tab, add routing rules:

> Route all price mismatch exceptions to \[AP Controller name or role]. Route all "no GR posted" exceptions to the buyer listed on the PO. Route duplicate invoice flags to \[AP Controller] immediately regardless of time of day.

***

## Step 5: Schedule and test

1. **Triggers tab**: add a schedule — e.g. every day at 18:00
2. **Chat tab**: `Process the invoices received today in test mode` — review the output before enabling
3. Check that approvals, holds, and escalations all land correctly
4. Go live and monitor the first two or three runs in **Activity**

***

## What good looks like

* Finance Controller gets a daily summary instead of reviewing individual invoices
* Payment runs are clean — no mismatched invoices slipping through
* Every exception has an owner and a deadline before the payment run
* The agent's Activity log is the full audit trail for every invoice decision

***

## Variations

**If invoices arrive as PDFs by email:** Add an email trigger. The agent extracts invoice data from the PDF and runs the match.

**If you have inter-company invoices:** Brief the agent with inter-company matching rules and separate routing for those exceptions.

**If your payment run is automated:** Configure the agent to submit the approved invoice list to the payment run directly, rather than just flagging approval status.


# Escalate flagged transactions

Build a Riff workflow to route payment exceptions and approval requests to the right person — automatically, with full audit trail.

**Best fit:** Agent (detection and routing) + App (approval queue) **ERP systems:** Infor LN / M3, SAP S/4HANA, Oracle ERP Cloud, Microsoft Dynamics 365 **Time to build:** \~35 minutes

***

## What you're building

A workflow that detects payment exceptions requiring approval — transactions above thresholds, unusual suppliers, policy violations, mismatches — and routes them to the right approver automatically. Approvers see a clean queue in a Riff App; they approve or reject with a reason; the decision is written back to your ERP.

***

## What you need

* Riff workspace with your ERP connected
* Your delegation-of-authority matrix (who can approve what up to which value)
* Read access to invoices, payment proposals, and AP exceptions
* Write access to update invoice/payment status in your ERP
* Approver email addresses or Slack handles

***

## Step 1: Define your escalation rules

Build your routing table before you start:

| Exception type               | Threshold     | Routes to             |
| ---------------------------- | ------------- | --------------------- |
| Invoice value above limit    | > €50,000     | Finance Director      |
| New supplier (first invoice) | Any value     | AP Controller         |
| Duplicate invoice            | Any value     | AP Controller         |
| Price mismatch               | > 5% variance | Buyer + AP Controller |
| Payment terms mismatch       | Any           | AP Controller         |

***

## Part 1: Build the detection agent

### Step 2: Create the agent

1. Click **+ New** → **Agent**
2. Name it — e.g. "Payment Escalation Agent"
3. Brief the agent with your routing table:

> You monitor the AP exception queue in \[ERP]. For each exception, you apply the escalation routing table. Invoices above €50,000 are flagged to the Finance Director. First-time supplier invoices go to the AP Controller regardless of value. Duplicate invoices go to the AP Controller immediately. Price mismatches above 5% go to both the buyer on the PO and the AP Controller. You create an approval request for each flagged item and send a notification to the approver. You do not approve any payment without explicit approval from the right authority level.

### Step 3: Connect and trigger

* **Integrations tab**: connect your ERP
* **Triggers tab**: schedule to run after each invoice processing batch, or set a real-time trigger if your ERP supports it

***

## Part 2: Build the approval App

### Step 4: Create the approval queue

1. Click **+ New** → **App** (or add a tab to an existing finance App)
2. Build a queue view:
   * Exception type and description
   * Invoice number, supplier, and value
   * Routing reason (why this needs approval)
   * Assigned approver
   * Days in queue
3. For each item, add **Approve** and **Reject (with reason)** buttons
4. When an approver acts, the agent writes the decision back to your ERP and logs it

### Step 5: Configure notifications

Brief the agent to send:

* A notification to each approver when a new item arrives in their queue
* A daily summary of open approvals (so nothing sits unactioned)
* An escalation alert if an item has been open for more than 24 hours without a decision

***

## What good looks like

* No payment exception sits unrouted for more than minutes
* Approvers have all the context they need in one view — no ERP login required to approve
* Every approval and rejection is logged against the invoice in your ERP
* Finance Director can see the full approval queue and override if needed

***

## Variations

**If your organisation uses email-based approvals:** Configure the agent to send an approval request email with approve/reject links, and process the reply.

**If thresholds vary by legal entity or cost centre:** Brief the agent with your full delegation matrix, keyed by entity, category, and value.

**If you use a third-party approval workflow (e.g. Coupa, Basware):** Integrate the agent with that system via its API — route exceptions there and sync decisions back to your ERP.


# Operations

Riff playbooks for operations teams — open order monitoring, stock threshold alerts, and inbound logistics.

These playbooks cover the operational workflows that sit across procurement and inventory: monitoring open orders, alerting on stock levels, and tracking inbound logistics. Written for operations managers, supply chain leads, and planning teams.

| Playbook                                                                     | What it does                                                 | Best fit    |
| ---------------------------------------------------------------------------- | ------------------------------------------------------------ | ----------- |
| [Monitor open orders](/playbooks/operations/monitor-open-orders)             | Watch PO status and alert on overdue or stuck orders         | Agent + App |
| [Alert on stock thresholds](/playbooks/operations/alert-on-stock-thresholds) | Monitor inventory and trigger replenishment when levels fall | Agent       |

## ERP compatibility

These playbooks are written for teams running **Infor LN / M3**, **SAP S/4HANA**, **Oracle ERP Cloud**, or **Microsoft Dynamics 365**.


# Monitor open orders

Build a Riff agent that watches your open purchase order pipeline and alerts on overdue or stalled orders — before they become supply disruptions.

**Best fit:** Agent (monitoring) + App (pipeline view) **ERP systems:** Infor LN / M3, SAP S/4HANA, Oracle ERP Cloud, Microsoft Dynamics 365 **Time to build:** \~35 minutes

***

## What you're building

An agent that monitors your open purchase order pipeline — watching delivery dates, supplier confirmations, and order status — and alerts your team when orders are overdue, stalled, or at risk. A companion App gives your planning team a live view of the pipeline without needing to log in to your ERP.

***

## What you need

* Riff workspace with your ERP connected
* Read access to purchase orders and delivery schedules
* Defined rules for what counts as "at risk" or "overdue"
* Escalation routing (who to alert for which category)

***

## Step 1: Define what to monitor

Before you start, agree on:

| Status      | Definition                                                               | Alert threshold        |
| ----------- | ------------------------------------------------------------------------ | ---------------------- |
| Overdue     | Confirmed delivery date passed, no GR                                    | Day of or day after    |
| Unconfirmed | Sent to supplier, no confirmation received                               | 48 hours after PO sent |
| At risk     | Confirmed but delivery date within 3 days and no advance shipping notice | 3 days before          |
| Stalled     | No status change for X days                                              | 7 days                 |

***

## Step 2: Create the agent

1. Click **+ New** → **Agent**
2. Name it — e.g. "Open Order Monitor"
3. In the **Profile** tab:

> You monitor all open purchase orders in \[ERP] daily. Each morning, you check the status of every open PO line against its expected delivery date and confirmation status. You flag: (1) lines with a confirmed delivery date that has passed and no goods receipt posted — mark as Overdue and alert the buyer. (2) PO lines sent to supplier more than 48 hours ago with no confirmation — mark as Unconfirmed and send a chase. (3) Confirmed lines due within 3 business days with no advance shipping notice — mark as At Risk and alert the planner. (4) Any PO line with no status change in 7+ days — mark as Stalled and alert the buyer. You update a status field in \[ERP] for each flagged line and send a daily summary to the planning team.

***

## Step 3: Connect and trigger

* **Integrations tab**: connect your ERP
* **Triggers tab**: schedule — e.g. every day at 07:00 so the team starts the day with a fresh view

***

## Part 2: Build the pipeline App

Your planning team needs a live view they can work from.

### Step 4: Create the App

1. Click **+ New** → **App**
2. Name it — e.g. "Open Order Pipeline"
3. Build a filtered table:
   * Columns: PO number, supplier, item, ordered qty, expected delivery, status (colour-coded), buyer
   * Filters: by status (All / Overdue / At Risk / Unconfirmed / Stalled), by supplier, by buyer
4. Add a **Chase supplier** button that triggers the agent to send a follow-up for that specific PO line

### Step 5: Add a summary dashboard

Add a top-level dashboard tab:

* Total open orders: count by status
* Orders due this week: count and list
* Top 5 suppliers by overdue orders: for supplier performance conversations
* Average days overdue: trend line

***

## What good looks like

* Your planning team starts the day with a current, prioritised view of at-risk orders — not an ERP report they have to filter themselves
* Buyers are alerted to overdue orders before the operations meeting, not during it
* Supplier chases go out automatically — buyers focus on the cases that need negotiation
* The App gives non-ERP users (e.g. production planning, logistics) visibility they didn't have before

***

## Variations

**If you want to track by production order or project:** Extend the agent to monitor PO lines linked to specific production orders — alert when a linked delivery is at risk.

**If your ERP uses advance shipping notices (ASNs):** Configure the agent to check ASN status as part of the At Risk calculation.

**If you want a read-only view for leadership:** Add a read-only version of the dashboard App with no action buttons, shared via a deployment link.


# Alert on stock thresholds

Build a Riff agent that monitors inventory levels and alerts your team — or triggers replenishment — when stock falls below threshold.

**Best fit:** Agent **ERP systems:** Infor LN / M3, SAP S/4HANA, Oracle ERP Cloud, Microsoft Dynamics 365 **Time to build:** \~25 minutes

***

## What you're building

A Riff agent that monitors your inventory on a schedule, compares current stock levels against your reorder points, and takes action when levels fall below threshold — alerting a planner, creating a purchase requisition in your ERP, or both.

***

## What you need

* Riff workspace with your ERP connected
* Read access to inventory / stock levels and item master data (reorder points, safety stock)
* Write access to create purchase requisitions (if you want automated replenishment)
* Routing rules: who to alert for which item category or warehouse location

***

## Step 1: Define your threshold logic

| Rule               | Example                                                               |
| ------------------ | --------------------------------------------------------------------- |
| Reorder point      | When on-hand + on-order falls below safety stock level in item master |
| Critical threshold | When on-hand falls below 3 days of average consumption                |
| Overstock alert    | When on-hand exceeds 60 days of average consumption                   |
| Slow-mover alert   | When an item hasn't moved in 90 days and stock is above zero          |

Use your ERP's existing reorder points and safety stock settings as the starting point — brief the agent to read them directly rather than duplicating them in Riff.

***

## Step 2: Create the agent

1. Click **+ New** → **Agent**
2. Name it — e.g. "Stock Level Monitor"
3. In the **Profile** tab:

> You monitor inventory levels in \[ERP] twice daily (07:00 and 14:00). For each item, you compare on-hand stock plus confirmed inbound against the reorder point in the item master. If the combined total falls below the reorder point, you create a draft purchase requisition for the standard order quantity and alert the planner responsible for that category. If the on-hand stock falls below 3 days of average consumption, you mark it as critical and alert the planner immediately regardless of schedule. You do not raise actual purchase orders — PRs require planner sign-off.

Note: the last line is important. The agent drafts PRs and alerts planners, but doesn't place orders autonomously. Adjust based on your organisation's automation policy.

***

## Step 3: Connect your ERP

Stock level access by ERP:

| ERP              | Access path                                              |
| ---------------- | -------------------------------------------------------- |
| SAP S/4HANA      | Materials Management → Inventory Management (MMBE, MB52) |
| Infor LN         | Inventory → Item master, on-hand balance queries         |
| Oracle ERP Cloud | Inventory Management → On-hand balances and availability |
| Dynamics 365     | Inventory Management → On-hand inventory list            |

Connect via the **Integrations** tab and test that the agent can read stock levels for a sample of items.

***

## Step 4: Configure the trigger

* **Schedule trigger**: twice daily at 07:00 and 14:00 (or more frequent for critical categories)
* **Event trigger**: if your ERP can fire a webhook on goods issue, add that as a trigger so the agent runs immediately when a large consumption event occurs

***

## Step 5: Test

1. In the **Chat** tab: `Show me the items currently below their reorder point`
2. Compare the list against your ERP's own MRP or reorder report
3. `Draft a purchase requisition for item [X]` — review the output
4. If everything looks right, enable the trigger

***

## What good looks like

* Planners get alerts before stock runs out, not after
* Draft PRs are created automatically — planners review and approve rather than creating from scratch
* Critical alerts arrive immediately, not on the next scheduled run
* The agent's Activity log shows every check and every PR created — full audit trail

***

## Variations

**If you want fully automated replenishment (no planner sign-off):** Change the brief to create confirmed PRs or even POs directly. Only do this for low-value, high-velocity items where the replenishment is genuinely routine.

**If you have multiple warehouses:** Brief the agent with warehouse-specific reorder points and route alerts to the warehouse manager, not just the central planner.

**If you want to factor in supplier lead times:** The agent can read confirmed supplier lead times from your ERP and factor them into the "when to order" calculation — so it alerts earlier for items with long lead times.


# About Integrations

Connect Riff to your ERP and the tools your teams already use.

Riff is built to run on the systems your procurement and operations teams already depend on. Connect to your ERP first — then add the communication tools, document stores, and data pipelines your business uses every day.

### Two connection types

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>ERP &#x26; Native Connectors</strong></td><td>Pre-configured connectors for the ERPs and productivity tools your teams use daily. Set credentials once. Your apps and agents read live data and take action.</td><td><a href="/archive/integrations-legacy-saas-connectors/native-integrations">Native Integrations</a></td></tr><tr><td align="center"><strong>Custom APIs</strong></td><td>Connect to any external service — freight carriers, supplier portals, compliance databases, EDI systems — using their REST API. Riff stores credentials securely and handles the wiring.</td><td><a href="/archive/integrations-legacy-saas-connectors/custom-integrations">Custom Integrations</a></td></tr></tbody></table>

### Start with your ERP

Your ERP holds the data your agents act on: purchase orders, goods receipts, vendor records, invoice lines, cost centres. Connect it first.

| ERP                        | What your apps and agents can read                                              |
| -------------------------- | ------------------------------------------------------------------------------- |
| **Infor LN / M3**          | Purchase orders, goods receipts, vendor master, invoice data, production orders |
| **SAP S/4HANA**            | Purchase orders, materials, invoices, cost centres, goods movements             |
| **Oracle ERP Cloud**       | PO lines, receipt transactions, supplier records, AP invoices, payment terms    |
| **Microsoft Dynamics 365** | Purchase orders, vendor invoices, inventory transactions, cost centres          |

> **No ERP API access yet?** Start with the Custom Integration path — your agent can work with CSV exports, SharePoint files, or Outlook-forwarded confirmations while your IT team sets up the API connection.

### What connecting an integration unlocks

* **Apps** — build dashboards, approval queues, and supplier portals on live ERP data. No manual exports or copy-paste.
* **Agents** — give your agent read and write access so it can chase supplier confirmations, match invoices, and log exceptions back into the ERP automatically.

{% hint style="info" %}
**What's an API?** A deal between systems. Your agent sends a request. The ERP returns data or confirms an action. Every call is logged — full audit trail, reversible actions.
{% endhint %}


# Native Integrations

Pre-built connectors for the ERPs and tools your procurement teams run on.

Connect Riff to the systems your team already lives in. Set credentials once — your apps and agents handle the rest.

### ERP Connectors

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>Infor LN / M3</strong></td><td>Purchase orders, goods receipts, vendor master, invoice data. REST API + ION API Gateway.</td><td><a href="https://github.com/ElleNealAI/riff-docs/blob/main/integrations/native-integrations/infor-ln/README.md">https://github.com/ElleNealAI/riff-docs/blob/main/integrations/native-integrations/infor-ln/README.md</a></td></tr><tr><td align="center"><strong>SAP S/4HANA</strong></td><td>Purchase orders, materials, invoices, cost centres. OAuth 2.0 / service key.</td><td><a href="https://github.com/ElleNealAI/riff-docs/blob/main/integrations/native-integrations/sap/README.md">https://github.com/ElleNealAI/riff-docs/blob/main/integrations/native-integrations/sap/README.md</a></td></tr><tr><td align="center"><strong>Oracle ERP Cloud</strong></td><td>PO lines, receipt transactions, supplier data, AP invoices. OAuth 2.0.</td><td><a href="https://github.com/ElleNealAI/riff-docs/blob/main/integrations/native-integrations/oracle-erp/README.md">https://github.com/ElleNealAI/riff-docs/blob/main/integrations/native-integrations/oracle-erp/README.md</a></td></tr><tr><td align="center"><strong>Microsoft Dynamics 365</strong></td><td>Purchase orders, vendor invoices, inventory, cost centres. Azure AD OAuth.</td><td><a href="https://github.com/ElleNealAI/riff-docs/blob/main/integrations/native-integrations/dynamics-365/README.md">https://github.com/ElleNealAI/riff-docs/blob/main/integrations/native-integrations/dynamics-365/README.md</a></td></tr></tbody></table>

### Communication & Productivity

<table data-view="cards"><thead><tr><th align="center"></th><th></th></tr></thead><tbody><tr><td align="center"><strong>Microsoft Outlook</strong></td><td>Send supplier confirmations, delivery alerts, and exception notifications directly from your agents.</td></tr><tr><td align="center"><strong>Slack</strong></td><td>Post procurement exception digests, approval requests, and delivery alerts to your team channels.</td></tr><tr><td align="center"><strong>Microsoft SharePoint</strong></td><td>Read supplier contracts, PO documents, and specification files. Write exception reports and reconciliation outputs.</td></tr></tbody></table>

### How it works

Two ways to connect:

1. **Let the agent drive.** When a task needs an integration, the agent prompts you to connect. Provide credentials once. Done.
2. **Add it yourself.** Open **Integrations** in your app or agent workspace, pick a connector, and follow the setup steps.

After connecting, your agent:

* Reads live data from the source — no manual exports needed
* Takes action: logs confirmations, updates statuses, flags exceptions — with a full audit trail
* Escalates to your team when it needs a decision it can't make itself

#### Typical procurement flows

* Pull overdue POs from **Infor LN** → chase supplier via **Outlook** → log confirmation back to ERP
* Read pending invoices from **SAP** → match against goods receipts → flag mismatches to buyer via **Slack**
* Monitor delivery exceptions in **Oracle ERP Cloud** → build a daily exception dashboard → push digest to procurement manager
* Reconcile vendor invoices in **Dynamics 365** → approve matched lines → escalate disputes to AP team

> Coverage grows. If your ERP or tool isn't listed, use a [Custom Integration](/archive/integrations-legacy-saas-connectors/custom-integrations) or ask your agent to wire it up.


# Infor LN / M3

Connect Riff to Infor LN or M3 to build procurement apps and agents on live ERP data.

Connect Riff to Infor LN or M3 to give your apps and agents live access to purchase orders, goods receipts, vendor records, and invoice data — so they can take action directly in your ERP without manual exports.

## What you connect

Riff connects to Infor LN and M3 using their REST APIs — the **ION API Gateway** for LN, and the **M3 API** for M3. You store your credentials once in Riff Secrets. Your apps and agents use them automatically.

**Credentials needed:**

| Credential                  | Where to find it                           |
| --------------------------- | ------------------------------------------ |
| ION API endpoint (base URL) | Infor OS → ION API → Services              |
| Client ID + Client Secret   | ION API → Authorised Apps                  |
| OAuth token endpoint        | Provided alongside the Client ID           |
| Tenant ID                   | Your Infor CloudSuite environment settings |

## What your apps and agents can read

| Data object                         | Common use                                                     |
| ----------------------------------- | -------------------------------------------------------------- |
| Purchase Orders                     | Chase confirmations, track delivery status, flag overdue lines |
| Goods Receipts (ReceivingAdvice)    | Match receipts against POs, flag short deliveries              |
| Vendor Master (SupplierPartyMaster) | Look up supplier contacts, payment terms, lead times           |
| Invoice Lines (SupplierInvoice)     | Three-way match: PO → GR → Invoice                             |
| Purchase Order Lines                | Line-level status, quantity, price variance tracking           |
| Production Orders                   | Link procurement demand to production schedules                |

## What your agents can do

| Action                  | Example                                                                                   |
| ----------------------- | ----------------------------------------------------------------------------------------- |
| **Read & report**       | Pull all POs with delivery date before today and no GR → build overdue delivery dashboard |
| **Chase confirmations** | Query unconfirmed POs → send Outlook email to supplier contact → log response             |
| **Flag exceptions**     | Detect quantity or price mismatches on GRs → alert buyer → log exception code in ERP      |
| **Three-way match**     | Retrieve PO, GR, and invoice line → compare quantities and prices → approve or flag       |

## App use cases

### Overdue Delivery Dashboard

Build an App that queries Infor LN for all open PO lines with a delivery date in the past and no confirmed goods receipt. Display by supplier, days overdue, and PO value. Buyers click through to the PO and send a chase email directly from the app — no ERP login required.

### Supplier Performance Portal

Pull delivery on-time rate, invoice dispute rate, and lead time accuracy from LN by supplier over a rolling period. Display as a ranked table. Drill into any supplier to see line-level detail. Exportable for supplier review meetings.

### PO Status Tracker

A live view of all open purchase orders: status, confirmation date, expected delivery, goods receipt date. Filter by site, buyer, category. One-click to chase or escalate.

## Agent use cases

### PO Confirmation Chaser

**Trigger:** Daily at 07:00\
**Input:** Open POs in LN with no supplier confirmation, older than 3 business days\
**Action:** Draft and send confirmation request to supplier email on record via Outlook\
**Output:** Log supplier confirmation back to LN; flag non-responses to buyer in Slack

### Goods Receipt Discrepancy Monitor

**Trigger:** Daily at 06:00 (or on new GR event via webhook)\
**Input:** All GRs posted in the last 24 hours\
**Action:** Compare received quantity and price against PO line\
**Output:** Flag mismatches above threshold to AP team; auto-approve clean matches

### Invoice Matching Agent

**Trigger:** New invoice received (Outlook webhook or scheduled)\
**Input:** Invoice line data from Infor LN\
**Action:** Three-way match against PO and GR → approve or escalate\
**Output:** Approved invoices posted; exceptions queued for buyer review with a match summary

## Connecting Infor LN in Riff

1. Open your app or agent in Riff and go to **Integrations**
2. Add a new custom integration — name it "Infor LN"
3. Open **Secrets** and store your ION API credentials (Client ID, Client Secret, base URL, tenant ID)
4. In your agent or app, reference the secrets to authenticate and call the ION API
5. Ask your agent: *"Read all open purchase orders from Infor LN where the delivery date is before today and no goods receipt has been posted"*

{% hint style="info" %}
**ION API vs. direct LN API:** For Infor CloudSuite customers, the ION API Gateway is the recommended integration path. It provides a stable REST interface to LN business objects (BODs) and handles authentication centrally across your Infor landscape.
{% endhint %}

{% hint style="success" %}
**No API access yet?** Ask your Infor administrator to enable ION API access for your tenant. In the meantime, your agent can work with LN CSV exports uploaded to Riff's storage, or with Outlook-forwarded order acknowledgements from suppliers.
{% endhint %}


# SAP S/4HANA

Connect Riff to SAP S/4HANA to build procurement apps and agents on live ERP data.

Connect Riff to SAP S/4HANA or the SAP Business Technology Platform (BTP) to give your apps and agents live access to purchase orders, vendor data, materials, invoices, and cost centres.

## What you connect

Riff connects to SAP using the **SAP OData V4 APIs** (for S/4HANA Cloud) or the **SAP API Business Hub** REST APIs. Authentication uses an **OAuth 2.0 service key** issued from SAP BTP.

**Credentials needed:**

| Credential                | Where to find it                                  |
| ------------------------- | ------------------------------------------------- |
| OAuth token URL           | SAP BTP → Service Instances → OAuth credentials   |
| Client ID + Client Secret | SAP BTP service key JSON                          |
| API endpoint base URL     | SAP API Business Hub or your S/4HANA instance URL |
| SAP Client (MANDT)        | Your SAP system configuration                     |

## What your apps and agents can read

| SAP object             | API                                | Common use                                      |
| ---------------------- | ---------------------------------- | ----------------------------------------------- |
| Purchase Orders        | `/API_PURCHASEORDER_PROCESS_SRV`   | Confirmation status, delivery dates, line items |
| Goods Receipts / GR-IR | `/API_MATERIAL_DOCUMENT_SRV`       | Posted receipts, quantity variances             |
| Vendor Master          | `/API_BUSINESS_PARTNER`            | Supplier contacts, payment terms, bank details  |
| Supplier Invoices      | `/API_SUPPLIERINVOICE_PROCESS_SRV` | Invoice headers, line items, payment status     |
| Material Master        | `/API_PRODUCT_SRV`                 | Material descriptions, units, plant data        |
| Cost Centres           | `/API_COSTCENTER_0002`             | Cost centre hierarchy, budget vs. actuals       |

## What your agents can do

| Action                         | Example                                                                     |
| ------------------------------ | --------------------------------------------------------------------------- |
| **Monitor overdue deliveries** | Query PO lines where delivery date has passed with no GR → alert buyer      |
| **Chase confirmations**        | Read unconfirmed POs → send confirmation request → log response             |
| **Three-way match**            | Compare PO quantity/price → GR posting → supplier invoice → approve or flag |
| **Cost variance reporting**    | Read cost centre actuals vs. plan → flag variances above threshold          |
| **GR/IR reconciliation**       | List GR/IR open items → identify blocked invoices → route to AP             |

## App use cases

### Procurement Dashboard

Build an App that reads open PO lines from S/4HANA and displays delivery status by supplier, site, and category — colour-coded by days overdue. Buyers filter, search, and click through to the original PO. No SAP login needed for the team.

### Invoice Verification Queue

Display all supplier invoices pending three-way match. Show PO quantity, GR quantity, and invoice quantity side by side. AP clerks approve matched invoices directly in the app — the agent posts the approval back to SAP.

### Cost Centre Variance Monitor

Pull cost centre actuals and planned values from SAP. Flag cost centres where actuals exceed plan by more than 10%. Output a weekly digest to Finance with drill-down by GL account.

## Agent use cases

### Overdue Delivery Monitor

**Trigger:** Daily at 06:30\
**Input:** Open SAP PO lines where scheduled delivery date is before today\
**Action:** Group by supplier → send delivery status request via Outlook → log replies\
**Output:** Slack digest to procurement team; unresolved items escalated to buyer

### Invoice Matching Agent

**Trigger:** New invoice notification (Outlook or SAP workflow)\
**Input:** Invoice header and lines from `/API_SUPPLIERINVOICE_PROCESS_SRV`\
**Action:** Match against PO and GR; calculate quantity and price variance\
**Output:** Auto-post matched invoices; queue mismatches for manual review with match summary

### GR/IR Reconciliation Agent

**Trigger:** Weekly, Monday 07:00\
**Input:** GR/IR open items list from SAP\
**Action:** Categorise by root cause (price difference, quantity difference, missing GR, missing invoice)\
**Output:** Structured exception report to AP manager with recommended actions per item

## Connecting SAP in Riff

1. In SAP BTP, create a service instance for the SAP API you need (e.g., Purchase Orders)
2. Download the service key JSON — this contains your Client ID, Client Secret, and token URL
3. Open **Secrets** in Riff and store each credential
4. In your app or agent, reference the secrets to authenticate via OAuth 2.0 and call the API
5. Ask your agent: *"Read all open purchase orders from SAP where the delivery date is in the past and no goods receipt has been posted"*

{% hint style="info" %}
**S/4HANA Cloud vs. On-Premise:** The OData V4 APIs described here are for S/4HANA Cloud Public Edition. For on-premise or private cloud deployments, connection is via SAP Integration Suite or direct OData V2 — ask your SAP Basis team for the correct endpoint and authentication method.
{% endhint %}


# Oracle ERP Cloud

Connect Riff to Oracle ERP Cloud to build procurement apps and agents on live purchasing, receiving, and payables data.

Connect Riff to Oracle ERP Cloud (Fusion) to give your apps and agents live access to purchase orders, receipt transactions, supplier records, and AP invoices.

## What you connect

Riff connects to Oracle ERP Cloud using its **REST APIs** (available from Oracle Fusion). Authentication uses **OAuth 2.0** via Oracle IDCS (Identity Cloud Service) or **Basic Authentication** with a service account.

**Credentials needed:**

| Credential                       | Where to find it                                                             |
| -------------------------------- | ---------------------------------------------------------------------------- |
| Oracle ERP Cloud base URL        | Your Oracle instance URL (e.g. `https://yourcompany.fa.us2.oraclecloud.com`) |
| OAuth Client ID + Secret         | Oracle IDCS → Applications → Confidential Application                        |
| Token endpoint                   | `https://yourinstance.identity.oraclecloud.com/oauth2/v1/token`              |
| Username / Password (Basic Auth) | Service account created in Oracle Security Console                           |

## What your apps and agents can read

| Oracle object        | REST resource                                         | Common use                                       |
| -------------------- | ----------------------------------------------------- | ------------------------------------------------ |
| Purchase Orders      | `/fscmRestApi/resources/.../purchaseOrders`           | Confirmation status, delivery dates, line items  |
| Receipt Transactions | `/fscmRestApi/resources/.../receivingReceiptRequests` | Goods received, quantity variances               |
| Suppliers            | `/fscmRestApi/resources/.../suppliers`                | Supplier contacts, payment terms, certifications |
| AP Invoices          | `/fscmRestApi/resources/.../invoices`                 | Invoice headers, match status, payment status    |
| Purchase Order Lines | `/purchaseOrders/{id}/child/lines`                    | Line-level status, quantities, prices            |
| Cost Centres         | `/fscmRestApi/resources/.../costCenters`              | Budget vs. actuals by cost centre                |

## What your agents can do

| Action                      | Example                                                              |
| --------------------------- | -------------------------------------------------------------------- |
| **Monitor PO confirmation** | Query POs awaiting supplier acknowledgement → chase by Outlook       |
| **Delivery tracking**       | Read scheduled vs. actual delivery dates → flag late lines           |
| **Three-way match**         | PO → receipt → invoice comparison; auto-approve clean matches        |
| **Supplier performance**    | Calculate on-time delivery and invoice accuracy rates by supplier    |
| **Exception escalation**    | Route discrepancies to the right buyer or AP clerk with full context |

## App use cases

### Supplier Delivery Dashboard

Build an App connected to Oracle ERP Cloud that shows open PO lines by supplier with promised delivery date, days remaining, and receipt status. Procurement managers see at a glance which lines are at risk — and can send a chase directly from the app without needing an Oracle login.

### AP Invoice Matching Queue

Display pending invoices with their PO and receipt data side by side. AP clerks see exactly which lines match and which have variances. One-click to approve matched batches; exceptions go to a review queue with full context.

### Supplier Performance Scorecard

Pull delivery performance, invoice accuracy, and dispute rate from Oracle ERP Cloud by supplier over a rolling 12-month window. Rank suppliers by composite score. Exportable for supplier review meetings.

## Agent use cases

### PO Confirmation Chaser

**Trigger:** Daily at 07:00\
**Input:** Open POs in Oracle with no supplier acknowledgement, older than 2 business days\
**Action:** Send confirmation request to supplier contact on record via Outlook\
**Output:** Log supplier response back to Oracle; escalate non-responses to buyer; summary digest to Slack

### Invoice Matching Agent

**Trigger:** New invoice event (webhook) or daily at 06:00\
**Input:** AP invoice lines from Oracle\
**Action:** Three-way match against PO lines and receipt quantities\
**Output:** Auto-approve clean matches; queue exceptions for AP review with variance detail

### Delivery Exception Monitor

**Trigger:** Daily at 06:30\
**Input:** Open PO lines with delivery date before today and no receipt posted\
**Action:** Group by supplier and site; calculate financial exposure\
**Output:** Exception report to procurement manager; individual chase emails to suppliers

## Connecting Oracle ERP Cloud in Riff

1. In Oracle Security Console, create a service account with read access to Procurement and Payables modules
2. (Recommended) In Oracle IDCS, create a confidential application to get OAuth credentials
3. Open **Secrets** in Riff and store your base URL, Client ID, and Client Secret
4. In your app or agent, reference the secrets to authenticate and call the Oracle REST API
5. Ask your agent: *"Read all open purchase orders from Oracle ERP Cloud where the acknowledged delivery date is before today and no receipt has been posted"*

{% hint style="info" %}
**Oracle Cloud version:** These REST resources are available on Oracle ERP Cloud (Fusion) 24B and later. For older versions, REST endpoint paths may differ — check your Oracle documentation for the correct version-specific paths.
{% endhint %}


# Microsoft Dynamics 365

Connect Riff to Microsoft Dynamics 365 Finance & Operations to build procurement apps and agents on live ERP data.

Connect Riff to Microsoft Dynamics 365 Finance & Operations (F\&O) or Business Central to give your apps and agents live access to purchase orders, vendor invoices, inventory transactions, and cost centres.

## What you connect

Riff connects to Dynamics 365 using **Microsoft Azure Active Directory (Entra ID) OAuth 2.0** and the **Dynamics 365 OData REST API**. Authentication is via a registered Azure AD application with the correct Dynamics permissions.

**Credentials needed:**

| Credential        | Where to find it                                                                   |
| ----------------- | ---------------------------------------------------------------------------------- |
| Tenant ID         | Azure Portal → Azure Active Directory → Properties                                 |
| Client ID         | Azure Portal → App Registrations → your app                                        |
| Client Secret     | Azure Portal → App Registrations → your app → Certificates & Secrets               |
| Dynamics base URL | Your Dynamics environment URL (e.g. `https://yourcompany.operations.dynamics.com`) |

## What your apps and agents can read

| Dynamics entity        | OData path                           | Common use                                      |
| ---------------------- | ------------------------------------ | ----------------------------------------------- |
| Purchase Orders        | `PurchaseOrderHeadersV2`             | Confirmation status, delivery dates, totals     |
| Purchase Order Lines   | `PurchaseOrderLinesV2`               | Line items, quantities, prices, delivery dates  |
| Vendor Invoices        | `VendorInvoiceHeaderEntity`          | Invoice headers, approval status, payment terms |
| Vendor Invoice Lines   | `VendorInvoiceLineEntity`            | Line amounts, quantities, GL codes              |
| Inventory Transactions | `InventTransEntity`                  | Goods receipts, issues, adjustments             |
| Vendors                | `VendorsV2`                          | Vendor contacts, payment terms, currency        |
| Cost Centres           | `DimensionAttributeValueCombination` | Cost centre codes and descriptions              |

## What your agents can do

| Action                     | Example                                                                    |
| -------------------------- | -------------------------------------------------------------------------- |
| **Chase PO confirmations** | Query unconfirmed POs → send confirmation request to vendor → log response |
| **Invoice matching**       | Match vendor invoice lines against PO lines → approve or flag variances    |
| **Delivery monitoring**    | Track PO lines past due date with no inventory transaction → alert buyer   |
| **Cost centre reporting**  | Pull actuals vs. budget by cost centre → flag overspend                    |
| **Vendor performance**     | Calculate on-time delivery and invoice accuracy rates by vendor            |

## App use cases

### Purchase Order Status Tracker

Build an App that reads open POs from Dynamics 365 and shows confirmation status, expected delivery, and receipt status in a clean table. Buyers filter by vendor, site, or category. One-click to send a chase email or escalate to management — no Dynamics login needed.

### Vendor Invoice Approval Queue

Display pending vendor invoices with matched PO and goods receipt data side by side. AP clerks review, approve matched invoices, and route exceptions. The app posts approvals back to Dynamics via the OData API.

### Cost Centre Spend Dashboard

Pull cost centre actuals and budgets from Dynamics. Show year-to-date spend, remaining budget, and top cost categories. Finance managers drill down by GL code or cost centre. Automated weekly digest emailed to cost centre owners.

## Agent use cases

### Vendor Invoice Matching Agent

**Trigger:** Daily at 06:00\
**Input:** All open vendor invoices in Dynamics awaiting approval\
**Action:** Match each invoice line against the corresponding PO line and inventory transaction\
**Output:** Approve matched invoices automatically; escalate variances to AP with a match summary

### Overdue Delivery Monitor

**Trigger:** Daily at 07:00\
**Input:** PO lines where requested delivery date is before today and no inventory transaction posted\
**Action:** Group by vendor; calculate financial exposure; send chase request via Outlook\
**Output:** Slack digest to procurement team with unresolved items flagged for escalation

### Monthly Cost Centre Variance Report

**Trigger:** First working day of each month, 07:30\
**Input:** Cost centre actuals vs. budgets from Dynamics for the prior month\
**Action:** Calculate variance by cost centre and GL account; identify top overruns\
**Output:** Formatted report emailed to Finance team; exceptions flagged for cost centre owners

## Connecting Dynamics 365 in Riff

1. In Azure Portal, register a new application under your tenant's App Registrations
2. Assign the application the **Dynamics 365** API permission: `user_impersonation` (or appropriate application permission for unattended access)
3. Create a client secret and note the Tenant ID, Client ID, and Client Secret
4. Open **Secrets** in Riff and store all four credentials
5. In your app or agent, reference the secrets to authenticate via OAuth 2.0 and call the OData API
6. Ask your agent: *"Read all open purchase orders from Dynamics 365 where the delivery date is in the past and no inventory transaction has been posted"*

{% hint style="info" %}
**F\&O vs. Business Central:** The OData entities above are for Dynamics 365 Finance & Operations. Business Central uses a different OData V4 API (`/api/v2.0/`). The connection approach is the same; entity names and paths differ — check the [Business Central API reference](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/api-reference/v2.0/) for BC-specific entities.
{% endhint %}


# Custom Integrations

Connect Riff to freight carriers, EDI systems, supplier portals, compliance databases, and any external API your procurement team needs.

When the connector you need isn't in the native list, your agent can wire it up. Drop the service name and a link to its documentation in chat — the agent reads the docs, sets up authentication, and handles the API calls.

{% hint style="success" %}
**How to ask:** Tell your agent *"Integrate with \[service] so I can \[do this task]."* The agent researches the API, proposes the approach, and asks for your credentials once. Keys are stored in Secrets — never in code.
{% endhint %}

## ERP & Enterprise Systems

### Freight & Logistics

Track deliveries, calculate lead times, and trigger alerts when shipments are delayed — before they hit the ERP as exceptions.

* **DHL Express API** — shipment tracking, estimated delivery, customs status
* **FedEx Web Services** — real-time tracking, proof of delivery, transit time estimates
* **UPS Quantum View** — shipment visibility, exception notifications, delivery confirmation
* **project44** — multimodal freight visibility platform (road, rail, ocean, air)
* **Shippeo** — real-time road freight tracking and ETA predictions

**Typical use:** Agent monitors open PO delivery dates → queries freight API for current status → flags delays to procurement team before they become ERP exceptions

### EDI & B2B Messaging

Automate structured supplier data exchange without a full EDI VAN.

* **Cleo Integration Cloud** — EDI (X12, EDIFACT), AS2, SFTP orchestration
* **SPS Commerce** — pre-built retailer/supplier EDI connections
* **OpenText Trading Grid** — B2B integration network for purchase orders and invoices
* **AS2 / SFTP** — direct file exchange: 850 (PO), 855 (order acknowledgement), 856 (ASN), 810 (invoice)

**Typical use:** Agent reads inbound 855 order acknowledgement files → parses confirmation status → updates ERP and notifies buyer of any exceptions

### Supplier Portals & Compliance Databases

Query supplier data, certifications, and risk signals from external sources — without manual lookups.

* **Dun & Bradstreet (D\&B)** — supplier risk ratings, financial health, sanctions screening
* **EcoVadis** — supplier sustainability and ESG scorecards
* **Achilles** — supplier qualification and compliance data
* **Avetta** — contractor and supplier compliance management
* **REACH / RoHS compliance APIs** — chemical substance compliance for manufactured goods

**Typical use:** New supplier onboarding agent checks D\&B risk rating + EcoVadis score + REACH compliance before creating a vendor master record in the ERP

## Communication & Notifications

Keep your team and suppliers informed without manual emails.

### Email

Send order confirmations, delivery alerts, and exception notifications directly from your agents.

* **Microsoft Outlook / Microsoft 365** — send and read emails using your organisation's domain; the right choice for supplier-facing communication
* **SendGrid** — transactional email at scale; good for automated exception digests to internal teams
* **Postmark** — reliable transactional delivery with detailed open and bounce logging

### Messaging & Collaboration

* **Slack** — post procurement exception digests, approval requests, and delivery alerts to team channels
* **Microsoft Teams** — post notifications and adaptive cards to Teams channels for approval workflows

## AI & Document Processing

Process supplier documents, invoices, and contracts automatically — extract structured data without manual keying.

### Document Intelligence

* **Azure Document Intelligence (Form Recognizer)** — extract structured data from supplier invoices, delivery notes, and PO PDFs
* **Google Document AI** — invoice and receipt parsing, form extraction
* **Mindee** — invoice and receipt OCR with structured JSON output

**Typical use:** Agent receives invoice PDF by email → Document Intelligence extracts line items, PO reference, and totals → three-way match against ERP → approve or flag discrepancy

### AI Models

Useful for classification, summarisation, and decision support in procurement workflows.

* **OpenAI GPT-4o** — supplier email classification, contract clause extraction, exception summarisation
* **Anthropic Claude** — procurement policy compliance checking, supplier communication drafting
* **Azure OpenAI** — enterprise-grade deployment within your Azure tenant; data stays in region

<details>

<summary>What Riff handles when wiring a custom integration</summary>

* Stores API keys and credentials in **Secrets** — encrypted, never in code
* Sets up authentication (API key, OAuth 2.0, Basic Auth)
* Defines request and response structures
* Maps inputs and outputs across workflow steps
* Handles pagination, rate limits, retries, and error logging
* Sets up webhooks when needed and verifies signatures

</details>


# Configure a Custom Domain

This guide walks you through how to configure a custom domain for your app in Riff.

#### Before you start, make sure that:

* You are on a paid Riff plan
* Your project has been deployed
* You own a domain name (if not, purchase one from a domain provider)
* You have access to the DNS settings for the domain or subdomain

{% stepper %}
{% step %}
**Step 1: Request a custom domain in Riff**

1. Deploy your app.
2. Go to Settings → Production & Hosting → Custom Domain.
3. Enter your domain name and select your current DNS provider.
4. Submit the domain request.
   {% endstep %}

{% step %}
**Step 2: Update DNS records**

1. Go to your domain registrar and open the DNS settings (often called DNS or DNS Records).
2. In Riff, under Custom Domain settings, you’ll find the DNS values you need.
3. Add the provided records from riff to your DNS provider. Make sure the values match exactly to avoid setup issues.
   {% endstep %}

{% step %}
**Step 3: Wait for domain verification**

* DNS propagation can take a few minutes up to 24 hours.
* Double-check the DNS values. Use a tool like dnschecker.org￼ to verify propagation.
* Once the certificate is valid, you’ll see a green check mark in Riff.
  {% endstep %}

{% step %}
**Step 4: Final deployment**

* You’ll receive a notification when your domain is activated.
* Deploy your app one more time to connect it to the custom domain.
  {% endstep %}
  {% endstepper %}


# Archive (overview)

Pages in this folder are **legacy / archived**. They are hidden from the public docs (`hidden: true` frontmatter) and preserved here as a reference library — visuals to reuse, copy to validate against, history to consult.

## What lives here

| Folder                     | What it is                                              | Replaced by                              |
| -------------------------- | ------------------------------------------------------- | ---------------------------------------- |
| `getting-started/`         | Old Databutton-era getting-started pages                | `quick-start-tutorials/` + `guides2/`    |
| `quick-start-tutorials-1/` | Earlier staging of the new tutorials                    | `quick-start-tutorials/`                 |
| `quick-start-tutorials2/`  | Single orphan staging file                              | `quick-start-tutorials/`                 |
| `use-cases-1/`             | Original SaaS-framed use cases (Sales, Marketing, etc.) | `use-cases/` (ERP-first)                 |
| `integrations/`            | Old SaaS connectors (HubSpot, Slack, Notion, Stripe, …) | `integrations2/` (ERP-first)             |
| `guides/`                  | Misc legacy guides                                      | merged into other sections or deprecated |
| `features/`                | Legacy Databutton web-app-builder feature docs          | `reference/` (Diataxis-aligned)          |
| `team-workspace/page-1.md` | Orphan placeholder                                      | `team-workspace/README.md`               |

## Rules for the docs agent

* **Read-only.** Do not edit, expand, or restructure archive pages without explicit approval from Elle.
* **Do not link to archive pages from live docs.** They are hidden for a reason.
* **Do mine them for visuals and reference content** when drafting new pages.
* **Do not create new pages under `archive/`.** New work goes in the live sections.


# Getting Started (legacy)


# Quickstart App

Turn raw customer comments into themes, sentiment, and an action plan — zero setup.

You’ll get a one‑page app that ingests comments, clusters themes with example quotes, scores sentiment, and suggests your top 3 actions.

**Perfect for:** NPS comments, reviews, support snippets, survey answers.

### Features

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th></th></tr></thead><tbody><tr><td align="center"><p><i class="fa-message-lines" style="color:purple;">:message-lines:</i></p><p><strong>Feedback Analysis</strong></p></td><td>Upload a csv file containing review feedback.</td></tr><tr><td align="center"><p><i class="fa-brain-circuit" style="color:purple;">:brain-circuit:</i></p><p><strong>GPT-4 Integration</strong></p></td><td>Generate intelligent, context-aware insights using OpenAI’s GPT-4</td></tr></tbody></table>

{% embed url="<https://youtu.be/J978xAFUznM>" %}

### Create your feedback insights app

{% stepper %}
{% step %}
**Step 1 - Create an account**

Go to [riff.a](https://riff.hot/home)i and sign up.
{% endstep %}

{% step %}
**Step 2 - Describe your app**

Paste this into the prompt box:

> “A simple tool that analyses customer comments: deduplicate, detect sentiment, group into themes with example quotes, and suggest the top three actions. Show a clean dashboard and let me export results.”

Submit the prompt.
{% endstep %}

{% step %}
**Step 3 - Choose your data source**

When asked where the data lives, choose **CSV upload**.
{% endstep %}

{% step %}
**Step 4 - Confirm the plan → Build**

Riff will generate a **Riff Card** — the build plan. Review it. Adjust if needed. Click **Confirm plan → Build project**.
{% endstep %}

{% step %}
**Step 5 - Complete the tasks**

Your workspace is live. The agent[ creates a task list](/archive/features-legacy-databutton-web-app-builder/workspace-features/tasks) and runs until it needs input.

Typical first tasks:

* **Functional landing page**
* **API to process CSV**
* **Integrate AI**

{% hint style="info" %}
You can view these by **clicking on the**[ **Tasks tab** ](/archive/features-legacy-databutton-web-app-builder/workspace-features/tasks)a the top of the workspace.
{% endhint %}

The agent will complete the first few tasks until it needs input from you.

{% tabs %}
{% tab title="Task 1 - Functional landing page" %}
On the Preview tab, you will see a CSV upload interface.

{% hint style="info" %}
*Note: at this stage the uploader will not work, the agent has created tasks to complete this which we will see in later stages.*
{% endhint %}
{% endtab %}

{% tab title="Task 2 - API to process CSV" %}
{% hint style="info" %}
Note: an API is..... you can view this by clicking on +More >
{% endhint %}
{% endtab %}

{% tab title="Task 3 - Integrate AI " %}
The agent will ask you for your Open AI API key and then create a secure API to process the insights.

{% hint style="info" %}
You may be prompted for an **OpenAI API key** or an alternative model. Enter the key when asked, or tell the agent which model to use.
{% endhint %}
{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}
**Step 6 - Use your app**

Upload your CSV and view the dashboard with AI results: themes, sentiment, and next actions.

{% hint style="info" %}
**Tip:** Ask the agent to generate a sample file so you can test quickly:
{% endhint %}

> “Create a downloadable CSV that shows the expected format. Include a batch of sample rows.”

When it looks right: **Deploy → choose a short URL → Deploy app.** Share the link. Teammates can paste their own comments and get instant insights.
{% endstep %}

{% step %}
**Well done!**

You have successfully created your first application! Here's some next steps you can take:

* Continue building your app, ask the agent to give you some more ideas.
* [Explore use cases](broken://pages/MIAz0lHW1Akuydsahorm)
* [Learn about integrations](/integrations/about-integrations-v2)
* [Dive into the Riff features](broken://pages/HA948x2MtJje5JZkQzVG)
  {% endstep %}
  {% endstepper %}

<details>

<summary>How do I get an OpenAI API key?</summary>

1. **Go to** `platform.openai.com` and **sign in** (or **sign up**).
2. **Open** your profile (top-right) → **API keys**\
   – or jump to `platform.openai.com/api-keys`.
3. **Create new secret key.** Name it (optional). **Copy it now** — you won’t see it again.
4. **Add billing:** **Settings → Billing.** Add a card. Set usage limits.
5. **Store it in Riff:** when the agent asks, paste the key — or say “Store `OPENAI_API_KEY`,” and we’ll save it via our secrets tool.

{% hint style="info" %}
Treat it like a password. Don’t paste in code or logs. Rotate if leaked.
{% endhint %}

</details>

<details>

<summary><strong>Can I use another AI model?</strong></summary>

Yes. Tell the agent during planning or while it’s building. If it’s a new or uncommon model, ask the agent to research setup details with its research tool.

</details>

<details>

<summary>What if my app does not work?</summary>

</details>


# First prompt → first app

Say what you need → Riff plans tiny steps → builds the pieces → you tweak and ship.

Riff builds what you describe. The trick is knowing **how to describe**. Use these light mental models to turn a fuzzy idea into a prompt the agent can act on—without needing technical terms.

### How to ask for what you want

Say what goes in, what happens, what comes out, and when it runs. That’s it.

> "Build an app **\[dashboard/automation/agent]** that **takes \[inputs]**, **\[process]**, and **outputs \[outputs]**. **Trigger** it **\[when/how]**."

### The IPOT cheat sheet (at a glance)

<table data-header-hidden data-full-width="true"><thead><tr><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>I — Inputs</strong></td><td><strong>P — Process</strong></td><td><strong>O — Outputs</strong></td><td><strong>T — Triggers</strong></td></tr><tr><td>Where your data comes from.</td><td>What you do to the data.</td><td>What it looks like + where it goes.</td><td>How/when it runs.</td></tr><tr><td><ul><li>CSV upload</li><li>Google Sheet</li><li>HubSpot, Salesforce, Zendesk, Notion, etc.</li><li>Manual form input.</li><li>API</li></ul></td><td><ul><li>AI agent task</li><li>Summarize with AI</li><li>Classify with AI</li><li>Score</li><li>Calculate KPIs.</li><li>Search</li><li>Store</li></ul></td><td><ul><li>Charts/tables in UI</li><li>Downloadable CSV/XLSX</li><li>Slack or email message</li><li>Updated CRM record</li><li>New Google Sheet tab</li><li>API response.</li></ul></td><td><ul><li>Button in the UI</li><li>On file upload</li><li>Hourly/daily schedule</li><li>Webhook (e.g., “deal moved to Negotiation”).</li></ul></td></tr></tbody></table>

### Ready-to-use examples

{% columns fullWidth="true" %}
{% column %}

{% endcolumn %}

{% column %}

<p align="center"><a href="#sales"><strong>Sales</strong></a></p>

<p align="center"><strong>HubSpot Pipeline Dashboard</strong></p>

<p align="center">A dashboard that takes HubSpot deals as input, calculates pipeline KPIs (win rate, cycle time, stuck days), and outputs charts and tables in the UI with a CSV export. Trigger on button click and a daily 09:00 schedule.</p>

<p align="center"><a href="https://riff.new/home?prompt-template=A%20dashboard%20that%20takes%20HubSpot%20deals%20as%20input%2C%20calculates%20pipeline%20KPIs%20%28win%20rate%2C%20cycle%20time%2C%20stuck%20days%29%2C%20and%20outputs%20charts%20and%20tables%20in%20the%20UI%20with%20a%20CSV%20export.%20Trigger%20on%20button%20click%20and%20a%20daily%2009%3A00%20schedule" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}

{% columns fullWidth="true" %}
{% column width="50%" %}

<p align="center"><a href="broken://pages/w5UsPgiazfWXsDW4NHTW"><strong>Marketing</strong></a></p>

<p align="center"><strong>Marketing Attribution Dashboard</strong></p>

<p align="center">Build an app that takes GA4, Google Ads, and HubSpot as inputs, joins campaign spend to leads and revenue, and outputs a dashboard (with CPA, ROAS, lead quality). Trigger daily at 08:00 and via a "Refresh" button.</p>

<p align="center"><a href="https://riff.new/home?prompt-template=Build%20an%20app%20that%20takes%20GA4%2C%20Google%20Ads%2C%20and%20HubSpot%20as%20inputs%2C%20joins%20campaign%20spend%20to%20leads%20and%20revenue%2C%20and%20outputs%20a%20dashboard%20%28with%20CPA%2C%20ROAS%2C%20lead%20quality%29.%20Trigger%20daily%20at%2008%3A00%20and%20via%20a%20%22Refresh%22%20button" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column width="50%" %}

{% endcolumn %}
{% endcolumns %}

{% columns fullWidth="true" %}
{% column %}

{% endcolumn %}

{% column %}

<p align="center"><a href="broken://pages/064jT6oxV9Mdj2nLmU8V"><strong>Customer Experience</strong></a></p>

<p align="center"><strong>Support Insights Queue</strong></p>

<p align="center">Take Zendesk tickets and product events from Mixpanel as inputs, use AI to classify/tag/detect sentiment, and output a UI queue with filters and a weekly email of top drivers. Trigger on new ticket webhook and weekly Fri 17:00.</p>

<p align="center"><a href="https://riff.new/home?prompt-template=Take%20Zendesk%20tickets%20and%20product%20events%20from%20Mixpanel%20as%20inputs%2C%20use%20AI%20to%20classify%2Ftag%2Fdetect%20sentiment%2C%20and%20output%20a%20UI%20queue%20with%20filters%20and%20a%20weekly%20email%20of%20top%20drivers.%20Trigger%20on%20new%20ticket%20webhook%20and%20weekly%20Fri%2017%3A00" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}

{% columns fullWidth="true" %}
{% column width="50%" %}

<p align="center"><a href="broken://pages/SBYCWF5QzJ8Z7rO37uvp"><strong>Operations</strong></a></p>

<p align="center"><strong>Ticket Bottleneck Tracker</strong></p>

<p align="center">An app that takes tickets from Jira and Linear, cleans and groups them by team, calculates cycle time and SLA attainment, and outputs a bottleneck dashboard plus a daily Slack summary. Trigger hourly and on button.</p>

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20that%20takes%20tickets%20from%20Jira%20or%20Linear%2C%20cleans%20and%20groups%20them%20by%20team%2C%20calculates%20cycle%20time%20and%20SLA%20attainment%2C%20and%20outputs%20a%20bottleneck%20dashboard%20plus%20a%20daily%20Slack%20summary.%20Trigger%20hourly%20and%20on%20button" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column width="50%" %}

{% endcolumn %}
{% endcolumns %}

{% columns fullWidth="true" %}
{% column %}

{% endcolumn %}

{% column %}

<p align="center"><a href="broken://pages/FzVrhCqHmLYwAN40jW9A"><strong>Finance</strong></a></p>

<p align="center"><strong>Reconciliation Dashboard</strong></p>

<p align="center">Use Stripe and QuickBooks as inputs, reconcile payouts, calculate MRR/ARR, burn, and runway, and output board-ready charts and a downloadable CSV. Trigger monthly on the 1st at 07:00 and on demand.</p>

<p align="center"><a href="https://riff.new/home?prompt-template=Use%20Stripe%20and%20QuickBooks%20as%20inputs%2C%20reconcile%20payouts%2C%20calculate%20MRR%2FARR%2C%20burn%2C%20and%20runway%2C%20and%20output%20board-ready%20charts%20and%20a%20downloadable%20CSV.%20Trigger%20monthly%20on%20the%201st%20at%2007%3A00%20and%20on%20demand" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}

### **What the Riff agent does**

* Turns your goal into a clear plan with small tasks.
* Calls out assumptions and risks during the planning phase.
* Chooses integrations (native first; custom if needed).

### **What you do**

{% stepper %}
{% step %}
Describe what you need in the prompt box
{% endstep %}

{% step %}
Answer the agent's questions during the planning stage
{% endstep %}

{% step %}
Confirm the plan in the "Riff Card" or continue the chat to adjust scope.
{% endstep %}

{% step %}
Your workspace is live. The agent creates a task list and runs until it needs input.
{% endstep %}
{% endstepper %}


# Meet the Riff Agent

Your doer‑in‑chief. You say it. It ships.

Riff’s Agent plans, codes, tests, and deploys. It researches tools, wires APIs, manages tasks, and shows proof as it goes. You stay focused on outcomes.

{% stepper %}
{% step %}
**You describe the goal.** Short and plain.
{% endstep %}

{% step %}
**Agent plans.** Breaks work into small, verifiable tasks.
{% endstep %}

{% step %}
**Agent uses tools.** Edits code, runs tests, connects services, checks logs.
{% endstep %}

{% step %}
**Agent shows results.** Previews, diffs, dashboards, or logs.
{% endstep %}

{% step %}
**You respond.** Approve, nudge, or change scope.
{% endstep %}

{% step %}
**Agent ships.** Deploys when ready — or queues next tasks.
{% endstep %}
{% endstepper %}

### Explore Riff Features

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center">Workspace Features</td><td><a href="/archive/features-legacy-databutton-web-app-builder/workspace-features">Workspace Features</a></td></tr><tr><td align="center">App Preference Features</td><td><a href="/archive/features-legacy-databutton-web-app-builder/app-preference-features/app-management">App Management</a></td></tr><tr><td align="center">Integrations</td><td><a href="/integrations/about-integrations-v2">INTEGRATIONS</a></td></tr></tbody></table>


# Quick Start Tutorials (legacy staging)


# What you can build with Riff

## Agents, Automations and Dashboards

* **Automation (workflows):** follow predefined steps. "If X, then do Y."
* **Agents:** make judgment calls. "Given the goal and context, what should we do next?"
* **Dashboards:** see what's happening. "Show me the current state."

### When to use which

**Use a** [**Dashboard** ](/archive/quick-start-tutorials-legacy-staging/quickstart-dashboard)**when** you need visibility into current state.

> *Examples:* Sales pipeline by stage. Support tickets this week. Key metrics from multiple sources in one view.

**Use** [**Automation** ](/archive/quick-start-tutorials-legacy-staging/quick-start-automation)**when** the path is known and repeatable.

> *Examples:* Move a file. Post a message. Update a record. Send a daily digest.

**Use an** [**Agent** ](/archive/quick-start-tutorials-legacy-staging/quickstart-agent)**when** the path depends on context.

> *Examples:* Which deals need attention today? What's the best next step? Why did this metric spike?

### You can combine them

* A **dashboard** can trigger an agent to explain an anomaly
* An **automation** can update a dashboard's data source
* An **agent** can recommend which dashboard to check based on your question

Most apps use all three together.

### Quick decision guide

<table><thead><tr><th width="208">If you need to...</th><th width="184">Use...</th><th>Example</th></tr></thead><tbody><tr><td>See current state</td><td>Dashboard</td><td>Sales by region, support backlog, weekly signups</td></tr><tr><td>Track changes over time</td><td>Dashboard</td><td>Revenue trend, NPS score, active users</td></tr><tr><td>Run same steps repeatedly</td><td>Automation</td><td>Daily backup, file sync, scheduled report</td></tr><tr><td>React to events</td><td>Automation</td><td>New deal → Slack, form submit → email, ticket → assign</td></tr><tr><td>Understand context</td><td>Agent</td><td>"Why did churn spike?" "Which customers are at risk?"</td></tr><tr><td>Make decisions</td><td>Agent</td><td>Prioritize leads, recommend next action, triage issues</td></tr><tr><td>Combine data sources</td><td>Dashboard + Agent</td><td>Show metrics, ask agent "What should we focus on?"</td></tr></tbody></table>

### Get Started

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>Quickstart Agent</strong></td><td>Build an agent that searches the web, scores relevance using your criteria, and sends you a personalized digest. No feeds. No noise.</td><td><a href="/archive/quick-start-tutorials-legacy-staging/quickstart-agent">Quickstart: Agent</a></td></tr><tr><td align="center"><strong>Quickstart Automation</strong></td><td>Build a feedback form that stores submissions in your database, then an automation that runs daily to summarize all new feedback and posts it to Slack.</td><td><a href="/archive/quick-start-tutorials-legacy-staging/quick-start-automation">Quick Start: Automation</a></td></tr><tr><td align="center"><strong>Quickstart Dashboard</strong></td><td>Turn a Google Sheet into a live dashboard - no copy-paste, updates automatically.</td><td><a href="/archive/quick-start-tutorials-legacy-staging/quickstart-dashboard">Quickstart: Dashboard</a></td></tr></tbody></table>


# Quickstart: Agent

Get a Monday‑morning email with 5 hand‑picked articles matched to your interests, job, and reading style - fully automated.

You'll get an agent that searches the web, scores relevance using your criteria, and sends you a personalized digest. No feeds. No noise.

**Perfect for:** Knowledge workers drowning in newsletters, operators who need signal over noise, anyone building domain expertise.

### Features

* **Personalized search**: Agent decides which sources to search based on your topics
* **Smart filtering**: Scores articles against your job context and values
* **Autonomous scheduling**: Runs every Monday at 07:00 without you
* **Slack delivery**: Digest arrives in your [Slack ](/archive/integrations-legacy-saas-connectors/native-integrations/slack)channel with article summaries

### Create your news digest agent

{% stepper %}
{% step %}
**Step 1 - Create an account**

Go to **riff.ai** and sign up.
{% endstep %}

{% step %}
**Step 2 - Describe your agent**

Paste this into the prompt box:

> Build a personalised newsletter agent that uses OpenAI and Tavily MCP to search the internet for latest news and insights from my preferences. Compiling a daily newsletter that will be summarised and sent to Slack.
> {% endstep %}

{% step %}
**Step 3 - Confirm the plan → Build**

Riff will generate a Riff Card — the build plan. Review it. Adjust if needed. Click **Confirm plan → Build project**.
{% endstep %}

{% step %}
**Step 4 - Complete the tasks**

Your workspace is live.

You'll see a preview tab, this is the interface the agent has designed for your app.

{% hint style="info" %}
Note: This is a placeholder interface and will not function at this stage.
{% endhint %}

The agent creates a task list and runs until it needs input. Click on the [Tasks ](/archive/features-legacy-databutton-web-app-builder/workspace-features/tasks)tab to see the plan the agent has created to complete your application.

{% hint style="info" %}
Note: your tasks may look different.
{% endhint %}

* **Task 1** is already complete as the agent has created a user interface page.
* **Task 2** will typically be to set up your integrations for OpenAI, Tavily and Slack.
* **Task 3** create a backend for your app, this will be the process that will run. In this case, it will be searching and summarizing relevant content.
* **Task 4** is to make your personalise your agent search. In this case, the agent will:
  * Create an interface for you to enter your content
  * Set up the [database](/archive/features-legacy-databutton-web-app-builder/native-database) to store and retrieve your content preferences.
* **Tasks 5 & 6** create the [schedule ](/archive/features-legacy-databutton-web-app-builder/workspace-features/schedules)to trigger the process and deliver the outputs to [Slack](/archive/integrations-legacy-saas-connectors/native-integrations/slack).

The agent will ask for your **OpenAI API key and your Tavily MCP key**.
{% endstep %}

{% step %}
**Step 5 - Test your agent**

Click **"Run now"** to trigger the agent manually.

Check your Slack channel. You should receive a digest with 5 articles, scored and summarized based on your criteria.

**Not relevant enough?** Tell the agent in plain English:

* "Make the 'practical insights' filter stricter"
* "Ignore anything from corporate blogs"
* "Add 'AI regulation' as a topic"

The agent updates its logic. Test again.
{% endstep %}

{% step %}
**Step 6 - Deploy**

When it looks right: **Deploy** → choose a short URL → **Deploy app**.

Your agent now runs autonomously every Monday at 07:00. You can share the URL with teammates to build their own personalized digests.
{% endstep %}

{% step %}
**Well done!**

You've built an autonomous agent that researches, evaluates, and reports — without you lifting a finger!
{% endstep %}
{% endstepper %}

<details>

<summary>Get your Open AI API key</summary>

1. **Create an OpenAI Account**:

* Visit the OpenAI platform website and click on **Sign Up** if you don't have an account. You can also log in using your Google or Microsoft account if you prefer.

2. **Log In**:

* If you already have an account, click on **Log In** and enter your credentials.

3. **Access the API Keys Section**:

* Once logged in, click on your profile icon at the top-right corner of the page and select **View API Keys** from the dropdown menu.

4. **Create a New API Key**:

* On the API keys page, click on the **Create New Secret Key** button. This will generate a new API key for you.

</details>

<details>

<summary>Get your Tavily API Key</summary>

To **obtain your Tavily API key**, follow these steps:

* Go to the **Tavily website** (<https://tavily.com/>) and log in to your account. If you don’t have an account, sign up first.
* Navigate to the **API section** at <https://app.tavily.com/home>. Your API Key will be displayed in the “API Keys” section.
* If you need to create an additional API key, click on the "+" button next to the API keys section in your dashboard.
* You receive **free API Credits** every month, which allows for personal use and experimentation.

</details>

**Tip:**

* When prompted for your OpenAI key, get one at [platform.openai.com/api-keys](https://platform.openai.com/api-keys). Paste it in. The agent continues building.
* When prompted for your Tavily API key, get one at [app.tavily.com/home](https://app.tavily.com/home) Paste it in. The agent continues building.


# Quickstart: Dashboard

Turn a Google Sheet into a live dashboard - no copy-paste, updates automatically.

You'll connect to a Google Sheet (sales data, leads, metrics — whatever you track there), sync it to your database, and build a visual dashboard with charts and key stats. Update the sheet, refresh the dashboard. That's it.

**Perfect for:** Sales pipelines, marketing metrics, project tracking, inventory, any data living in spreadsheets.

### Features

* **Google Sheets connection**: Read data from any sheet you have access to
* **Automatic sync**: Pull fresh data with one click or on a schedule
* **Database storage**: Query and filter faster than Sheets formulas
* **Visual dashboard**: Charts, tables, key metrics — designed how you want
* **Live updates**: Change the sheet, refresh the dashboard, see new data

### Create your Google Sheets dashboard

{% stepper %}
{% step %}

#### Step 1 - Create an account

Go to **riff.ai** and sign up.
{% endstep %}

{% step %}

#### Step 2 - Describe your dashboard

Paste this into the prompt box:

> Build a sales dashboard connected to Google Sheets.
> {% endstep %}

{% step %}

#### Step 3 - Confirm the plan → Build

Riff will generate a Riff Card — the build plan. Review it. Adjust if needed. Click **Confirm plan → Build project**.
{% endstep %}

{% step %}

#### Step 4 - Connect Google Sheets integration

When the agent asks to connect Google Workspace, click **Connect**.

You'll authenticate with your Google account. This gives Riff read access to sheets you choose.

{% hint style="info" %}
**Tip:** The agent will ask for your Sheet ID. Get it from your Google Sheets URL: <https://docs.google.com/spreadsheets/d/{sheet\\>\_ id}/edit
{% endhint %}
{% endstep %}

{% step %}

#### Step 5 - Complete the tasks

Your workspace is live. The agent creates a task list and runs until it needs input.

Typical first tasks:

* Set up Google Sheets API integration
* Create database table (deals)
* Build sync endpoint (fetch from Sheets → save to DB)
* Create dashboard UI with charts
* Add refresh button and last-synced timestamp
* Calculate key metrics (pipeline value, win rate, etc.)

The agent handles most of this automatically. You may need to:

* Confirm the Sheet ID
* Choose which columns map to which fields
* Adjust chart types if you prefer different visuals

{% hint style="info" %}
**Tip:** If your Sheet has different columns, tell the agent: "My columns are: Opportunity Name, Value, Sales Stage, Assigned To, Created Date"
{% endhint %}

The agent updates the sync logic.
{% endstep %}

{% step %}

#### Step 6 - Test your dashboard

**Add sample data to your Google Sheet:**

Open your Google Sheet and add a few rows:

Save the sheet.
{% endstep %}

{% step %}

#### Step 7 - Optional: Schedule automatic syncs

Don't want to click Refresh? Ask the agent:

"Schedule automatic syncs every hour during business hours (09:00-18:00 Monday-Friday)"

The agent creates a scheduled job. Your dashboard stays fresh automatically.
{% endstep %}

{% step %}

#### Step 8 - Deploy

When it looks right: **Deploy** → choose a short URL → **Deploy app**.

Your dashboard is now live. Share the URL with your team. Everyone sees the same data, always up to date.
{% endstep %}
{% endstepper %}

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-type="files"></th></tr></thead><tbody><tr><td align="center"><strong>Marketing Metrics Dashboard</strong></td><td>Build a dashboard that takes a Google Sheet of HubSpot deals as input, calculates stage conversion rates, win rate, cycle time and stuck days by pipeline and owner, and outputs charts and a downloadable CSV. Trigger daily at 08:00 and via a Refresh button.</td><td></td></tr><tr><td align="center"><strong>Project Tracker</strong></td><td>Tasks by status (todo/in progress/done), overdue items, workload by person, upcoming deadlines</td><td></td></tr><tr><td align="center"><strong>Inventory Monitor</strong></td><td>Low stock alerts, items to reorder, stock value,<br>inventory turnover rate</td><td></td></tr><tr><td align="center"><strong>Weekly Team Metrics</strong></td><td>Churn risk (red if no login in 30 days), revenue by segment, NPS trend, customers needing attention</td><td></td></tr><tr><td align="center"><strong>Customer Health Scores</strong></td><td>Velocity trend, capacity vs actual, blocked work,<br>top performers this month</td><td></td></tr></tbody></table>


# Quick Start: Automation

Collect feedback all day, get one AI summary in Slack every morning - zero manual checking.

You'll get a feedback form that stores submissions in your database, then an automation that runs daily to summarize all new feedback and posts it to Slack. Your team sees patterns, not raw noise.

**Perfect for:** Internal feedback forms, customer suggestions, feature requests, daily stand ups.

### Features

* **Custom feedback form**: Built into your app, captures responses instantly
* **Database storage**: All submissions saved with timestamps
* **Scheduled automation**: Runs every morning at 09:00
* **AI summarization**: Groups themes, highlights urgent items, suggests next actions
* **Slack delivery**: One digest message to your chosen channel

### Create your feedback digest automation

{% stepper %}
{% step %}

#### Step 1 - Create an account

Go to **riff.ai** and sign up.
{% endstep %}

{% step %}

#### Step 2 - Describe your automation

Paste this into the prompt box:

Build a feedback collection system:

> Create a simple feedback form in the app (name, email, feedback text)
>
> Every day at 09:00, fetch all feedback submitted in the last 24 hours.
>
> AI summarizes the feedback into: → Common themes (group similar requests) → Urgent items flagged (based on tone/keywords like "broken", "urgent") → Top 3 suggested actions → Quote 2-3 standout pieces of feedback verbatim
>
> Post summary to Slack channel: #feedback-digest

{% hint style="info" %}
**Why the AI step matters:** Without it, you get 20 separate messages. With it, you see "8 people want dark mode" and "3 urgent billing issues" — actionable in seconds.
{% endhint %}

Submit the prompt.
{% endstep %}

{% step %}

#### Step 3 - Answer setup questions

The agent will ask clarifying questions. Example answers:

**"What fields should the feedback form include?"**\
→ "Name, email, and feedback text. Keep it simple."

**"Should we show past feedback in the app or just collect?"**\
→ "Just collect for now. The summary goes to Slack."
{% endstep %}

{% step %}

#### Step 4 - Confirm the plan → Build

Riff will generate a Riff Card — the build plan. Review it. Adjust if needed. Click **Confirm plan → Build project**.
{% endstep %}

{% step %}

#### Step 5 - Complete the tasks

Your workspace is live. The agent creates a task list and runs until it needs input.

Typical first tasks:

* Build feedback form UI page
* Create database table (feedback)
* Set up form submission API
* Integrate OpenAI for summarization
* Configure Slack webhook
* Create scheduled job for 09:00 daily

The agent will need two things from you:

1. **OpenAI API key** (get it at platform.openai.com/api-keys)
2. **Slack webhook URL** (get it at api.slack.com/messaging/webhooks)

**Tip:** When the agent asks for your Slack webhook:

* Go to your Slack workspace settings
* Create an incoming webhook for #feedback-digest
* Copy the URL and paste it in

The agent continues building.
{% endstep %}

{% step %}

#### Step 6 - Test your automation

**Test the form:**

1. Navigate to the Feedback page in your app
2. Submit 3-5 sample feedback entries with variety:

> "Love the new dashboard but it's slow to load"\
> "Can you add dark mode? My eyes hurt at night"\
> "URGENT: Payment failed but you charged me twice"\
> "Nice app, would be cool to export to CSV"\
> "Dark mode please! +1 to what others said"
> {% endstep %}

{% step %}

#### Step 7 - Deploy

When it looks right: **Deploy** → choose a short URL → **Deploy app**.

Your automation now:

* Accepts feedback 24/7 via the form
* Runs every morning at 09:00
* Posts AI summary to Slack automatically

Share the form URL with your team or customers. You're done
{% endstep %}
{% endstepper %}

### Variants for different use cases

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Daily standup aggregator</strong></td><td><strong>Form:</strong> "What did you ship yesterday? Any blockers?"<br></td><td><strong>AI step:</strong> Group by team, highlight blockers, suggest who can help.</td><td><strong>Slack:</strong> #standup-digest at 09:00</td></tr><tr><td><strong>Bug report triage</strong></td><td><strong>Form:</strong> "Describe the bug, steps to reproduce, severity"</td><td><strong>AI step:</strong> Categorize by product area, score severity, extract reproduction steps.</td><td><strong>Slack:</strong> #bugs at 10:00, with @mentions for responsible engineers</td></tr><tr><td><strong>Feature request tracker</strong></td><td><strong>Form:</strong> "What feature do you want? Why?"</td><td><strong>AI step:</strong> Detect duplicate requests, rank by frequency + business impact.</td><td><strong>Slack:</strong> #product every Monday at 09:00 with vote counts</td></tr></tbody></table>


# Quick Start: Automation v2

Build an automation that pulls ERP exceptions every morning and posts a structured digest to Slack or Teams — unconfirmed deliveries, invoice mismatches, overdue POs.

You'll build an automation that runs at 07:00 every working day, queries your ERP for procurement exceptions, and posts a structured digest to Slack or Microsoft Teams. Your team starts the day knowing exactly what needs attention — without logging into the ERP.

**Time to build:** 20–30 minutes\
**Good for:** Procurement and operations teams on SAP, Infor LN/M3, Oracle, or Dynamics who want a morning briefing on exceptions — without manually running ERP reports.

***

### What you'll build

* **ERP query:** Three exception types pulled each morning — unconfirmed deliveries, invoice/PO mismatches, overdue purchase orders
* **Structured digest:** Grouped by exception type, sorted by urgency, with buyer/owner named
* **Scheduled trigger:** Runs at 07:00, Monday–Friday
* **Alert output:** Posted to Slack `#procurement-daily` or your Teams channel

***

### Step 1 — Create your workspace

Go to **riff.ai**, sign in, and click **New Agent**.

***

### Step 2 — Describe your automation

Paste this into the chat:

> Build a daily procurement exceptions automation. Every working day at 07:00, query our ERP and pull three exception categories:
>
> 1. Open purchase orders where delivery confirmation has not been received and expected delivery date is within the next 7 days or already past.
> 2. Invoices where the amount does not match the PO within a 2% tolerance.
> 3. Purchase orders where expected delivery date has passed and no goods receipt has been posted.
>
> Format the output as a structured digest grouped by exception type. For each item include: supplier name, PO or invoice number, value (EUR), days until/past due, and buyer responsible. Sort each group by urgency (most critical first). Post the digest to Slack channel #procurement-daily.

**Adjust before you submit:**

* Add your ERP: "We use Infor LN" / "Our system is SAP S/4HANA" / "We're on Oracle Fusion"
* Switch channels: "Post to Microsoft Teams channel Procurement Operations"
* Adjust tolerance: "Use a 1% tolerance for invoice matching"

***

### Step 3 — Review and confirm the plan

Riff generates a Riff Card showing how it will connect to your ERP, what exception queries it will run, the schedule it will set, and where it will send the output. Adjust anything that doesn't fit. Click **Confirm plan → Build**.

***

### Step 4 — Connect your ERP

**Option A — ERP API**\
Infor ION, SAP OData, Oracle REST, or Dynamics 365 APIs. Add credentials in **Integrations → Secrets**.

**Option B — Reporting database**\
Read-only access to your ERP reporting schema. The agent writes the queries and runs them on schedule.

**Option C — Scheduled export**\
Your ERP exports exception reports to SharePoint, SFTP, or a network folder. Tell the agent the file location and format.

***

### Step 5 — Connect your alert channel

**Slack:** Go to **Integrations → Slack**, click Connect, and choose the channel.

**Microsoft Teams:** Provide a Teams incoming webhook URL (from channel settings → Connectors).

**Email:** Tell the agent: "Send by email to <procurement@yourcompany.com>" — it configures the SMTP connection.

***

### Step 6 — Test it

Click **Run now**. Check your Slack or Teams channel for a message like:

```
📋 Procurement Daily — 14 May 2026

UNCONFIRMED DELIVERIES (3 items)
• Müller GmbH | PO 4500123456 | Gaskets | €12,400 | Due: today | Buyer: J. Schmidt
• Nordic Parts AB | PO 4500123457 | Bearings | €8,200 | 2 days overdue | Buyer: A. Berg

INVOICE MISMATCHES (2 items)
• Schulz Logistics | INV-2026-0881 vs PO 4500123450 | Variance: €340 (2.8%) | Finance: M. Weber

OVERDUE POs (5 items)
• ...
```

**If data looks wrong**, tell the agent:

* "Only flag invoices over €500 variance"
* "Add the plant code to each line"
* "Group by buyer instead of exception type"
* "Skip exceptions already resolved in the last 24 hours"

***

### Step 7 — Set the schedule

Go to **Automations → Schedules** and confirm the trigger is set to `07:00, Monday–Friday`. Adjust for your business calendar.

***

### Step 8 — Deploy

Click **Deploy**. The automation runs every working morning. Your team gets a structured exceptions briefing without anyone running a single ERP report.

***

### Variants

| Variant                       | What it does                                                                                              |
| ----------------------------- | --------------------------------------------------------------------------------------------------------- |
| **Invoice-only digest**       | Run at 08:00, query only invoice mismatches above €1,000. Post to `#finance-exceptions`.                  |
| **End-of-day wrap**           | Run at 17:00, pull what was resolved today vs still open. Give buyers a closing summary.                  |
| **Weekly supplier scorecard** | Run Monday morning. Aggregate last week's delivery performance by supplier. Share with category managers. |

***

### What's next

* [**Briefing your agent**](https://github.com/ElleNealAI/riff-docs/blob/main/archive/getting-started/briefing-your-agent-v2/README.md) — Extend this automation into a full agent that takes action on exceptions, not just reports them
* [**Quickstart Dashboard**](https://github.com/ElleNealAI/riff-docs/blob/main/archive/quick-start-tutorials/quickstart-dashboard/README.md) — Build a live exceptions dashboard alongside your digest
* [**Quickstart Agent**](https://github.com/ElleNealAI/riff-docs/blob/main/archive/quick-start-tutorials/quickstart-agent/README.md) — Turn the digest into an agent that chases suppliers automatically


# Riff Automations

## Build automations you can see.

Automations are repeatable flows that move data, join steps, and export results. In Riff, you describe the job in plain English, the agent plans tiny tasks, wires integrations, and gives you a clear preview before anything runs. Schedules make it hands‑off; logs make it understandable.

{% embed url="<https://youtu.be/I4bswn6Lwk0>" %}

### **Why Riff Automations**

* **Plain‑English to production.** No box‑and‑arrow editors. Say what goes in, what happens, what comes out, and when it runs. Riff handles the plumbing.
* **Transparent by design.** See the plan (Riff Card), watch tasks execute, inspect logs, and open the live preview.
* **Built into your app.** Every automation ships with a UI so your team can run it on‑demand and see results.
* **One‑click alerts.** Send updates to Slack, Gmail, or Google Calendar in seconds.

### **When to use Automations vs Apps vs Agents**

* **Automations:** recurring, multi‑step flows (summaries, syncs, alerts).
* **Apps:** interactive dashboards & tools.
* **Agents:** background helpers that analyze/draft/act on a schedule.
* [Build your first automation](/archive/quick-start-tutorials-legacy-staging/quick-start-automation)


# Templates

Get started with these ready to use templates.

1. Clone the template
2. Copy the Google Sheet file to your Google Drive
3. Follow the agent prompts to connect the sheet and set up authentication
4. Done!

Each of these templates can be customised on your data. If you connect a file with different fields, the agent will detect this and build the dashboard accordingly.

### Sales Pipeline & Stage Conversion Dashboard

A sales analytics dashboard that pulls deal data from Google Sheets to surface conversion rates, win rates, cycle times, and stuck deal alerts by pipeline and owner - helping sales leaders identify bottlenecks and accelerate revenue.

{% columns %}
{% column %}

<p align="center"><a href="https://riff.new/fork?pt=pt-oA4W9naH2sHmC5ha" class="button primary" data-icon="clone">Clone this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://docs.google.com/spreadsheets/d/15SsLAVcaanU8_ObemNHG9GndIQn04EM0Xnn163Jm2oU/edit?usp=sharing" class="button primary" data-icon="file-spreadsheet">Get the Google Sheet</a></p>
{% endcolumn %}
{% endcolumns %}


# What you can build with Riff (v2 staging)

Apps and Agents — understand which build type fits your procurement or operations job before you start.

## Two build types. One platform.

Riff gives procurement and operations teams two things to build:

* **Apps** — a screen your team opens and uses. Dashboards, exception trackers, approval portals. Humans drive the interaction. AI is a feature inside the app.
* **Agents** — a configured worker that runs a job. Monitors your ERP, chases confirmations, flags exceptions, posts digests. Runs on its own and escalates only what it cannot decide.

***

### When to build an App

Build an App when a human needs to **see something, review something, or decide something**.

> *Procurement and ops examples:*
>
> * Open PO status dashboard — your team opens it each morning
> * Supplier delivery performance tracker — updated daily from your ERP
> * Invoice exception review portal — finance approves or queries each line
> * GR/IR reconciliation view — accountants match goods receipts to invoices

***

### When to build an Agent

Build an Agent when the job **runs on its own and acts on what it finds**.

> *Procurement and ops examples:*

> * Supplier confirmation chaser — detects unconfirmed deliveries, sends reminders, logs responses
> * Invoice matching agent — compares invoices to POs, flags mismatches, routes to the right approver
> * Delivery exception monitor — runs daily, alerts buyers to overdue POs, escalates aged items
> * RFQ outreach agent — sends requests to supplier list, collects quotes, summarises responses

***

### Quick decision guide

| If you need to...             | Build...        | Procurement example                                    |
| ----------------------------- | --------------- | ------------------------------------------------------ |
| See live ERP data             | App / Dashboard | Open POs, delivery status, GR/IR balance               |
| Track KPIs over time          | App / Dashboard | On-time delivery rate %, invoice cycle time            |
| Monitor and chase             | Agent           | Supplier confirmation chaser, overdue delivery monitor |
| Match, reconcile, flag        | Agent           | Invoice matching agent, GR/IR reconciliation agent     |
| Combine visibility and action | App + Agent     | Dashboard shows exceptions; Agent chases open items    |

***

### You can combine them

Most procurement teams use both:

* An **App** shows your team the current state — open POs, delivery performance, invoice queue
* An **Agent** works in the background — chasing confirmations, matching invoices, flagging exceptions

***

### Get started

| Build type    | What you'll build                                                                         | Link                                                                                                                           |
| ------------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **Agent**     | Monitor overdue deliveries from your ERP and alert your team automatically every morning. | [Quickstart Agent](https://github.com/ElleNealAI/riff-docs/blob/main/quick-start-tutorials/quickstart-agent/README.md)         |
| **Dashboard** | Supplier delivery performance dashboard connected to your ERP.                            | [Quickstart Dashboard](https://github.com/ElleNealAI/riff-docs/blob/main/quick-start-tutorials/quickstart-dashboard/README.md) |


# Use Cases (legacy SaaS framing)


# Sales

## Hit every quota and never drop a follow-up

Build the dashboards, automations and AI agents you need to help you close faster.

{% columns fullWidth="false" %}
{% column width="50%" %}

{% endcolumn %}

{% column width="50%" %}
**Custom analytics and dashboards**

**Know your deal flow inside and out**

Execute sales exactly the way you want – with sales pipeline, performance, and activity at your fingertips. Build on top of your existing tech stack like Hubspot, Attio or Salesforce.

<p align="center"><a href="https://riff.new/home?prompt-template=A%20dashboard%20to%20track%20deals%20and%20pipeline%20health%20with%20HubSpot%20data" class="button primary">Launch dashboard template →</a></p>
{% endcolumn %}
{% endcolumns %}

{% columns fullWidth="false" %}
{% column width="50%" %}
**Automate your sales processes**

**Accelerate your cycle with less manual work**

Build automations that connect to your tech stack to discover new leads, enrich and score them, and move deals to closed-won. Integrated with your sales, marketing and customer experience tech stacks like Hubspot, Google Analytics, Zendesk and more.

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20score%20leads%20using%20HubSpot%20data%20and%20suggest%20next%20steps" class="button primary">Launch automation template →</a></p>
{% endcolumn %}

{% column width="50%" %}

{% endcolumn %}
{% endcolumns %}

{% columns fullWidth="false" %}
{% column %}

{% endcolumn %}

{% column %}
**Tailored AI agents**

**Use AI to 10x your productivity**

Build the AI apps and agents you need to produce more, know more, and sell more. Cover everything from lead research to email writing to meeting follow ups. Connected to the productivity, workflow and customer tech stack you use like Gmail, Notion, Hubspot and more.

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20generate%20and%20send%20tailored%20outbound%20emails%20with%20AI" class="button primary">Launch agent template →</a></p>
{% endcolumn %}
{% endcolumns %}

## Explore Sales Use Cases

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th><select multiple><option value="eVoxYvWKzPLl" label="HubSpot" color="blue"></option><option value="HE7V9X3ZV0z8" label="Zapier" color="blue"></option><option value="LesyXy6iJsuK" label="SalesForce" color="blue"></option><option value="TjZuwQxYlnU7" label="Slack" color="blue"></option><option value="ZyKWR3hT9tif" label="Mixpanel" color="blue"></option><option value="8CiJGyXoFFM0" label="Gmail" color="blue"></option></select></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><strong>Pipeline Tracker</strong></td><td>Stay on top of every deal with live pipeline visibility. Track deal velocity, engagement, and conversion health in one dashboard.</td><td><span data-option="eVoxYvWKzPLl">HubSpot, </span><span data-option="TjZuwQxYlnU7">Slack, </span><span data-option="ZyKWR3hT9tif">Mixpanel</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/05f5689c1bf0bdc74cb94a914a2a25352f696484-1536x1024.png">https://cdn.sanity.io/images/6hc0cb85/production/05f5689c1bf0bdc74cb94a914a2a25352f696484-1536x1024.png</a></td></tr><tr><td align="center"><strong>Lead Scoring</strong></td><td>Use AI to score leads by behavior and engagement, and get clear next-step recommendations to move opportunities forward.</td><td><span data-option="HE7V9X3ZV0z8">Zapier, </span><span data-option="eVoxYvWKzPLl">HubSpot, </span><span data-option="LesyXy6iJsuK">SalesForce</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/fa830f29e1ab95a37b39c443cc8cf9f0e60c0aa3-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format">https://cdn.sanity.io/images/6hc0cb85/production/fa830f29e1ab95a37b39c443cc8cf9f0e60c0aa3-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format</a></td></tr><tr><td align="center"><strong>Outbound Messaging</strong></td><td>Send hyper-tailored outbound messages fast. Databutton uses your CRM data to craft tone, content, and follow-ups with automations.</td><td><span data-option="8CiJGyXoFFM0">Gmail, </span><span data-option="eVoxYvWKzPLl">HubSpot, </span><span data-option="ZyKWR3hT9tif">Mixpanel</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/c24e5e36788883bc2b1cc44b34945b093918f66c-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format">https://cdn.sanity.io/images/6hc0cb85/production/c24e5e36788883bc2b1cc44b34945b093918f66c-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format</a></td></tr></tbody></table>

{% columns %}
{% column valign="middle" %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20track%20deals%20and%20pipeline%20health%20with%20live%20velocity%20and%20engagement%20dashboards%20using%20HubSpot%2C%20Slack%20and%20Mixpanel" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20score%20leads%20by%20behavior%20and%20engagement%20and%20recommend%20next%20steps%20using%20HubSpot%2C%20Salesforce%20and%20Zapier" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20generate%20and%20send%20hyper-tailored%20outbound%20emails%20using%20Gmail%20for%20delivery%2C%20HubSpot%20for%20context%20and%20Mixpanel%20for%20tracking%20and%20follow-ups" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}


# Marketing

## Drive pipeline without guesswork

Build the dashboards, automations, and AI agents that turn spend into revenue.

{% columns fullWidth="false" %}
{% column width="50%" %}

{% endcolumn %}

{% column width="50%" %}
**Custom analytics and dashboards**

**See the full funnel, not scattered tabs**

\
Track ad spend → leads → pipeline → revenue in one place. Blend web, campaign, and CRM data to spot what’s working and what’s wasting budget. Build on top of tools you already use like GA4, Google Ads, Meta Ads, LinkedIn Ads, HubSpot, Webflow, and BigQuery.

<p align="center"><a href="https://riff.new/home?prompt-template=A%20dashboard%20to%20track%20full-funnel%20performance%20from%20ad%20spend%20to%20pipeline%20and%20revenue%20using%20GA4%2C%20Google%20Ads%2C%20Meta%20Ads%2C%20LinkedIn%20Ads%20and%20HubSpot%20data" class="button primary">Launch dashboard template →</a></p>
{% endcolumn %}
{% endcolumns %}

{% columns fullWidth="false" %}
{% column width="50%" %}
**Automate your marketing pipelines**

**Move faster than your campaign calendar**

Auto-sync audiences, score and route MQLs, pace budgets, and alert the team when targets slip. Connect ad platforms, analytics, and CRM so monthly reporting happens every day - no spreadsheets required.

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20auto-sync%20audiences%2C%20score%20and%20route%20MQLs%2C%20pace%20budgets%2C%20and%20alert%20on%20underperforming%20campaigns%20using%20HubSpot%20and%20ad%20platform%20APIs" class="button primary">Launch automation template →</a></p>
{% endcolumn %}

{% column width="50%" %}

{% endcolumn %}
{% endcolumns %}

{% columns fullWidth="false" %}
{% column %}

{% endcolumn %}

{% column %}
**Tailored AI agents**

**Your 24/7 growth assistants**

Spin up agents for creative briefs, on-brand copy, UTM checks, weekly performance summaries, and “why did CPA spike?” root-cause analysis. Plug into Gmail, Docs, Sheets, HubSpot, and Slack so work ships, not stalls.

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20generate%20on-brand%20copy%2C%20weekly%20performance%20summaries%2C%20and%20root-cause%20analysis%20of%20CPA%20spikes%20using%20data%20from%20GA4%20and%20HubSpot" class="button primary">Launch agent template →</a></p>
{% endcolumn %}
{% endcolumns %}

## Explore Marketing Use Cases

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th><select multiple><option value="eVoxYvWKzPLl" label="HubSpot" color="blue"></option><option value="HE7V9X3ZV0z8" label="Zapier" color="blue"></option><option value="LesyXy6iJsuK" label="SalesForce" color="blue"></option><option value="TjZuwQxYlnU7" label="Slack" color="blue"></option><option value="ZyKWR3hT9tif" label="Mixpanel" color="blue"></option><option value="8CiJGyXoFFM0" label="Gmail" color="blue"></option><option value="W0Qum6G6bNU1" label="Mailchimp" color="blue"></option><option value="HN9eIb0gY9jy" label="Facebook" color="blue"></option><option value="fxajcSE29paP" label="Google" color="blue"></option><option value="EHGrVoroEWdD" label="Twitter" color="blue"></option></select></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><strong>Campaign Manager</strong></td><td>Launch and optimize multi-channel campaigns fast. Use AI to target, write, schedule, and auto-adjust budgets based on performance.</td><td><span data-option="W0Qum6G6bNU1">Mailchimp, </span><span data-option="HN9eIb0gY9jy">Facebook, </span><span data-option="fxajcSE29paP">Google</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/504055b00a2194bbddf16cea7c3a92d18909044f-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format">https://cdn.sanity.io/images/6hc0cb85/production/504055b00a2194bbddf16cea7c3a92d18909044f-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format</a></td></tr><tr><td align="center"><strong>Lead Tracker</strong></td><td>Capture and nurture leads from every channel. Score intent, trigger follow-ups, and sync to your CRM automatically.</td><td><span data-option="eVoxYvWKzPLl">HubSpot, </span><span data-option="LesyXy6iJsuK">SalesForce, </span><span data-option="HE7V9X3ZV0z8">Zapier</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/22b61323c116a89cc359c2dfb4180e1ec03264da-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format">https://cdn.sanity.io/images/6hc0cb85/production/22b61323c116a89cc359c2dfb4180e1ec03264da-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format</a></td></tr><tr><td align="center"><strong>Analytics Dashboard</strong></td><td>See marketing performance in real time. Track spend, conversions, and ROAS across channels in one dashboard.</td><td><span data-option="fxajcSE29paP">Google, </span><span data-option="HN9eIb0gY9jy">Facebook, </span><span data-option="EHGrVoroEWdD">Twitter</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/6ade81cbb38d96c35fa137c37ee2c2ddfeccb6c0-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format">https://cdn.sanity.io/images/6hc0cb85/production/6ade81cbb38d96c35fa137c37ee2c2ddfeccb6c0-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format</a></td></tr></tbody></table>

{% columns %}
{% column valign="middle" %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20plan%20launch%20and%20optimize%20multi-channel%20campaigns%20with%20targeting%20creative%20and%20budget%20automation%20using%20Mailchimp%2C%20Facebook%20and%20Google" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20capture%20score%20and%20nurture%20leads%20with%20automated%20follow-ups%20and%20CRM%20sync%20using%20HubSpot%2C%20Salesforce%20and%20Zapier" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20monitor%20marketing%20spend%20conversions%20and%20ROAS%20across%20channels%20in%20real%20time%20using%20Google%2C%20Facebook%20and%20Twitter" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}


# Operations

## Keep the engine humming — with fewer handoffs

Build the dashboards, automations, and AI agents that unblock teams.

{% columns fullWidth="false" %}
{% column width="50%" %}

{% endcolumn %}

{% column width="50%" %}
**Custom analytics and dashboards**

**Total visibility on how work moves**

Track cycle time, SLA attainment, throughput, and bottlenecks across tools. Unite data from Jira/Linear, Asana, Notion, Airtable, and Slack to see where time (and money) goes.

<p align="center"><a href="https://riff.new/home?prompt-template=A%20dashboard%20to%20track%20cycle%20time%2C%20SLA%20attainment%2C%20throughput%20and%20bottlenecks%20across%20Jira%2C%20Linear%2C%20Asana%20and%20Slack" class="button primary">Launch dashboard template →</a></p>
{% endcolumn %}
{% endcolumns %}

{% columns fullWidth="false" %}
{% column width="50%" %}
**Automate your ops pipelines**

**Make the right thing happen automatically**

Auto-create tickets, route approvals, sync inventories, and update status pages. Trigger workflows from forms, webhooks, or schedules so work flows without nudges.

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20auto-create%20and%20route%20tickets%2C%20collect%20approvals%2C%20and%20sync%20status%20across%20tools%20triggered%20by%20forms%2C%20webhooks%20or%20schedules" class="button primary">Launch automation template →</a></p>
{% endcolumn %}

{% column width="50%" %}

{% endcolumn %}
{% endcolumns %}

{% columns fullWidth="false" %}
{% column %}

{% endcolumn %}

{% column %}
**Tailored AI agents**

**Standard operating partner (that actually follows the SOP)**

Agents that QC data, watch for anomalies, draft incident updates, summarize standups, and nudge owners before deadlines hit. Integrated with Slack, Notion, Jira/Linear, and email.

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20watch%20for%20anomalies%2C%20draft%20incident%20updates%2C%20summarize%20standups%20and%20nudge%20owners%20before%20deadlines%2C%20connected%20to%20Slack%20and%20Jira" class="button primary">Launch agent template →</a></p>
{% endcolumn %}
{% endcolumns %}

## Explore Operations Use Cases

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th><select multiple><option value="eVoxYvWKzPLl" label="HubSpot" color="blue"></option><option value="HE7V9X3ZV0z8" label="Zapier" color="blue"></option><option value="LesyXy6iJsuK" label="SalesForce" color="blue"></option><option value="TjZuwQxYlnU7" label="Slack" color="blue"></option><option value="ZyKWR3hT9tif" label="Mixpanel" color="blue"></option><option value="8CiJGyXoFFM0" label="Gmail" color="blue"></option><option value="CLuLVBVXB16e" label="Airtable" color="blue"></option><option value="qiCdNRp4V0Sg" label="Notion" color="blue"></option><option value="WhbzLLNtSKCO" label="Google" color="blue"></option><option value="8m57RYJK0DK6" label="Asana" color="blue"></option><option value="n4QL4J1djnYQ" label="Trello" color="blue"></option><option value="xXnKfK7RuHWr" label="Stripe" color="blue"></option></select></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>Workflow Manager</strong></td><td>Automate complex processes end-to-end. Orchestrate tasks, approvals, and SLAs with AI that adapts to your rules.</td><td><span data-option="HE7V9X3ZV0z8">Zapier, </span><span data-option="CLuLVBVXB16e">Airtable, </span><span data-option="qiCdNRp4V0Sg">Notion</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/23500d7e61b321b14e2666d503250ca3ff840b71-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format">https://cdn.sanity.io/images/6hc0cb85/production/23500d7e61b321b14e2666d503250ca3ff840b71-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format</a></td><td></td></tr><tr><td align="center"><strong>Resource Tracker</strong></td><td>Track people, assets, and capacity in one place. Forecast utilization, spot bottlenecks, and rebalance work automatically.</td><td><span data-option="WhbzLLNtSKCO">Google, </span><span data-option="8m57RYJK0DK6">Asana, </span><span data-option="n4QL4J1djnYQ">Trello</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/25d98f8f0d7e6042f2a0db912e5bb24fb39e763c-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format">https://cdn.sanity.io/images/6hc0cb85/production/25d98f8f0d7e6042f2a0db912e5bb24fb39e763c-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format</a></td><td></td></tr><tr><td align="center"><strong>Efficiency Dashboard</strong></td><td>Monitor KPIs and operational health in real time. Surface anomalies, alerts, and trends with AI explanations.</td><td><span data-option="ZyKWR3hT9tif">Mixpanel, </span><span data-option="WhbzLLNtSKCO">Google, </span><span data-option="xXnKfK7RuHWr">Stripe</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/480e9750838ed1017147b0624532e0192e3f5770-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format">https://cdn.sanity.io/images/6hc0cb85/production/480e9750838ed1017147b0624532e0192e3f5770-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format</a></td><td></td></tr></tbody></table>

{% columns %}
{% column valign="middle" %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20design%20and%20automate%20multi-step%20workflows%20with%20tasks%20approvals%20and%20SLAs%20using%20Zapier%2C%20Airtable%20and%20Notion" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20track%20people%20assets%20and%20capacity%20forecast%20utilization%20and%20rebalance%20work%20using%20Google%2C%20Asana%20and%20Trello" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20monitor%20KPIs%20and%20operational%20metrics%20surface%20anomalies%20and%20alerts%20with%20AI%20explanations%20using%20Google%2C%20Mixpanel%20and%20Stripe" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}


# Finance

## Know your numbers, control your cash

Build the dashboards, automations, and AI agents that close faster and forecast better.

{% columns fullWidth="false" %}
{% column width="50%" %}

{% endcolumn %}

{% column width="50%" %}
**Custom analytics and dashboards**

**One source of financial truth**

Track revenue, cash runway, MRR/ARR, burn, unit economics, and cohort health. Blend Stripe/Chargebee/Paddle with QuickBooks/Xero and your data warehouse for board-ready views—any day of the month.

<p align="center"><a href="https://riff.new/home?prompt-template=A%20dashboard%20to%20track%20revenue%2C%20MRR%2C%20ARR%2C%20cash%20runway%2C%20burn%2C%20unit%20economics%20and%20cohort%20health%20using%20Stripe%20and%20QuickBooks%20data" class="button primary">Launch dashboard template →</a></p>
{% endcolumn %}
{% endcolumns %}

{% columns fullWidth="false" %}
{% column width="50%" %}
**Automate your finance pipelines**

**Stop reconciling by hand**

Auto-categorize expenses, reconcile payouts, post journal entries, chase invoices, and flag anomalies. Trigger monthly closes, dunning sequences, and variance alerts so nothing slips.

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20auto-categorize%20expenses%2C%20reconcile%20payouts%2C%20post%20journal%20entries%2C%20chase%20invoices%20and%20alert%20on%20anomalies%20across%20Stripe%20and%20Xero" class="button primary">Launch automation template →</a></p>
{% endcolumn %}

{% column width="50%" %}

{% endcolumn %}
{% endcolumns %}

{% columns fullWidth="false" %}
{% column %}

{% endcolumn %}

{% column %}
**Tailored AI agents**

**From close assistant to CFO co-pilot**

Generate roll-forward schedules, budget vs. actuals commentary, scenario plans, and cash forecasts. Pulls from Sheets, your ledger, and billing systems; exports clean narratives you can share with the team.

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20generate%20budget%20vs%20actuals%20commentary%2C%20scenario%20plans%20and%20cash%20forecasts%20pulling%20from%20Sheets%2C%20your%20ledger%20and%20billing%20systems" class="button primary">Launch agent template →</a></p>
{% endcolumn %}
{% endcolumns %}

## Explore Finance Use Cases

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th><select multiple><option value="eVoxYvWKzPLl" label="HubSpot" color="blue"></option><option value="HE7V9X3ZV0z8" label="Zapier" color="blue"></option><option value="LesyXy6iJsuK" label="SalesForce" color="blue"></option><option value="TjZuwQxYlnU7" label="Slack" color="blue"></option><option value="ZyKWR3hT9tif" label="Mixpanel" color="blue"></option><option value="8CiJGyXoFFM0" label="Gmail" color="blue"></option><option value="sERDGOpIiSuI" label="Quickbooks" color="blue"></option><option value="QfcQ2IcnG1jz" label="Stripe" color="blue"></option><option value="lZPlWES0ymCs" label="Bank" color="blue"></option><option value="FkdXS4YEKLtB" label="Google" color="blue"></option></select></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><strong>Expense Tracker</strong></td><td>Auto-categorize expenses from cards and receipts, flag policy issues, and export clean reports to QuickBooks and your accounting stack.</td><td><span data-option="sERDGOpIiSuI">Quickbooks, </span><span data-option="QfcQ2IcnG1jz">Stripe, </span><span data-option="lZPlWES0ymCs">Bank</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/171a869a414007a3cc65a0911761d1746cee23a9-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format">https://cdn.sanity.io/images/6hc0cb85/production/171a869a414007a3cc65a0911761d1746cee23a9-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format</a></td></tr><tr><td align="center"><strong>Revenue Forecaster</strong></td><td>Forecast revenue from Stripe payments and Salesforce pipeline with explainable AI. Compare scenarios and see drivers by segment.</td><td><span data-option="LesyXy6iJsuK">SalesForce, </span><span data-option="QfcQ2IcnG1jz">Stripe, </span><span data-option="FkdXS4YEKLtB">Google</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/16830882aee6e64f0f56f1c09fb5ff1f3d5aa062-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format">https://cdn.sanity.io/images/6hc0cb85/production/16830882aee6e64f0f56f1c09fb5ff1f3d5aa062-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format</a></td></tr><tr><td align="center"><strong>Budget Manager</strong></td><td>Set budgets, track variance, route approvals, and stop overruns before they happen, with alerts and audit-friendly controls.</td><td><span data-option="sERDGOpIiSuI">Quickbooks, </span><span data-option="QfcQ2IcnG1jz">Stripe, </span><span data-option="FkdXS4YEKLtB">Google</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/a3cbc89a62ad4635ccf638f607c5fecbca352410-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format">https://cdn.sanity.io/images/6hc0cb85/production/a3cbc89a62ad4635ccf638f607c5fecbca352410-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format</a></td></tr></tbody></table>

{% columns %}
{% column valign="middle" %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20auto-categorize%20expenses%20from%20cards%20and%20receipts%20flag%20policy%20issues%20and%20export%20reports%20using%20QuickBooks%2C%20Stripe%20and%20bank%20feeds" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20forecast%20revenue%20using%20Stripe%20payments%20and%20Salesforce%20pipeline%3B%20compare%20scenarios%20and%20seasonality%20with%20explainable%20AI" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20set%20budgets%20track%20variance%20route%20approvals%20and%20prevent%20overruns%20with%20alerts%20using%20QuickBooks%2C%20Stripe%20and%20Google%20Sheets" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}


# Customer Experience

## Delight customers at scale-up

Build the dashboards, automations, and AI agents that reduce time-to-resolution.

{% columns fullWidth="false" %}
{% column width="50%" %}

{% endcolumn %}

{% column width="50%" %}
**Custom analytics and dashboards**

**Know every customer signal**

Monitor CSAT/NPS, backlog, first response/solve time, and top drivers by product or plan. Blend Zendesk/Intercom/Gorgias with product analytics and CRM so you see issues and impact, not just tickets.

<p align="center"><a href="https://riff.new/home?prompt-template=A%20dashboard%20to%20monitor%20CSAT%2C%20NPS%2C%20first%20response%20time%2C%20resolution%20time%2C%20backlog%20and%20top%20drivers%20by%20product%20or%20plan%20using%20Zendesk%20and%20product%20analytics" class="button primary">Launch dashboard template →</a></p>
{% endcolumn %}
{% endcolumns %}

{% columns fullWidth="false" %}
{% column width="50%" %}
**Automate your CX pipelines**

**Customers shouldn’t wait for “next steps”**

Auto-triage, tag, and route conversations; escalate by SLA; trigger refunds/RMAs; and sync notes back to CRM. Keep agents focused on the edge cases, not the busywork.

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20auto-triage%2C%20tag%20and%20route%20conversations%2C%20escalate%20by%20SLA%2C%20trigger%20refunds%20or%20RMAs%2C%20and%20sync%20notes%20back%20to%20CRM" class="button primary">Launch automation template →</a></p>
{% endcolumn %}

{% column width="50%" %}

{% endcolumn %}
{% endcolumns %}

{% columns fullWidth="false" %}
{% column %}

{% endcolumn %}

{% column %}
**Tailored AI agents**

**Compose, resolve, and learn faster**

Draft empathic replies, search knowledge, summarize long threads, and propose next actions. Agents learn from your help center, macros, and product docs - connected to Zendesk, Intercom, Slack, and HubSpot.

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20draft%20empathic%20replies%2C%20search%20knowledge%2C%20summarize%20long%20threads%20and%20propose%20next%20actions%20connected%20to%20Zendesk%2C%20Intercom%20and%20HubSpot" class="button primary">Launch agent template →</a></p>
{% endcolumn %}
{% endcolumns %}

## Explore Customer Experience Use Cases

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th><select multiple><option value="eVoxYvWKzPLl" label="HubSpot" color="blue"></option><option value="HE7V9X3ZV0z8" label="Zapier" color="blue"></option><option value="LesyXy6iJsuK" label="SalesForce" color="blue"></option><option value="TjZuwQxYlnU7" label="Slack" color="blue"></option><option value="ZyKWR3hT9tif" label="Mixpanel" color="blue"></option><option value="8CiJGyXoFFM0" label="Gmail" color="blue"></option><option value="EjfXVgh1JWKZ" label="Zendesk" color="blue"></option><option value="2c7rv0ZH8mQu" label="Intercom" color="blue"></option><option value="atWD0VcAtIZ4" label="Stripe" color="blue"></option></select></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><strong>Support Bot</strong></td><td>Resolve tickets instantly with an AI agent that answers FAQs, routes complex issues, and posts updates to Slack.</td><td><span data-option="EjfXVgh1JWKZ">Zendesk, </span><span data-option="2c7rv0ZH8mQu">Intercom, </span><span data-option="TjZuwQxYlnU7">Slack</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/49f858e62692293f14d58e9719d1e2b9e7163ae5-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format">https://cdn.sanity.io/images/6hc0cb85/production/49f858e62692293f14d58e9719d1e2b9e7163ae5-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format</a></td></tr><tr><td align="center"><strong>Satisfaction Tracker</strong></td><td>Track CSAT and NPS in real time. Auto-tag themes by channel, alert owners on dips, and sync insights back to your CRM.</td><td><span data-option="eVoxYvWKzPLl">HubSpot, </span><span data-option="LesyXy6iJsuK">SalesForce, </span><span data-option="HE7V9X3ZV0z8">Zapier</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/798702dab6b78f0b8892546474f1fa7bdb527aed-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format">https://cdn.sanity.io/images/6hc0cb85/production/798702dab6b78f0b8892546474f1fa7bdb527aed-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format</a></td></tr><tr><td align="center"><strong>Personalization Engine</strong></td><td>Personalize every touchpoint. Use behavior and purchase data to tailor content, offers, and journeys - with automated testing and lift tracking.</td><td><span data-option="eVoxYvWKzPLl">HubSpot, </span><span data-option="LesyXy6iJsuK">SalesForce, </span><span data-option="atWD0VcAtIZ4">Stripe</span></td><td><a href="https://cdn.sanity.io/images/6hc0cb85/production/7db112a5a4070a826cca0520d87fdce8ea28466c-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format">https://cdn.sanity.io/images/6hc0cb85/production/7db112a5a4070a826cca0520d87fdce8ea28466c-1536x1024.png?w=2000&#x26;fit=max&#x26;auto=format</a></td></tr></tbody></table>

{% columns %}
{% column valign="middle" %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20provide%20instant%20support%20with%20an%20AI%20chatbot%20that%20answers%20FAQs%20routes%20complex%20issues%20and%20posts%20updates%20to%20Slack%20using%20Zendesk%2C%20Intercom%20and%20Slack" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20measure%20CSAT%20and%20NPS%20analyze%20feedback%20themes%20by%20channel%20and%20alert%20owners%20on%20sentiment%20drops%20using%20HubSpot%2C%20Salesforce%20and%20Zapier" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20personalize%20content%20offers%20and%20journeys%20using%20behavioral%20and%20purchase%20data%20with%20orchestration%20and%20testing%20using%20HubSpot%2C%20Salesforce%20and%20Stripe" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}


# Integrations (legacy SaaS connectors)


# About Integrations

Plug in. Power up. Build faster.

Riff snaps into the tools you already use. Choose **Native Integrations** for one‑click setup, or wire up **Custom APIs** when you need something bespoke.

### About integrations

Integrations extend what your app can do — send email, move money, sync data, trigger workflows.

{% hint style="info" %}
**What’s an API?** A deal between apps. You send a request. It returns data or does work.
{% endhint %}

### Explore Integrations

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>Native</strong></td><td>Prebuilt, opinionated, secure by default.</td><td><a href="/archive/integrations-legacy-saas-connectors/native-integrations">Native Integrations</a></td></tr><tr><td align="center"><strong>Custom</strong></td><td>Call any external API with your keys and rules.</td><td><a href="/archive/integrations-legacy-saas-connectors/custom-integrations">Custom Integrations</a></td></tr></tbody></table>


# Native Integrations

Get going in minutes. OAuth in. Ship.

####

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><strong>Authentication</strong></td><td>Password, sessions, route guards, password reset.</td><td></td><td><a href="https://raw.githubusercontent.com/stack-auth/stack-auth/dev/.github/assets/logo.png">https://raw.githubusercontent.com/stack-auth/stack-auth/dev/.github/assets/logo.png</a></td></tr><tr><td align="center"><strong>Database</strong></td><td>Production‑grade SQL, migrations, and queries.</td><td></td><td><a href="https://tse3.mm.bing.net/th/id/OIP.VHKxMX1iV40b1QX6wrv1PgHaEa?rs=1&#x26;pid=ImgDetMain&#x26;o=7&#x26;rm=3">https://tse3.mm.bing.net/th/id/OIP.VHKxMX1iV40b1QX6wrv1PgHaEa?rs=1&#x26;pid=ImgDetMain&#x26;o=7&#x26;rm=3</a></td></tr><tr><td align="center"><strong>HubSpot</strong></td><td></td><td><a href="/archive/integrations-legacy-saas-connectors/native-integrations/hubspot">HubSpot</a></td><td><a href="https://logos-world.net/wp-content/uploads/2022/01/HubSpot-Emblem.png">https://logos-world.net/wp-content/uploads/2022/01/HubSpot-Emblem.png</a></td></tr><tr><td align="center">Slack</td><td></td><td><a href="/archive/integrations-legacy-saas-connectors/native-integrations/slack">Slack</a></td><td><a href="https://images.unsplash.com/photo-1496200186974-4293800e2c20?crop=entropy&#x26;cs=srgb&#x26;fm=jpg&#x26;ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHw3fHxzbGFja3xlbnwwfHx8fDE3NjA2OTAyNDV8MA&#x26;ixlib=rb-4.1.0&#x26;q=85">https://images.unsplash.com/photo-1496200186974-4293800e2c20?crop=entropy&#x26;cs=srgb&#x26;fm=jpg&#x26;ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHw3fHxzbGFja3xlbnwwfHx8fDE3NjA2OTAyNDV8MA&#x26;ixlib=rb-4.1.0&#x26;q=85</a></td></tr><tr><td align="center"><strong>Google Drive</strong></td><td></td><td><a href="/archive/integrations-legacy-saas-connectors/native-integrations/google-drive">Google Drive</a></td><td><a href="https://tse1.mm.bing.net/th/id/OIP.e-X3Wnz8TwyeEYVC8NjAaAHaEo?rs=1&#x26;pid=ImgDetMain&#x26;o=7&#x26;rm=3">https://tse1.mm.bing.net/th/id/OIP.e-X3Wnz8TwyeEYVC8NjAaAHaEo?rs=1&#x26;pid=ImgDetMain&#x26;o=7&#x26;rm=3</a></td></tr><tr><td align="center"></td><td></td><td><a href="/archive/integrations-legacy-saas-connectors/native-integrations/google-calendar">Google Calendar</a></td><td><a href="https://i0.wp.com/www.alphr.com/wp-content/uploads/2019/04/Picture1.png?w=787&#x26;ssl=1">https://i0.wp.com/www.alphr.com/wp-content/uploads/2019/04/Picture1.png?w=787&#x26;ssl=1</a></td></tr><tr><td align="center"><strong>Notion</strong></td><td></td><td><a href="/archive/integrations-legacy-saas-connectors/native-integrations/google-sheets">Google Sheets</a></td><td><a href="https://www.liveagent.com/app/uploads/2020/11/google-sheets-logo-485x262.png">https://www.liveagent.com/app/uploads/2020/11/google-sheets-logo-485x262.png</a></td></tr><tr><td align="center"><strong>Stripe</strong></td><td></td><td></td><td><a href="https://th.bing.com/th/id/R.dad0a0296b3fb785260ce7802be67612?rik=hD3xA7kN1MwWyw&#x26;pid=ImgRaw&#x26;r=0">https://th.bing.com/th/id/R.dad0a0296b3fb785260ce7802be67612?rik=hD3xA7kN1MwWyw&#x26;pid=ImgRaw&#x26;r=0</a></td></tr><tr><td align="center"><strong>Notion</strong></td><td></td><td><a href="/archive/integrations-legacy-saas-connectors/native-integrations/notion">Notion</a></td><td><a href="https://tse2.mm.bing.net/th/id/OIP.fmkDpi9xGuQ1RMrxDKfz4wHaEH?rs=1&#x26;pid=ImgDetMain&#x26;o=7&#x26;rm=3">https://tse2.mm.bing.net/th/id/OIP.fmkDpi9xGuQ1RMrxDKfz4wHaEH?rs=1&#x26;pid=ImgDetMain&#x26;o=7&#x26;rm=3</a></td></tr></tbody></table>

### How it works

Two ways to add integrations:

1. **Let the agent drive.** If a task needs an integration, the agent prompts you to connect. Approve once. Done.
2. **Add proactively.** Click **+ More → Integrations** and pick a provider.

After connect, the agent:

* Checks scopes (keep them tight).
* Runs a quick test (e.g., “Create Sheet,” “List Deals”).
* Uses the integration in the build plan and tasks — no manual wiring.

#### Typical flows

* Ingest a **CSV** → write rows to **Google Sheets**.
* Charge a card with **Stripe Checkout**; store receipts in **Database**.
* Pull **HubSpot** contacts → enrich → push updates back.
* Turn **Notion** pages into tasks; sync status both ways.

> Coverage grows. If you don’t see your tool, use a Custom API or ask the agent to add it.


# HubSpot

How to build a Riff application with Hubspot integration.

Connect your HubSpot account once and let Riff read the CRM objects you already use - contacts, companies, deals, tickets, quotes, line items, lists, and (if enabled) e-commerce orders - so you can build dashboards, automations, and agents on top of real data.

Riff uses HubSpot OAuth scopes to request “read” access only.

<figure><img src="https://images.gitbook.com/__img/dpr=2,width=371,onerror=redirect,fit=contain,format=auto,signature=1493262511/https%3A%2F%2Flogos-world.net%2Fwp-content%2Fuploads%2F2022%2F01%2FHubSpot-Emblem.png" alt="" width="375"><figcaption></figcaption></figure>

<details>

<summary>HubSpot Scopes</summary>

* **Contacts & People** - Contacts and related activities
* **Deals & Sales** -Deals (+ associations to contacts/companies, line items)
* **Companies & Organizations** *-* Company records & properties.
* **Appointments & Scheduling** *-*&#x4D;eetings/appointments objects & activities.
* **E-commerce & Orders** *-*&#x4F;rders & line items for commerce reporting.
* **Education & Training** *-*&#x43;ourses (if enabled in your portal).
* **Real Estate** - Listings (if enabled).
* **Goals & Performance** *-* Sales goals/performance objects.
* **Quotes & Proposals** - Quotes and associated line items.
* **Lists & Organization** *-* Lists API for segmentation.
* **Marketing** *-* Campaigns/UTMs, attribution fields via contacts/deals.
* **Communication** *-* Engagements (emails/calls/meetings/notes) tied to CRM objects.

</details>

{% hint style="danger" %}
HubSpot OAuth asks users to approve specific “resources” (scopes). Apps get tokens with only those permissions
{% endhint %}

{% embed url="<https://youtu.be/3RVR9EdQ_tg>" %}

## Explore HubSpot Use Cases

### Dashboards

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><strong>Lifecycle &#x26; Stage Conversion Dashboard</strong></td><td>Build a dashboard that takes HubSpot deals and contacts as inputs, calculates stage conversion rates, cycle time and win rate by pipeline and owner, and outputs charts and a downloadable CSV. Trigger daily at 08:00 and on button.</td><td></td></tr><tr><td align="center"><strong>Campaign Attribution Dashboard</strong></td><td>Build a dashboard that uses HubSpot contacts, deals and UTMs to show campaign-to-revenue attribution (CPA, ROAS, funnel conversion). Trigger daily at 09:00 and via a Refresh button.</td><td></td></tr><tr><td align="center"><strong>Revenue &#x26; churn Dashboard</strong></td><td>See marketing performance in real time. Track spend, conversions, and ROAS across channels in one dashboard.</td><td></td></tr></tbody></table>

{% columns %}
{% column valign="middle" %}

<p align="center"><a href="https://riff.new/home?prompt-template=Build%20a%20dashboard%20that%20takes%20HubSpot%20deals%20and%20contacts%20as%20inputs%2C%20calculates%20stage%20conversion%20rates%2C%20cycle%20time%20and%20win%20rate%20by%20pipeline%20and%20owner%2C%20and%20outputs%20charts%20and%20a%20downloadable%20CSV.%20Trigger%20daily%20at%2008%3A00%20and%20on%20button" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=Build%20a%20dashboard%20that%20uses%20HubSpot%20contacts%2C%20deals%20and%20UTMs%20to%20show%20campaign-to-revenue%20attribution%20%28CPA%2C%20ROAS%2C%20funnel%20conversion%29.%20Trigger%20daily%20at%2009%3A00%20and%20via%20a%20Refresh%20button" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=Use%20HubSpot%20deals%20%28closed-won%2Flost%29%20and%20line%20items%20as%20inputs%20to%20calculate%20MRR%2FARR%2C%20expansion%2Fcontraction%2C%20and%20churn%20cohorts%2C%20and%20output%20a%20board-ready%20dashboard.%20Trigger%20monthly%20on%20the%201st%20at%2007%3A00" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}

### Automations

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><p><strong>Deal stage</strong></p><p><strong>(alerts → Slack)</strong></p></td><td>An automation that listens for HubSpot deal stage changes, summarizes context (amount, owner, days in stage), and posts a Slack alert with next-step suggestions. Trigger on the HubSpot webhook.</td><td></td></tr><tr><td align="center"><p><strong>Contact hygiene</strong></p><p><strong>(dedupe + completeness)</strong></p></td><td>An app to find and merge duplicate HubSpot contacts by email/domain, flag missing key fields, and export a cleaned CSV for review. Trigger on button and weekly at 07:00.</td><td></td></tr><tr><td align="center"><p><strong>Ticket triage</strong></p><p><strong>(AI classify + priority)</strong></p></td><td>An app that reads HubSpot tickets, uses AI to classify and set priority, and posts a Slack summary for high-priority issues with links back to the ticket. Trigger on new ticket webhook.</td><td></td></tr></tbody></table>

{% columns %}
{% column valign="middle" %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20automation%20that%20listens%20for%20HubSpot%20deal%20stage%20changes%2C%20summarizes%20context%20%28amount%2C%20owner%2C%20days%20in%20stage%29%2C%20and%20posts%20a%20Slack%20alert%20with%20next-step%20suggestions.%20Trigger%20on%20the%20HubSpot%20webhook" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20to%20find%20and%20merge%20duplicate%20HubSpot%20contacts%20by%20email%2Fdomain%2C%20flag%20missing%20key%20fields%2C%20and%20export%20a%20cleaned%20CSV%20for%20review.%20Trigger%20on%20button%20and%20weekly%20at%2007%3A00" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20app%20that%20reads%20HubSpot%20tickets%2C%20uses%20AI%20to%20classify%20and%20set%20priority%2C%20and%20posts%20a%20Slack%20summary%20for%20high-priority%20issues%20with%20links%20back%20to%20the%20ticket.%20Trigger%20on%20new%20ticket%20webhook" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}

### AI Agents

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><p><strong>Follow-up Email</strong></p><p><strong>(from deal activity)</strong></p></td><td>An agent that reads the last HubSpot activity on a deal, drafts a tailored follow-up email with next steps, and logs the draft as a note. Trigger on button from the deal view.</td><td></td></tr><tr><td align="center"><p><strong>List Segmentation</strong></p><p><strong>Agent</strong></p></td><td>An AI agent that reads HubSpot lists and contact properties, proposes improved segments with plain-language rules, previews member counts, and exports a CSV of members per segment. Trigger on button.</td><td></td></tr><tr><td align="center"><p><strong>Deal Risk &#x26;</strong></p><p><strong>Next-best-action</strong></p></td><td>See marketing performance in real time. Track spend, conversions, and ROAS across channels in one dashboard.</td><td></td></tr></tbody></table>

{% columns %}
{% column valign="middle" %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20agent%20that%20reads%20the%20last%20HubSpot%20activity%20on%20a%20deal%2C%20drafts%20a%20tailored%20follow-up%20email%20with%20next%20steps%2C%20and%20logs%20the%20draft%20as%20a%20note.%20Trigger%20on%20button%20from%20the%20deal%20view" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20AI%20agent%20that%20reads%20HubSpot%20lists%20and%20contact%20properties%2C%20proposes%20improved%20segments%20with%20plain-language%20rules%2C%20previews%20member%20counts%2C%20and%20exports%20a%20CSV%20of%20members%20per%20segment.%20Trigger%20on%20button" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=An%20AI%20agent%20that%20reads%20active%20HubSpot%20deals%2C%20flags%20at-risk%20ones%20based%20on%20days%20in%20stage%2C%20last%20activity%2C%20and%20amount%2C%20and%20generates%20next-best-action%20suggestions%20plus%20short%20email%2Fcall%20drafts.%20Output%20a%20Slack%20summary%20to%20%23sales-leads%20with%20links.%20Trigger%20daily%20at%2008%3A00%20and%20on%20button" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}


# Slack

Connect Slack to Riff to send smart notifications, summarise conversations, start or join channels, and let agents post useful updates where your team already works. Riff handles the OAuth, stores tokens securely, and wires Slack into your apps, automations, and agents.

### What you can build (fast)

* Deal stage alerts → Slack (HubSpot) — posts context + next steps.
* Ticket triage → Slack summary for high-priority issues.
* Ops bottleneck tracker → daily Slack summary.

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><strong>Deal &#x26; ticket alerts → Slack</strong></td><td>Create a Slack alert automation that listens for HubSpot deal stage changes and support ticket priority changes, summarizes context (amount, owner, days in stage or ticket priority), recommends next best action, and posts to the specified Slack channel with links back to the source record. Trigger on webhook and on button.</td><td></td></tr><tr><td align="center"><strong>Daily/weekly summaries</strong></td><td>Create a daily and weekly Slack summary that sends pipeline, support, and operations roll-ups to a chosen channel at scheduled times, including key KPIs, top changes since last report, and a downloadable CSV. Trigger weekdays 08:00 and weekly Friday 16:00.</td><td></td></tr><tr><td align="center"><p><strong>Agent</strong></p><p><strong>Updates</strong></p></td><td>Create a Slack agent that drafts incident updates, stand up summaries, and owner nudges based on recent activity and deadlines, then posts drafts to a review channel for approval before sending to the target channel. Trigger hourly and on button.</td><td></td></tr></tbody></table>

{% columns %}
{% column valign="middle" %}

<p align="center"><a href="https://riff.new/home?prompt-template=Create%20a%20Slack%20alert%20automation%20that%20listens%20for%20HubSpot%20deal%20stage%20changes%20and%20support%20ticket%20priority%20changes%2C%20summarizes%20context%20%28amount%2C%20owner%2C%20days%20in%20stage%20or%20ticket%20priority%29%2C%20recommends%20next%20best%20action%2C%20and%20posts%20to%20the%20specified%20Slack%20channel%20with%20links%20back%20to%20the%20source%20record.%20Trigger%20on%20webhook%20and%20on%20button" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=Create%20a%20daily%20and%20weekly%20Slack%20summary%20that%20sends%20pipeline%2C%20support%2C%20and%20operations%20roll-ups%20to%20a%20chosen%20channel%20at%20scheduled%20times%2C%20including%20key%20KPIs%2C%20top%20changes%20since%20last%20report%2C%20and%20a%20downloadable%20CSV.%20Trigger%20weekdays%2008%3A00%20and%20weekly%20Friday%2016%3A00" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=Create%20a%20Slack%20agent%20that%20drafts%20incident%20updates%2C%20standup%20summaries%2C%20and%20owner%20nudges%20based%20on%20recent%20activity%20and%20deadlines%2C%20then%20posts%20drafts%20to%20a%20review%20channel%20for%20approval%20before%20sending%20to%20the%20target%20channel.%20Trigger%20hourly%20and%20on%20button" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}

* **Deal & ticket alerts → Slack:** e.g., post next-step suggestions when a HubSpot deal changes stage; escalate high-priority tickets with links back to the source system.
* **Daily/weekly summaries:** send pipeline, support, or ops roll-ups into a channel at scheduled times.
* **Agent updates:** have agents draft incident notes, stand-up summaries, or “nudge owners” messages.
* **Ad-hoc posts from your app:** buttons in your UI can post formatted Slack messages or files.

<details>

<summary>Permissions (scopes) Riff requests in Slack</summary>

Riff asks for tightly-scoped access so it can read conversations you add it to and post messages/files when your app or automations need to act. Here’s the high-level view of what the Slack integration can **view** and **do** once installed:

<table><thead><tr><th width="200">Category</th><th>Scope summary</th></tr></thead><tbody><tr><td>Channels &#x26; DMs (read)</td><td>View messages/content in public channels, private channels, DMs/GDMs that Riff is added to; see basic channel info; view files and emoji reactions in those conversations.</td></tr><tr><td>Workspace info (read)</td><td>View people in your workspace; see workspace name/domain/icon; view user groups.</td></tr><tr><td>Messaging (write)</td><td>Send messages as <strong>@riff_integrations</strong>; start DMs/GDMs; upload/edit/delete files as Riff; add/edit reactions.</td></tr><tr><td>Channel management</td><td>Join public channels; manage private channels Riff has been added to; create new channels when needed.</td></tr></tbody></table>

> Riff uses OAuth; tokens are stored securely and handled by the Integrations system (no hard-coding secrets in code).

</details>

### Prerequisites

* Slack workspace where you can install apps (or request admin approval).
* A Riff workspace (sign-in at useriff.ai).
* A channel (public or private) the app can join, or permission to DM.

### Connect Slack to Riff (two easy ways)

1. **Let the agent drive**\
   When a task needs Slack, the agent prompts you to connect. Click the link, approve scopes once, done. The agent then tests the connection (“quick test”) and uses it in your build plan automatically.
2. **Add proactively**\
   In your workspace, go **+ More → Integrations → Slack**, authorise, and you’re ready. Riff manages tokens, scopes, and basic checks for you.

> Tip: If an OAuth popup is blocked in the embedded preview, open your app in a new browser tab and retry the connect step.

### How Riff wires Slack for you (under the hood)

* Sets up OAuth and stores tokens securely in **Secrets/Integrations**.
* Adds minimal scopes, verifies them, and runs a simple test action.
* Exposes Slack as a usable service inside your tasks, automations, and agents (no manual boilerplate).

### Security notes

* Tokens are managed by Riff’s Integrations system; you don’t paste keys into code.
* Frontend code never sees secrets; all Slack actions run server-side.
* Keep scopes tight; Riff requests only what’s needed for your flows and validates them.

### FAQ

<details>

<summary><strong>Can it read every message in the workspace?</strong></summary>

No — it can read messages/files only in channels, private channels, and DMs/GDMs that it has been added to.

</details>

<details>

<summary><strong>How do I revoke access?</strong></summary>

Remove the app from your Slack **Installed Apps** and/or disconnect it from **Integrations** in your Riff workspace; Riff stops using the token immediately.

</details>

#### Related docs & features

* [**Integrations overview** (how connects work; typical flows).](/archive/integrations-legacy-saas-connectors/about-integrations)
* [**Schedules** (set up timed posts).](/archive/features-legacy-databutton-web-app-builder/workspace-features/schedules)


# Notion

Connect **Notion** to Riff to view and edit selected pages, create sub-pages, and let agents read/write structured content. Riff handles the OAuth, stores tokens securely, and wires Notion into your apps, automations, and agents.

### What you can build (fast)

* **Knowledge ops dashboards:** status of documentation, open edits, owner SLAs.
* **Content pipelines:** intake → review → publish, with AI clean-ups and checklists.
* **Daily/weekly summaries:** post “what changed in Notion” to Slack or email.

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><strong>Editorial Ops Dashboard</strong></td><td>Build a dashboard that reads Notion databases (Articles, Owners, Status, Deadlines) and charts throughput, cycle time, and overdue items. Trigger daily at 09:00 and via Refresh.</td><td></td></tr><tr><td align="center"><strong>Content Intake → Review</strong></td><td>Watch a “Submissions” database, validate required fields, assign an editor, and move items to “In Review,” leaving an AI-suggested checklist as a comment.</td><td></td></tr><tr><td align="center"><strong>Meeting Notes to Notion</strong></td><td>Ingest a transcript (upload or integration), extract decisions/action items, create a dated page under “Meetings,” and tag owners and due dates.</td><td></td></tr></tbody></table>

{% columns %}
{% column valign="middle" %}

<p align="center"><a href="https://riff.new/home?prompt-template=Build%20an%20Editorial%20Ops%20Dashboard%20that%20reads%20Notion%20databases%20%28Articles%2C%20Owners%2C%20Status%2C%20Deadlines%29%2C%20charts%20throughput%2C%20cycle%20time%2C%20and%20overdue%20items%2C%20and%20outputs%20a%20dated%20CSV.%20Trigger%20daily%20at%2009%3A00%20and%20via%20a%20Refresh%20button" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=Create%20a%20Content%20Intake%20-%3E%20Review%20automation%20that%20watches%20a%20Notion%20%27Submissions%27%20database%2C%20validates%20required%20fields%2C%20assigns%20an%20editor%2C%20moves%20items%20to%20%27In%20Review%27%2C%20and%20leaves%20an%20AI%20checklist%20comment.%20Trigger%20on%20new%20submission%20and%20on%20button" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=Create%20a%20Meeting%20Notes%20to%20Notion%20agent%20that%20ingests%20a%20transcript%2C%20extracts%20decisions%20and%20action%20items%2C%20creates%20a%20dated%20page%20under%20%27Meetings%27%2C%20and%20tags%20owners%20and%20due%20dates.%20Trigger%20on%20file%20upload%20and%20on%20button" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}

### Prerequisites

* Notion workspace where you can install an integration and select pages for access.
* A Riff workspace (sign-in at useriff.ai).

### Connect Notion to Riff (two easy ways)

**Let the agent drive**\
When a task needs Notion, the agent prompts you to connect. Click the link, approve scopes once, done. The agent runs a quick test and uses it in your build plan automatically.

**Add proactively**\
In your workspace, go **+ More → Integrations → Notion**, authorise, and you’re ready. Riff manages tokens, scopes, and basic checks for you.

> Tip: If an OAuth popup is blocked in the embedded preview, open your app in a new browser tab and retry the connect step.

<details>

<summary>Permissions (scopes) Riff requests in Notion</summary>

| Category            | Scope summary                                      |
| ------------------- | -------------------------------------------------- |
| Pages (view)        | View pages you select                              |
| Pages (edit)        | Edit pages you select                              |
| Content creation    | Create new content/sub-pages within selected pages |
| Workspace directory | View workspace users (names, avatars, emails)      |

{% hint style="info" %}
Riff uses OAuth; tokens are stored securely and handled by the Integrations system (no hard-coding secrets in code).
{% endhint %}

</details>

### How Riff wires Notion for you (under the hood)

* Sets up OAuth and stores tokens securely in **Secrets/Integrations**.
* Adds minimal scopes, verifies them, and runs a simple test action.
* Exposes Notion as a service inside tasks, automations, and agents (no boilerplate).

### Security notes

* Tokens are managed by Riff’s Integrations system; you don’t paste keys into code.
* Frontend code never sees secrets; all actions run server-side.
* Keep scopes tight; Riff requests only what’s needed and validates them.


# Google Sheets

Connect **Google Sheets** to Riff to power spreadsheet-backed dashboards, quality checks, and data workflows. Riff handles the OAuth, stores tokens securely, and wires Sheets into your apps, automations, and agents.

### What you can build (fast)

* KPI dashboards from a “Metrics” sheet
* Budget/variance monitors with Slack alerts
* Lead scoring and enrichment workflows

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center">KPI Board from Sheets</td><td>Build a KPI Board from Google Sheets that reads a 'Metrics' sheet, calculates weekly KPIs (growth, CAC, ROAS), and renders charts with a downloadable CSV. Trigger daily at 08:00 and via Refresh.</td><td></td></tr><tr><td align="center">Budget Variance Monitor</td><td>Create a Budget Variance Monitor that reads actuals vs budget from Google Sheets, flags variances over 10%, and posts a summary to Slack with a CSV attachment. Trigger every weekday at 09:00.</td><td></td></tr><tr><td align="center">Lead Scoring Dashboard</td><td>Create a Lead Scoring Dashboard that reads a 'Leads' sheet, computes scores using rules, highlights hot leads, and writes back a 'Score' column. Trigger on button.</td><td></td></tr></tbody></table>

{% columns %}
{% column valign="middle" %}

<p align="center"><a href="https://riff.new/home?prompt-template=Build%20a%20KPI%20Board%20from%20Google%20Sheets%20that%20reads%20a%20%27Metrics%27%20sheet%2C%20calculates%20weekly%20KPIs%20%28growth%2C%20CAC%2C%20ROAS%29%2C%20and%20renders%20charts%20with%20a%20downloadable%20CSV.%20Trigger%20daily%20at%2008%3A00%20and%20via%20Refresh" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=Create%20a%20Budget%20Variance%20Monitor%20that%20reads%20actuals%20vs%20budget%20from%20Google%20Sheets%2C%20flags%20variances%20over%2010%25%2C%20and%20posts%20a%20summary%20to%20Slack%20with%20a%20CSV%20attachment.%20Trigger%20every%20weekday%20at%2009%3A00" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=Create%20a%20Lead%20Scoring%20Dashboard%20that%20reads%20a%20%27Leads%27%20sheet%2C%20computes%20scores%20using%20rules%2C%20highlights%20hot%20leads%2C%20and%20writes%20back%20a%20%27Score%27%20column.%20Trigger%20on%20button" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}

### Prerequisites

* Google account with access to the relevant spreadsheets
* A Riff workspace (sign-in at useriff.ai)

### Connect Google Sheets to Riff (two easy ways)

**Let the agent drive** — When a task needs Sheets, the agent prompts you to connect; approve once; quick test runs.\
**Add proactively** — **+ More → Integrations → Google Workspace**, authorise.

<details>

<summary>Permissions (scopes) Riff requests in Google Sheets</summary>

| Category     | Scope summary                                         |
| ------------ | ----------------------------------------------------- |
| Spreadsheets | See & download spreadsheets (incl. settings/metadata) |

{% hint style="info" %}
Riff uses OAuth; tokens are stored securely and handled by the Integrations system (no hard-coding secrets in code).
{% endhint %}

</details>

### How Riff wires Sheets for you (under the hood)

* Sets up OAuth and stores tokens in **Secrets/Integrations**
* Adds minimal scopes, verifies, test action
* Exposes Sheets to tasks, automations, and agents

### Security notes

* Sheets may contain sensitive info (e.g., financial records)
* Tokens managed by Riff; frontend never sees secrets
* Actions run server-side; least-privilege scopes


# Google Calendar

Connect **Google Calendar** to Riff to automate digests, scheduling, and event prep. Riff handles the OAuth, stores tokens securely, and wires Calendar into your apps, automations, and agents.

### What you can build (fast)

* Daily/weekly event digests to Slack or email
* Focus time schedulers
* Event preparation briefs

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center">Calendar Daily Digest</td><td>Create a Calendar Daily Digest that reads selected Google Calendars for the next 24 hours and posts a morning schedule to Slack with event links. Trigger every weekday at 08:00.</td><td></td></tr><tr><td align="center">Focus Time Scheduler</td><td>Create a Focus Time Scheduler that finds free 2-hour blocks on Google Calendar this week and auto-creates 'Focus' events, avoiding meetings with external attendees. Trigger on button.</td><td></td></tr><tr><td align="center">Event Prep Agent</td><td>Create an Event Prep Agent that reads the next meeting on Google Calendar, pulls the attendee list, and drafts a preparation brief with agenda, last notes, and open actions. Trigger 60 minutes before events.</td><td></td></tr></tbody></table>

{% columns %}
{% column valign="middle" %}

<p align="center"><a href="https://riff.new/home?prompt-template=Create%20a%20Calendar%20Daily%20Digest%20that%20reads%20selected%20Google%20Calendars%20for%20the%20next%2024%20hours%20and%20posts%20a%20morning%20schedule%20to%20Slack%20with%20event%20links.%20Trigger%20every%20weekday%20at%2008%3A00" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=Create%20a%20Focus%20Time%20Scheduler%20that%20finds%20free%202-hour%20blocks%20on%20Google%20Calendar%20this%20week%20and%20auto-creates%20%27Focus%27%20events%2C%20avoiding%20meetings%20with%20external%20attendees.%20Trigger%20on%20button" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=Create%20an%20Event%20Prep%20Agent%20that%20reads%20the%20next%20meeting%20on%20Google%20Calendar%2C%20pulls%20the%20attendee%20list%2C%20and%20drafts%20a%20preparation%20brief%20with%20agenda%2C%20last%20notes%2C%20and%20open%20actions.%20Trigger%2030%20minutes%20before%20events" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}

### Prerequisites

* Google account with access to relevant calendars
* A Riff workspace (sign-in at useriff.ai)

### Connect Google Calendar to Riff (two easy ways)

**Let the agent drive** — Agent prompts, you approve once, quick test runs.\
**Add proactively** — **+ More → Integrations → Google Workspace**, authorise.

<details>

<summary>Permissions (scopes) Riff requests in Google Calendar</summary>

<table><thead><tr><th width="120">Category</th><th>Scope summary</th></tr></thead><tbody><tr><td>Calendars</td><td>See calendars; see events; download calendars; see email addresses of contacts/groups shared on calendars</td></tr></tbody></table>

{% hint style="info" %}
Riff uses OAuth; tokens are stored securely and handled by the Integrations system.
{% endhint %}

</details>

### How Riff wires Calendar for you (under the hood)

* Sets up OAuth and stores tokens in **Secrets/Integrations**
* Adds minimal scopes, verifies, test action
* Exposes Calendar to tasks, automations, and agents

### Security notes

* Calendars may include personal schedules and private appointments
* Frontend never sees secrets
* Least-privilege scopes


# Google Drive

Connect **Google Drive** to Riff to build file workflows: summarise folders, classify documents, extract tables, and loop results back to Drive. Riff handles the OAuth, stores tokens securely, and wires Drive into your apps, automations, and agents.

### What you can build (fast)

* Weekly folder summaries
* File classification and indexing
* PDF table extraction to CSV

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><strong>Drive Folder Summarizer</strong></td><td>Create a Drive Folder Summarizer that scans a Google Drive folder, summarises recent docs, and produces a weekly brief as a PDF stored back in Drive. Trigger weekly on Friday at 16:00.</td><td></td></tr><tr><td align="center"><p><strong>File</strong></p><p><strong>Classifier</strong></p></td><td>Create a File Classifier that reads new files in a Google Drive folder, tags them by type (invoice, contract, spec), and writes a CSV index to Drive. Trigger every hour.</td><td></td></tr><tr><td align="center"><strong>PDF → Table Automation</strong></td><td>Create a PDF to Table Automation that extracts tables from PDFs in a Drive folder, converts them to CSV, stores results in Drive, and posts a Slack link. Trigger on new file.</td><td></td></tr></tbody></table>

{% columns %}
{% column valign="middle" %}

<p align="center"><a href="https://riff.new/home?prompt-template=Build%20a%20KPI%20Board%20from%20Google%20Sheets%20that%20reads%20a%20%27Metrics%27%20sheet%2C%20calculates%20weekly%20KPIs%20%28growth%2C%20CAC%2C%20ROAS%29%2C%20and%20renders%20charts%20with%20a%20downloadable%20CSV.%20Trigger%20daily%20at%2008%3A00%20and%20via%20Refresh" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=Create%20a%20Budget%20Variance%20Monitor%20that%20reads%20actuals%20vs%20budget%20from%20Google%20Sheets%2C%20flags%20variances%20over%2010%25%2C%20and%20posts%20a%20summary%20to%20Slack%20with%20a%20CSV%20attachment.%20Trigger%20every%20weekday%20at%2009%3A00" class="button primary">Riff this App</a></p>
{% endcolumn %}

{% column %}

<p align="center"><a href="https://riff.new/home?prompt-template=Create%20a%20Lead%20Scoring%20Dashboard%20that%20reads%20a%20%27Leads%27%20sheet%2C%20computes%20scores%20using%20rules%2C%20highlights%20hot%20leads%2C%20and%20writes%20back%20a%20%27Score%27%20column.%20Trigger%20on%20button" class="button primary">Riff this App</a></p>
{% endcolumn %}
{% endcolumns %}

### Prerequisites

* Google account with access to relevant Drive folders/files
* A Riff workspace (sign-in at useriff.ai)

### Connect Google Drive to Riff (two easy ways)

**Let the agent drive** — Agent prompts, approve once, test runs.\
**Add proactively** — **+ More → Integrations → Google Workspace**, authorise.

<details>

<summary>Permissions (scopes) Riff requests in Google Drive</summary>

<table><thead><tr><th width="127">Category</th><th>Scope summary</th></tr></thead><tbody><tr><td>Files</td><td>See &#x26; download files; see names/emails of people files are shared with</td></tr></tbody></table>

{% hint style="info" %}
Riff uses OAuth; tokens are stored securely and handled by the Integrations system.
{% endhint %}

</details>

### How Riff wires Drive for you (under the hood)

* Sets up OAuth and stores tokens in **Secrets/Integrations**
* Adds minimal scopes, verifies, test action
* Exposes Drive to tasks, automations, and agents

### Security notes

* Drive may include private files (e.g., financial, medical, photos, tax info)
* Frontend never sees secrets
* Least-privilege scopes


# Stripe

Databutton AS will be able to see your account data (such as all payment and payout history), including any data created by other businesses you've connected.

They'll also be able to create new payments and take other actions for you.




---

[Next Page](/llms-full.txt/1)

