Agent setup guide
Resident Question & Permit Info Desk
Answers residents only from your published information with the official link, logs records and service requests for staff, and holds anything case-specific for a person.
What it does
Answers residents only from your published information with the official link, logs records and service requests for staff, and holds anything case-specific for a person.
- Starts from each message your website's “Ask us” form posts to its webhook.
- Reads your published-answers page in Notion and drafts a reply using only that text, with the official link.
- Public-records requests are logged in Notion with the received date and the deadline your clerk set, and the clerk is alerted in Slack.
- Service requests (potholes, streetlights, missed pickups) are logged in Notion and posted to the department's channel.
- Records requests, questions about a specific case and anything not clearly answered always wait for staff; by default every reply is approved before it's emailed.
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- Notion and Slack, connected in Settings → Integrations: a published-answers page plus records and service-request databases with the listed properties.
- A website form that can post JSON to a webhook, and your clerk's records-request deadline rule.
What it doesn't do
- It drafts and organises for a person to approve; it makes no legal, permit, eligibility or fine decision. It shares public information only and gives no legal advice.
- It doesn't open case files or discuss anyone's specific application, permit, violation or account: those go to staff.
- Statutory deadlines are set by your clerk; the agent only applies the period you enter (in code, never by the AI).
- It isn't a 311 system and doesn't dispatch crews; it logs and routes requests.
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 and Slack.
- A form, app or system that can send each new item to a webhook URL (the agent starts from a webhook).
- 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 Notion
Connect Notion and share your published-answers page and request databases with the Fluxo Flow integration (Settings → Integrations → Notion).
3. Connect Slack
Connect the Slack workspace your staff use (Settings → Integrations → Slack).
4. Pick your published-answers page
Open “Read your published answers” and pick your account and paste the page link.
| Setting | What to enter | In step |
|---|---|---|
| Notion account (published answers) | The Notion workspace with your published-answers page. Pick your connected Notion account. | “Read your published answers” |
| Published-answers page | Paste the link of your Notion page with your FAQ, fees, permit checklists and hours, each with its official link. Keep answers as normal text, not inside toggles. | “Read your published answers” |
5. Paste your office details
Open “Answer from your published information” and replace the placeholder with your hours, service categories and sign-off. The records deadline (5 business days from receipt) is set in “Work out the records deadline”.
| Setting | What to enter | In step |
|---|---|---|
| Your office details and rules | Replace the placeholder with your office's name, public hours and phone, who handles records requests, your service-request categories with their departments, and your sign-off. Change “REVIEW EVERY REPLY: yes” to “no” to send clearly answered general questions without review. It starts as “[PASTE YOUR OFFICE'S NAME, PUBLIC HOURS AND MAIN PHONE, WHO HANDLES PUBLIC-RECORDS REQUESTS, YOUR SERVICE-REQUEST CATEGORIES AND THE DEPARTMENT FOR EACH, AND YOUR SIGN-OFF HERE]” until you replace it. | “Answer from your published information” |
6. Set up records requests
Open “Log the records request” and pick your account and log database, then “Alert the clerk” and pick the account and channel.
| Setting | What to enter | In step |
|---|---|---|
| Notion account (records log) | The Notion workspace with your records-request log. Pick your connected Notion account. | “Log the records request” |
| Records-request log | The Notion database records requests are logged in, with Name (title), Status (select), Resident (text), Email (email), Received (date), Due (date). | “Log the records request” |
| Slack account (clerk) | The Slack workspace your staff use. Pick your connected Slack account. | “Alert the clerk” |
| Clerk's channel | Where records requests are posted, e.g. #clerk-records. | “Alert the clerk” |
7. Set up service requests
Open “Log the service request” and pick your account and database, then “Alert the department” and pick the account and channel.
| Setting | What to enter | In step |
|---|---|---|
| Notion account (service requests) | The Notion workspace with your service-request database. Pick your connected Notion account. | “Log the service request” |
| Service-request database | The Notion database service requests are logged in, with Name (title), Status (select), Category (text), Location (text), Department (text), Resident (text), Email (email), Received (date). | “Log the service request” |
| Slack account (department) | The Slack workspace your departments use. Pick your connected Slack account. | “Alert the department” |
| Department channel | Where service requests are posted, e.g. #public-works-requests. | “Alert the department” |
8. Add your office inbox
Open “Email the resident” and enter the Reply-to address.
| Setting | What to enter | In step |
|---|---|---|
| Office inbox (replies) | Residents' replies come back to this address. | “Email the resident” |
9. Test it with Dry Run
Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.
10. Switch the trigger on
Open the trigger, switch the webhook on and copy its URL and secret into your “Ask us” form.
How it works
The agent is a normal workflow with 16 steps (1 AI step, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.
- “Ask us” form — Starts when your form or app sends data to the agent's webhook URL. Starts when your website's “Ask us” form posts a question: name, email, phone, address (optional), topic and the question.
- Read your published answers — Notion: Read a page's text. Reads the text of your published-answers page in Notion: FAQ, fees, permit checklists and hours, each with its official link.
- Work out the records deadline — Step. In code, not AI: today's date (the received date) and the public-records response deadline — 5 business days from today, as your clerk sets it. Change the 5 here (add.days; remove businessDays for calendar days) and set timezone to your office's zone (UTC otherwise).
- Answer from your published information — AI step (runs on your AI provider key). AI classifies the message (question, public-records request, service request or a question about a specific case) and answers only from your published answers, with the official link. Dates come from the date step.
- Records or service request? — Decision: picks the branch to follow. Public-records requests are logged for the clerk; service requests are logged for the department. Questions go only to the reply path.
- Nothing to log — Kept in the run history. Branch: Nothing to log. A question or case enquiry: handled on the reply path.
- Log the records request — Notion: Create a page in a database. Branch: Records request. Adds the request to your Notion records-request log with the received date and the response deadline your clerk set.
- Alert the clerk — Slack: Post a message. Posts the records request with its due date to your clerk's Slack channel.
- Records request logged — Kept in the run history. The run history keeps the log entry.
- Log the service request — Notion: Create a page in a database. Branch: Service request. Adds the service request (category, location, department) to your Notion service-request database.
- Alert the department — Slack: Post a message. Posts the service request with its location to your department channel.
- Service request logged — Kept in the run history. The run history keeps the log entry.
- Staff review first? — Decision: picks the branch to follow. By default every reply waits for staff approval. Switch review off and only records requests, case questions and anything not clearly answered by your published information wait.
- Staff check the reply — A person approves or rejects it in Reviews (the run waits). Branch: Review first. A staff member reads the message and the drafted reply in Reviews, edits it (or answers the case question themselves) and approves; nothing is sent before that.
- Email the resident — Sends an email from your workspace's sender. Branch: Send without review / Approved. Sends the reply to the resident, with replies going to your office inbox.
- Resident answered — Kept in the run history. The run history keeps the message and the reply.
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
name, email, phone, address, topic, question, submitted_at.
- 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 copy its URL and secret into your “Ask us” form.
- 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
What should the form send?
A JSON POST with name, email, phone, address (optional), topic and question. Your form or site posts it with the webhook's signature header.
Where do answers come from?
Only from your published-answers page in Notion: write each answer as normal text with its official link (top-level text is read, up to 50,000 characters; text inside toggles isn't). When the page doesn't answer a question, the resident is told staff will reply.
Does it decide permits or eligibility?
Never. It shares public information you've published, logs requests and routes everything else to staff. Statutory deadlines come from your clerk, not the agent.
What Notion databases do I need?
A records-request log with Name (title), Status (select), Resident (text), Email (email), Received (date), Due (date) and a service-request database with Name (title), Status (select), Category (text), Location (text), Department (text), Resident (text), Email (email), Received (date) (they can be the same database if it has all these properties). Share them and the answers page with the Fluxo Flow integration (••• → Connections).
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).
- 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 .