Browse the docs

Agent setup guide

Loan Underwriting Assistant

Turns each application into an underwriting summary for your underwriter. Not a credit decision.

Available About 25 min to set up

What it does

Turns each application into an underwriting summary for your underwriter. Not a credit decision.

  • Receives each loan application with its figures and the list of documents received from your origination system or form through a webhook.
  • AI lists documents still missing under your policy and works out DTI, DSCR, LTV and your other ratios only from the figures sent, showing each formula.
  • Each ratio (numerator ÷ denominator) is recalculated in code before the underwriter sees it — never by the AI; any ratio the AI got wrong is corrected and flagged.
  • It checks every rule in your policy (meets / doesn't meet / can't assess) and writes strengths, risk notes, conditions to consider and neutral questions for the applicant.
  • Incomplete files are posted to your Slack loan operations channel; complete files wait in Reviews for an underwriter and are logged in your Google Sheets pipeline once reviewed.
  • Protected characteristics and proxies are ignored; if they appear in the data, they're flagged for removal.

What it needs

  • A paid plan (agents run live on paid plans).
  • An AI provider key (Settings → AI Providers).
  • Slack and Google Sheets, connected in Settings → Integrations.
  • An origination system or form that can send the application's figures to a webhook URL.

What it doesn't do

  • It is not a credit decision: it never approves, declines, prices or recommends a decision. An underwriter decides in your own system.
  • It doesn't pull credit-bureau data or read scanned documents (PDF or image): it works from the figures and extracted text you send.
  • It never estimates a missing figure: a ratio without its inputs is left blank and flagged.
  • It doesn't send adverse-action or decision notices, and never uses protected characteristics.

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

Connect the Slack workspace your lending team uses (Settings → Integrations → Slack).

3. Connect Google Sheets

Connect the Google account that can edit your underwriting pipeline sheet (Settings → Integrations → Google Sheets).

4. Paste your underwriting policy

Open “Prepare the underwriting summary” and replace the placeholder with your policy.

SettingWhat to enterIn step
Your underwriting policyReplace the placeholder with each product's required documents, how you define DTI, DSCR and LTV, your limits (e.g. DSCR at least 1.25, LTV at most 80%) and other rules. The agent only checks rules written there. It starts as “[PASTE YOUR UNDERWRITING POLICY HERE]” until you replace it.“Prepare the underwriting summary”

5. Pick the Slack account and loan ops channel

Open “Ask loan ops for missing items in Slack” and pick your account and channel. Invite the app to private channels first (/invite @Fluxo Flow).

SettingWhat to enterIn step
Slack accountThe Slack workspace alerts are posted to. Pick your connected Slack account.“Ask loan ops for missing items in Slack”
Loan operations channelThe channel your loan operations team watches, e.g. #loan-ops.“Ask loan ops for missing items in Slack”

6. Pick your underwriting pipeline sheet

Open “Log the reviewed file” and pick your account, spreadsheet and tab. Header row: Application, Applicant, Product, Amount, Term, Ratios, Policy checks, Risk notes, Summary, Status.

SettingWhat to enterIn step
Google account (underwriting pipeline)The Google account that can edit the underwriting pipeline spreadsheet. Pick your connected Google Sheets account.“Log the reviewed file”
Underwriting pipeline spreadsheetPaste the link of the spreadsheet used as your underwriting pipeline. Keep its sharing restricted to the people who need it.“Log the reviewed file”
Underwriting pipeline tabThe tab inside the spreadsheet, e.g. Pipeline.“Log the reviewed file”

7. Test it with Dry Run

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

8. Switch the trigger on

Open the trigger, switch the webhook on and have your origination system or form send each application to its URL.

How it works

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

  • New loan application — Starts when your form or app sends data to the agent's webhook URL. Your loan origination system or application form posts the application with its figures and the documents received to the webhook URL.
  • Prepare the underwriting summary — AI step (runs on your AI provider key). AI checks documents against your policy, picks the figures for each ratio from the data (showing the formula), checks each policy rule and writes risk notes and questions for the underwriter. The ratios are then recalculated in code.
  • Check the math — Step. Recalculates each ratio (numerator ÷ denominator) in code — not by AI — writes the correct values into the summary and flags any ratio the AI got wrong for the underwriter.
  • File complete? — Decision: picks the branch to follow. Incomplete files go to loan operations in Slack to collect what's missing; complete files go to an underwriter.
  • Ask loan ops for missing items in Slack — Slack: Post a message. Branch: Incomplete. Posts the application, the missing documents and the questions for the applicant to your loan operations channel.
  • Waiting for documents — Kept in the run history. The run history keeps the partial summary.
  • Underwriter reviews — A person approves or rejects it in Reviews (the run waits). Branch: Complete. An underwriter reads the summary, ratios and policy checks in Reviews and makes the credit decision in your own system; approving logs the reviewed file.
  • Log the reviewed file — Google Sheets: Add a row. Branch: Reviewed. Appends the application, ratios, policy-check results and summary to your underwriting pipeline sheet.

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

application_id, applicant_name, product, requested_amount, term_months, proposed_annual_payment, purpose, years_in_business, financials.revenue_2025, financials.revenue_2024, financials.ebitda_2025, financials.existing_annual_debt_service, collateral.type, collateral.appraised_value, bank_statements.months_provided, bank_statements.average_balance, bank_statements.nsf_count, documents_received (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 have your origination system or form send each application 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 approve or decline loans?

No. It prepares a summary for an underwriter and says so in every summary. The underwriter makes and records the credit decision in your own system.

Does it pull credit reports or read PDFs?

No. There's no credit-bureau connection. Send the figures (income, debts, credit data your system already pulled, financial statement totals) in the application data.

How does it handle fair lending?

It's told never to use or infer protected characteristics or proxies such as names or ZIP codes; if they're in the data it ignores them and flags the fields so you can remove them from the feed.

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 .