Agent setup guide
Timesheet Chaser & Utilisation Digest
Friday afternoon: DMs everyone short on hours in Slack and posts utilisation and over-budget projects for managers.
What it does
Friday afternoon: DMs everyone short on hours in Slack and posts utilisation and over-budget projects for managers.
- Every Friday afternoon, reads the time-entries sheet you export from your time tool.
- This week's entries (the 5 days ending on the Friday run) are picked in code, never by the AI, each with its weekday.
- AI totals this week's hours per person (including people with nothing logged) against the expected hours you list.
- Everyone more than a few hours short (you set how many) gets a friendly Slack DM with their logged and expected hours and the days with nothing logged.
- Utilisation per person and for the team, and each project's % of budget, are recalculated in code before the digest is posted — never by the AI; anything the AI got wrong is corrected and noted in the digest.
- Posts one digest to your managers' channel: missing hours, utilisation per person and for the team, and projects over or near their hours budget.
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- Google Sheets and Slack, connected in Settings → Integrations.
- Your time entries in a Google Sheet (exported from Harvest, Clockify, Toggl or similar), and your team list with emails matching their Slack accounts.
What it doesn't do
- It doesn't connect to Harvest, Clockify or Toggl: it reads the sheet, so its numbers are only as current as the export.
- It doesn't fill in or change timesheets, or bill anything.
- Budgets are in hours only, from the budgets you list.
- People whose Slack email doesn't match the team list aren't DMed; they're counted as failed reminders in the digest.
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 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 your time-entries spreadsheet (Settings → Integrations → Google Sheets).
3. Connect Slack
Connect the Slack workspace your team uses (Settings → Integrations → Slack).
4. Pick your time-entries sheet
Open “Read the time entries” and pick the account, spreadsheet and tab.
| Setting | What to enter | In step |
|---|---|---|
| Google account (time entries) | The Google account that can open your time-entries spreadsheet. Pick your connected Google Sheets account. | “Read the time entries” |
| Time-entries spreadsheet | Paste the link of the spreadsheet your time tool exports to. | “Read the time entries” |
| Time-entries tab | The tab with one row per time entry, e.g. Entries. | “Read the time entries” |
5. List your team and budgets
Open “Find missing hours and work out utilisation” and replace the placeholder with your team, expected hours and project budgets.
| Setting | What to enter | In step |
|---|---|---|
| Team, expected hours and budgets | Replace the placeholder with each person's name, email and expected weekly hours, who is away, your time zone, how many hours short counts as under (default 4), and project budgets in hours. It starts as “[LIST YOUR TEAM (NAME, EMAIL, EXPECTED WEEKLY HOURS), WHO IS AWAY THIS PERIOD, YOUR TIME ZONE, HOW MANY HOURS SHORT COUNTS AS UNDER, AND PROJECT BUDGETS IN HOURS]” until you replace it. | “Find missing hours and work out utilisation” |
6. Pick Slack and the managers' channel
Open “Find them in Slack”, “DM the reminder” and “Post the digest for managers”, pick your Slack workspace in each and the managers' channel.
| Setting | What to enter | In step |
|---|---|---|
| Slack workspace (lookup) | The Slack workspace your team uses, to find each person by email. Pick your connected Slack account. | “Find them in Slack” |
| Slack workspace (DMs) | The same Slack workspace, to send the reminders. Pick your connected Slack account. | “DM the reminder” |
| Slack workspace (digest) | The same Slack workspace, to post the managers' digest. Pick your connected Slack account. | “Post the digest for managers” |
| Managers' channel | The channel for the weekly digest, e.g. #leads (invite the Fluxo Flow app to private channels). | “Post the digest for managers” |
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, set your time zone and switch the schedule on. It runs every Friday at 14:00.
How it works
The agent is a normal workflow with 10 steps (1 AI step). You can open, edit and monitor it like any other workflow.
- Fridays at 14:00 — Runs on a schedule (cron 0 14 * * 5, UTC — change it in the trigger's settings). Runs every Friday afternoon, after this week's time entries are in the sheet. Set your time zone on the trigger.
- Read the time entries — Google Sheets: Read rows. Reads the time-entries sheet exported from your time tool (Harvest, Clockify, Toggl…): one row per entry with date, person, email, project, hours and billable.
- Keep this week's entries — Step. In code, not AI: keeps the time entries dated in the 5 days ending today (Monday to Friday on the Friday run, in your time zone), each with its weekday. Moved the schedule? Change within.min here (−4 = Monday on a Friday).
- Find missing hours and work out utilisation — AI step (runs on your AI provider key). AI totals this week's hours per person (the week's entries were picked in code) against their expected hours, writes a friendly nudge for anyone short, and works out utilisation and projects over budget for managers.
- Check the percentages — Step. Recalculates each person's utilisation (billable ÷ logged), the team totals and utilisation, and each project's % of budget in code — not by AI — writes the correct figures into the digest, and notes anything the AI got wrong.
- Each person under their hours — Repeats the steps below for each item (up to 50 per run). Repeats the Slack lookup and DM for every person who is short this week (up to 50).
- [For each item — “Each person under their hours”] Find them in Slack — Slack: Find user by email. Looks up the person's Slack account by their email address.
- [For each item — “Each person under their hours”] DM the reminder — Slack: Post a message. Sends the friendly timesheet reminder as a direct message from the Fluxo Flow app.
- Post the digest for managers — Slack: Post a message. Posts missing hours, utilisation and projects over or near budget to your managers' channel, with how many reminders went out.
- Digest posted — Kept in the run history. The run history keeps the totals, the reminders and the digest.
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 every Friday at 14: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
Does it connect to Harvest, Clockify or Toggl?
Not directly. Export (or sync) your time entries to the Google Sheet before Friday's run; the agent reads the sheet.
How are people found in Slack?
By the email address in your team list. Their Slack account must use the same email. Anyone not found is counted as a failed reminder in the digest.
Which entries count as this week?
Entries dated in the 5 days ending on the run day (Monday to Friday on the Friday 14:00 run), picked in code in your trigger's time zone. If you move the schedule, change within.min in “Keep this week's entries”.
How is budget measured?
In hours: all entries for a project in the sheet against the budget hours you list. Keep the project's full history in the sheet for accurate totals.
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 .