Agent setup guide
Software Spend Audit
Monthly: finds overlapping tools, unused seats, upcoming renewals and price rises in your subscriptions, and asks owners “still need it?”.
What it does
Monthly: finds overlapping tools, unused seats, upcoming renewals and price rises in your subscriptions, and asks owners “still need it?”.
- On the 1st of each month, reads your subscriptions sheet in Google Sheets (fill it from a card statement or a Ramp / Brex export).
- AI finds overlapping tools, unused seats, renewals in the next 45 days and price rises against last month.
- Dates are worked out in code, never by the AI: the days to each tool's renewal and whether it falls in the next 45 days, in your time zone.
- The money is recalculated in code before anyone sees it — never by the AI: each tool's monthly and annual cost, your monthly and annual totals, unused seats and their cost, and each price rise's %; the report, Slack summary and owner messages carry only the checked figures.
- Saves the full report to your Notion reports database and posts a summary to your finance channel in Slack.
- Stores this month's cost back in each row (update_row) so next month can spot price rises.
- DMs the owner of every flagged tool in Slack: “still need it?”, with the specific reason (up to 30).
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- Google Sheets (with edit access), Notion and Slack, connected in Settings → Integrations.
- A subscriptions sheet with costs, renewal dates, seats and owner emails.
What it doesn't do
- It cancels nothing and changes no plan: finance and the owners decide.
- Data comes only from your sheet — there's no bank or card feed.
- Overlaps are judged from tool names and categories, so treat them as prompts to check. Price rises start from the second month.
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: Google Sheets, Notion and Slack.
- Nothing to send: the agent runs on a schedule.
- About 20 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 Google Sheets
Connect the Google account that can open and edit your subscriptions sheet (Settings → Integrations → Google Sheets).
3. Connect Notion
Connect Notion and share your reports database with the Fluxo Flow integration.
4. Connect Slack
Connect the Slack workspace your finance team and tool owners use.
5. Describe your subscriptions sheet
Open “Audit the spend” and replace the placeholder with your columns, currency and price-rise threshold.
| Setting | What to enter | In step |
|---|---|---|
| Your subscriptions setup | Replace the placeholder with your company name, the sheet's column names, your currency and the price-rise threshold to flag. It starts as “[PASTE YOUR COMPANY NAME, YOUR SUBSCRIPTIONS SHEET'S COLUMN NAMES (TOOL, CATEGORY, OWNER EMAIL, COST, CYCLE, RENEWAL DATE, SEATS BOUGHT, SEATS USED, LAST MONTH'S COST), YOUR CURRENCY AND WHAT COUNTS AS A PRICE RISE WORTH FLAGGING (E.G. OVER 5%) HERE]” until you replace it. | “Audit the spend” |
6. Pick the subscriptions sheet
Open “Read your subscriptions” and “Store this month's cost” and pick the same account, spreadsheet and tab in both, then enter the “Last month's cost” column letter.
| Setting | What to enter | In step |
|---|---|---|
| Google account (read) | The Google account that can open your subscriptions sheet. Pick your connected Google Sheets account. | “Read your subscriptions” |
| Subscriptions spreadsheet | Paste the link of the spreadsheet with your subscriptions. | “Read your subscriptions” |
| Subscriptions tab | The tab with one row per tool, e.g. Subscriptions. | “Read your subscriptions” |
| Google account (update) | The same Google account, used to store this month's costs. Pick your connected Google Sheets account. | “Store this month's cost” |
| Subscriptions spreadsheet (same one) | Paste the same spreadsheet link again, so costs are stored in place. | “Store this month's cost” |
| Subscriptions tab (same one) | The same tab name as above. | “Store this month's cost” |
| “Last month's cost” column letter | The column letter of your “Last month's cost” column (the date goes in the column to its right), e.g. I. | “Store this month's cost” |
7. Pick Notion and Slack
Open “Save the report to Notion” and pick the database, then pick the Slack account on the three Slack steps and the finance channel.
| Setting | What to enter | In step |
|---|---|---|
| Notion account | The Notion workspace with your reports database. Pick your connected Notion account. | “Save the report to Notion” |
| Reports database | The Notion database monthly audit pages are added to. Share it with Fluxo Flow first. | “Save the report to Notion” |
| Slack account (finance) | The Slack workspace your finance team uses. Pick your connected Slack account. | “Post to finance” |
| Finance Slack channel | The channel the monthly summary goes to, e.g. #finance. | “Post to finance” |
| Slack account (find owners) | The same Slack workspace, used to find tool owners by email. Pick your connected Slack account. | “Find the owner in Slack” |
| Slack account (owner DMs) | The same Slack workspace, used to DM owners. Pick your connected Slack account. | “Ask “still need it?”” |
8. Test it with Dry Run
Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.
9. Switch the trigger on
Open the trigger, set your time zone and switch the schedule on. It runs on the 1st of each month at 9:00.
How it works
The agent is a normal workflow with 13 steps (1 AI step). You can open, edit and monitor it like any other workflow.
- 1st of each month at 9:00 — Runs on a schedule (cron 0 9 1 * *, UTC — change it in the trigger's settings). Runs on the first morning of every month. Set your time zone on the trigger: “today” and the 45-day renewal window are counted in that zone.
- Read your subscriptions — Google Sheets: Read rows. Reads your subscriptions tab: tool, category, owner, cost, billing cycle, renewal date, seats bought and used, and last month's cost.
- Check the renewal dates — Step. In code, not AI: works out the days to each tool's renewal date in your time zone and marks the ones renewing in the next 45 days. No row is filtered out (every tool counts towards the totals). Change the window here (within.max).
- Audit the spend — AI step (runs on your AI provider key). AI finds overlapping tools, unused seats, the renewals in the next 45 days (the days were worked out in code) and price rises against last month, works out the monthly and annual spend (rechecked in code next), and writes the report, the finance summary and a “still need it?” message for each flagged tool's owner.
- Check the math — Step. Recalculates every tool's monthly and annual cost, the spend totals, unused seats and their cost, and each price rise's % in code — not by AI — and writes the correct figures into the report, the finance summary and the owner messages.
- Save the report to Notion — Notion: Create a page in a database. Creates this month's audit page in your Notion reports database.
- Post to finance — Slack: Post a message. Posts the summary and the Notion link to your finance channel.
- Each subscription row — Repeats the steps below for each item (up to 200 per run). Stores this month's cost in the “last month's cost” column of every row, for next month's comparison.
- [For each item — “Each subscription row”] Store this month's cost — Google Sheets: Update a row. Writes this month's cost into the row's “last month's cost” column (and the date next to it).
- Each flagged tool — Repeats the steps below for each item (up to 30 per run). Asks the owner of every flagged tool “still need it?” in Slack (up to 30).
- [For each item — “Each flagged tool”] Find the owner in Slack — Slack: Find user by email. Looks up the tool owner's Slack account by email.
- [For each item — “Each flagged tool”] Ask “still need it?” — Slack: Post a message. DMs the owner the specific reason the tool was flagged.
- Audit done — Kept in the run history. The run history keeps the audit, the report link and every owner message.
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.
- Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
- For-each loops repeat only the first 3 items.
Go live
- Open the trigger, set your time zone and switch the schedule on. It runs on the 1st of each month at 9:00.
- Scheduled runs start only once the schedule is activated, and can't repeat faster than your plan's minimum interval.
- 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 subscriptions sheet look like?
One row per tool: Tool, Category, Owner email, Cost, Cycle (monthly / annual), Renewal date, Seats bought, Seats used, then two columns at the end for the agent: Last month's cost and Checked on. Fill it from your card statement or a Ramp / Brex export.
How does it spot price rises?
Each month it stores the current cost in the “Last month's cost” column; next month it compares. The first run has nothing to compare, so price rises start from the second month.
Can the AI get the totals wrong?
Not in what finance sees: each tool's monthly and annual cost, the totals, unused-seat costs and price-rise percentages are recalculated in code after the AI's audit and written into the report, the Slack summary and the owner messages. The run history's math check lists anything the AI got wrong.
Will it cancel anything?
No. It reports and asks owners; finance decides what to cut.
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).
- It didn't run at the expected time: the schedule must be activated, and its time is in the trigger's timezone.
- 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 .