> For the complete documentation index, see [llms.txt](https://docs.riff.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.riff.ai/archive/getting-started-legacy/first-prompt-first-app.md).

# First prompt → first app

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="/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="/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="/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="/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 %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.riff.ai/archive/getting-started-legacy/first-prompt-first-app.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
