Browse the docs

Agent setup guide

Listing & CMA Generator

Your comps in, an adjusted CMA, price range and listing copy out, saved to Notion.

Available About 15 min to set up

What it does

Your comps in, an adjusted CMA, price range and listing copy out, saved to Notion.

  • Receives a listing brief from your form through a webhook: the subject property's details and the comparable sales you picked.
  • AI screens each comparable, adjusts it to the subject with your adjustment values and works out a suggested list-price range, a recommended price and the reasoning.
  • AI writes MLS-ready listing copy, room-by-room highlights and a client-ready CMA document in your brokerage's voice, following fair-housing advertising rules.
  • You review and edit everything in Reviews; the approved CMA and copy are saved as a page in your Notion database.
  • With fewer than 3 usable comparables, you get an email listing what's missing instead of a weak CMA.

What it needs

  • A paid plan (agents run live on paid plans).
  • An AI provider key (Settings → AI Providers).
  • Notion, connected in Settings → Integrations, with a database for CMAs.
  • A form that can send the listing brief and your comparables to a webhook URL.

What it doesn't do

  • It doesn't pull comparables from the MLS or public records; it works only from the comps you send.
  • It isn't an appraisal and doesn't guarantee a sale price.
  • It doesn't submit listings to the MLS, stage photos or make videos.
  • It doesn't create PDF or Word files; the CMA is a Notion page you can export or share from Notion.

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: Notion.
  • A form, app or system that can send each new item to a webhook URL (the agent starts from a webhook).
  • About 15 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 Notion

Connect your Notion workspace (Settings → Integrations → Notion) and share your CMA database with Fluxo Flow.

3. Describe your brokerage and voice

Open “Write the listing copy and CMA” and replace the placeholder with your brokerage, voice and required disclaimers.

SettingWhat to enterIn step
Your brokerage, voice and disclaimersReplace the placeholder with your brokerage name, the tone you write in, words to use or avoid, and the disclaimers your CMA must carry. It starts as “[DESCRIBE YOUR BROKERAGE, BRAND VOICE AND REQUIRED DISCLAIMERS HERE]” until you replace it.“Write the listing copy and CMA”

4. Pick your CMA database

Open “Save the CMA to Notion” and pick your account and database.

SettingWhat to enterIn step
Notion accountThe Notion workspace your CMA database is in. Pick your connected Notion account.“Save the CMA to Notion”
CMA databaseThe Notion database each approved CMA is added to (share it with Fluxo Flow via ••• → Connections).“Save the CMA to Notion”

5. Test it with Dry Run

Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.

6. Switch the trigger on

Open the trigger, switch the webhook on and send your listing-brief form (subject property, comps, your name and email) to its URL.

How it works

The agent is a normal workflow with 9 steps (2 AI steps, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.

  • New listing brief — Starts when your form or app sends data to the agent's webhook URL. Your intake form posts the subject property's details and the comparable sales you picked (address, price, date, beds, baths, square feet…) to the workflow's webhook URL.
  • Analyze the comparables — AI step (runs on your AI provider key). AI checks each comparable you supplied, adjusts it to the subject property with your adjustment values and works out a suggested list-price range with its reasoning.
  • Enough comparables? — Decision: picks the branch to follow. With fewer than 3 usable comparables the agent is emailed what's missing instead of getting a weak CMA.
  • Ask the agent for more comparables — Sends an email from your workspace's sender. Branch: Too few comps. Emails the agent which comparables were excluded and why, and what's missing.
  • Waiting for more comps — Kept in the run history. The run history keeps the brief and why the comps weren't enough.
  • Write the listing copy and CMA — AI step (runs on your AI provider key). Branch: Enough comps. AI writes the listing description, room-by-room highlights and a client-ready CMA document from the analysis, in your brokerage's voice.
  • Agent reviews the CMA and copy — A person approves or rejects it in Reviews (the run waits). The agent reads the listing copy and the CMA in Reviews, edits anything, and approves it to save it to Notion.
  • Save the CMA to Notion — Notion: Create a page in a database. Branch: Approved. Creates a page in your Notion CMA database with the price range, listing copy and full CMA.
  • CMA saved — Kept in the run history. The run history keeps the analysis and the Notion page link.

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. Edit the sample to match the fields your own form or app sends.

Sample data fields

agent_name, agent_email, subject_address, property_type, beds, baths, sqft, lot, year_built, features, condition, seller_notes, adjustment_values, comps (a list).

  • Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
  • Approval steps use the Dry Run decision you pick in the step's settings (approved, rejected or timeout), so you can try each branch.

Go live

  • Open the trigger, switch the webhook on and send your listing-brief form (subject property, comps, your name and email) to its URL.
  • The webhook is protected by a secret: send it in the header shown in the Activation panel (requests without it are refused with 403). Each request starts one run.
  • 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

Does it pull comps from the MLS?

No. You pick the comparables (from your MLS or other source) and send them with the brief; the agent analyzes and writes up what you send.

Is the price an appraisal?

No. It's a CMA draft built from your comps for you to review; the document says so.

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.
  • Nothing happens when your form sends data: check the webhook is switched on and the request carries the secret header (403 means it's missing or wrong).
  • A run shows as paused: it's waiting for someone in Reviews to approve or reject it.
  • 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 .