Agent setup guide
Proposal & SOW Drafter
When a HubSpot deal reaches Proposal, drafts the proposal and SOW from the deal notes and your Notion rate card, and posts the link in Slack.
What it does
When a HubSpot deal reaches Proposal, drafts the proposal and SOW from the deal notes and your Notion rate card, and posts the link in Slack.
- Starts when a HubSpot deal enters the stage you pick (your Proposal stage).
- Reads the deal's description, next step, amount and dates, its contacts and company, and your service catalogue and rate card from a Notion database.
- AI drafts a proposal and SOW: overview, objectives, scope, deliverables, timeline, fees (your rates only, estimates marked), assumptions, exclusions, next steps and your terms.
- Every fee line (quantity × rate), the fee total and the % difference from the deal amount are recalculated in code before the draft is saved — never by the AI; anything the AI got wrong is corrected and noted in the Slack post.
- Lists the open questions to confirm with the client and flags when the fees differ from the deal amount.
- Today's date and the expected close date are read in code; the draft gives timelines and validity as durations and never works out calendar dates itself.
- Creates the draft as a page in your Notion Proposals database and posts the link, fee total and confidence to your Slack channel.
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- HubSpot, Notion and Slack, connected in Settings → Integrations.
- Your service catalogue and rate card as a Notion database, a Notion Proposals database, and scope notes in the deal's description or next step.
What it doesn't do
- It never sends anything to the client: the deal owner edits and sends the proposal.
- It's only as good as the deal notes. It reads the deal's description and next step fields, not its emails, calls or timeline notes.
- It's not a contract and adds no legal terms beyond your own (pair it with Deal → Contract Sender for contracts).
- It uses only your catalogue's rates and never invents prices or discounts. Quantities not stated in the deal are marked as estimates.
- It doesn't DM the deal owner: the link goes to the Slack channel you pick.
Availability and plans
Available
Its workflow is built and tested, and every app it needs is live. You can get it and set it up now.
Included free on the Enterprise plan; on other paid plans it's a one-time purchase per workspace (the price is on the Agents page). The Agents page in the app always shows its current status.
Before you start
- A paid plan: agents run live, and the Free plan only runs Dry Runs.
- An AI provider key (OpenAI, Anthropic, Google and more) in Settings → AI Providers. AI usage is billed by your provider.
- These apps, connected in Settings → Integrations: HubSpot, Notion and Slack.
- The app it watches, connected in Settings → Integrations (the agent starts from an app event).
- About 30 minutes.
Set it up step by step
Get the agent first (buy it, or it's already yours when your plan includes it), then in Agents → My agents press “Set up this agent”. That creates the agent's workflow in your workspace (it counts towards your plan's workflow limit) and opens the canvas with a setup checklist above it. Each item links to the exact place to go and ticks itself off when it's done.
1. Connect your AI provider
The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.
2. Connect HubSpot
Connect the HubSpot account your deals are in (Settings → Integrations → HubSpot).
3. Connect Notion
Connect Notion and share your service catalogue and Proposals databases with the Fluxo Flow integration.
4. Connect Slack
Connect the Slack workspace your team uses (Settings → Integrations → Slack).
5. Pick the deals that start it
Open the trigger, pick your HubSpot account, the pipeline and your Proposal stage.
| Setting | What to enter | In step |
|---|---|---|
| HubSpot account (deals) | The HubSpot account whose deals start the agent. Pick your connected HubSpot account. | “Deal enters your Proposal stage” |
| Deal pipeline | The pipeline your proposals happen in (pick it from the list). | “Deal enters your Proposal stage” |
| Proposal stage | The stage that means “write the proposal”, e.g. Proposal. | “Deal enters your Proposal stage” |
6. Pick HubSpot for the reads
Open “Read the deal”, “Read the deal's contacts” and “Read the client's company” and pick your HubSpot account in each.
| Setting | What to enter | In step |
|---|---|---|
| HubSpot account (deal) | The same HubSpot account, to read the deal. Pick your connected HubSpot account. | “Read the deal” |
| HubSpot account (contacts) | The same HubSpot account, to read the deal's contacts. Pick your connected HubSpot account. | “Read the deal's contacts” |
| HubSpot account (company) | The same HubSpot account, to read the client's company. Pick your connected HubSpot account. | “Read the client's company” |
7. Point it at your rate card
Open “Read your service catalogue”, pick your Notion account and the catalogue database.
| Setting | What to enter | In step |
|---|---|---|
| Notion account (catalogue) | The Notion workspace with your service catalogue database. Pick your connected Notion account. | “Read your service catalogue” |
| Service catalogue database | Your Notion database with one row per service and its rate (share it with the Fluxo Flow integration). | “Read your service catalogue” |
8. Add your terms and structure
Open “Draft the proposal and SOW” and replace the placeholder with your firm details, terms, assumptions and exclusions.
| Setting | What to enter | In step |
|---|---|---|
| Firm details, terms and structure | Replace the placeholder with your firm name, how your proposals are structured, standard payment terms, standard assumptions and exclusions, and how long a proposal is valid. It starts as “[YOUR FIRM NAME, HOW YOUR PROPOSALS ARE STRUCTURED, STANDARD PAYMENT TERMS, STANDARD ASSUMPTIONS AND EXCLUSIONS, AND HOW LONG A PROPOSAL IS VALID]” until you replace it. | “Draft the proposal and SOW” |
9. Pick where drafts go
Open “Create the draft in Notion” and pick your Proposals database, then “Post the link in Slack” and pick the channel.
| Setting | What to enter | In step |
|---|---|---|
| Notion account (proposals) | The Notion workspace with your Proposals database. Pick your connected Notion account. | “Create the draft in Notion” |
| Proposals database | The Notion database where proposal drafts are created (share it with the Fluxo Flow integration). | “Create the draft in Notion” |
| Slack workspace | The Slack workspace your team uses. Pick your connected Slack account. | “Post the link in Slack” |
| Proposals channel | The channel where draft links are posted, e.g. #proposals (invite the Fluxo Flow app to private channels). | “Post the link in Slack” |
10. Test it with Dry Run
Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.
11. Switch the trigger on
Open the trigger and press “Activate app trigger”: from then on each deal entering your Proposal stage gets a draft.
How it works
The agent is a normal workflow with 11 steps (1 AI step). You can open, edit and monitor it like any other workflow.
- Deal enters your Proposal stage — Starts on “Deal entered a stage” in HubSpot (an app event). Starts a run when a HubSpot deal moves into the stage you pick (your Proposal stage). Checked on your plan's schedule interval.
- Read the deal — HubSpot: Find records. Reads the deal's description, next step, amount, close date and type from HubSpot: the scope notes the proposal is built from.
- Read the deal's contacts — HubSpot: Find records. Finds the contacts associated with the deal (names, job titles, emails).
- Read the client's company — HubSpot: Find records. Finds the company associated with the deal (name, industry, size, location).
- Read your service catalogue — Notion: Query a database. Reads your service catalogue and rate card from a Notion database: one row per service with its description, deliverables, rate and unit.
- Read today's date and the close date — Step. In code, not AI: today in your time zone and the deal's expected close date in long form, so the draft never works dates out itself.
- Draft the proposal and SOW — AI step (runs on your AI provider key). AI drafts the proposal and statement of work from the deal notes and your service catalogue: scope, deliverables, timeline, fees from your rates (estimates marked), assumptions, exclusions and open questions.
- Check the math — Step. Recalculates every fee line (quantity × rate), the fee total and the % difference from the deal amount in code — not by AI — writes the correct figures into the Notion draft and the Slack post, and notes anything the AI got wrong.
- Create the draft in Notion — Notion: Create a page in a database. Creates a page in your Proposals database with the full draft, ready for the deal owner to edit.
- Post the link in Slack — Slack: Post a message. Posts the Notion link, the fee total, open questions and the confidence to your proposals channel so the deal owner can pick it up.
- Draft ready — Kept in the run history. The run history keeps the deal data, the catalogue rows used and the draft.
Test it with Dry Run
Press Dry Run in the canvas. The agent runs on the sample data stored on its trigger (the “Sample data for Dry Run” box), so you can check every step's output before anything is live. The sample has the same shape as a real event from the app.
Sample data fields
id, dealname, amount, pipeline, dealstage, closedate, owner_id, createdate, properties.dealname, properties.amount, properties.description, properties.hs_next_step.
- Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
Go live
- Open the trigger and press “Activate app trigger”: from then on each deal entering your Proposal stage gets a draft.
- Activating the app trigger needs the trigger's connected account. The first check only remembers what's already there, so older items don't start runs; the same item never starts two runs.
- The setup checklist adds a “paid plan” item before activation: live runs need a paid plan (the Free plan only runs Dry Runs).
- When every checklist item is done and the trigger is on, the checklist says “Live — this agent is running”. Follow its runs in the workflow's History tab and in Analytics → Agents.
Questions
What should the service catalogue look like?
A Notion database with one row per service: Name, Description, Deliverables, Rate, Unit (hour, day, month, fixed) and Typical quantity. Share it with the Fluxo Flow integration. Keep it to about 50 services so the draft stays fast and affordable.
Can the AI get the fees wrong?
Not the arithmetic: after the AI drafts, every fee line (quantity × rate), the fee total and the % difference from the deal amount are recalculated in code and written into the Notion draft and the Slack post, and the Slack post says what was corrected. The rates and quantities it picked are still for the deal owner to review.
Does it read the deal's emails and timeline notes?
No. It reads the deal's description and next step fields plus its contacts and company. Write the scope notes there before moving the deal to Proposal.
Does it send the proposal or a contract?
No. It creates a draft in Notion for the deal owner to edit and send. For contracts, pair it with Deal → Contract Sender.
Troubleshooting
- “No AI provider connected” or a rejected key: connect or fix the key in Settings → AI Providers, then press Test there.
- A checklist item stays unticked: the setting is still empty or still contains its placeholder text. Open the step from the checklist and fill it in.
- An app step fails with “Needs reconnect”: the account's access was revoked or expired. Reconnect it in Settings → Integrations.
- Slack says the app isn't in the channel: in Slack, type /invite @Fluxo Flow in that channel (always needed for private channels).
- No runs start: activate the app trigger with a connected account. Only items created after activation start runs.
- A step failed: open the run in History and check that step in the Trace tab for the error and what it received.
Generated from the agent's own workflow, so it always matches what the agent does. Last updated .