Agent setup guide
Translation Quote Builder
Prices each translation request from your own rate card, flags certified, legal or medical work and emails the quote after your PM approves.
What it does
Prices each translation request from your own rate card, flags certified, legal or medical work and emails the quote after your PM approves.
- Starts from each request your quote form posts to its webhook.
- Reads your rate card and linguist roster in Google Sheets.
- Working days to the client's deadline (for the rush check) are worked out in code, never by the AI.
- AI prices each language pair from your card only — per word by pair and specialty, minimum fee, rush multiplier, certification fee.
- Each pair (words × rate, or the minimum fee), the rush surcharge, the certification fee and the total are recalculated in code before anyone sees them — never by the AI; anything the AI got wrong is corrected and flagged to the PM, and pairs it couldn't price stay unpriced.
- Flags certified, sworn, legal and medical work for your PM and suggests 2 linguists per pair from your roster.
- Your PM approves (and can edit) every quote; it's then emailed to the client with replies to your PM inbox.
- Saves the client and a deal with the total in HubSpot, and posts the quote, flags and linguists to your PM channel in Slack.
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- Google Sheets, HubSpot and Slack, connected in Settings → Integrations.
- A rate card and a linguist roster in Google Sheets, and a quote form that can post JSON to a webhook.
What it doesn't do
- It uses the word count the client gives and doesn't count the file.
- No CAT-tool or translation-memory discounts unless your card defines them; it never invents a rate or discount.
- It flags certified, legal and medical work but doesn't decide what certification or expertise is needed — your PM and linguists do.
- It doesn't contact linguists or book the work.
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, HubSpot and Slack.
- A form, app or system that can send each new item to a webhook URL (the agent starts from a webhook).
- 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 rate card and roster (Settings → Integrations → Google Sheets).
3. Connect HubSpot
Connect the HubSpot account for your clients (Settings → Integrations → HubSpot).
4. Connect Slack
Connect the Slack workspace your PMs use (Settings → Integrations → Slack).
5. Add your quoting rules
Open “Price the quote” and replace the placeholder with your turnaround, rush rule, validity, payment terms and sign-off.
| Setting | What to enter | In step |
|---|---|---|
| Your quoting rules | Replace the placeholder with your agency name, standard turnaround, when rush applies, quote validity, payment terms, currency and sign-off. It starts as “[PASTE YOUR AGENCY NAME, YOUR STANDARD TURNAROUND (E.G. 2,000 WORDS A DAY PER LINGUIST), WHEN RUSH PRICING APPLIES, HOW LONG QUOTES ARE VALID, YOUR PAYMENT TERMS, YOUR CURRENCY AND YOUR SIGN-OFF HERE]” until you replace it. | “Price the quote” |
6. Pick the rate card and roster
Open “Read your rate card” and “Read your linguist roster” and pick the account, spreadsheet and tab for each.
| Setting | What to enter | In step |
|---|---|---|
| Google account (rate card) | The Google account that can open your rate card. Pick your connected Google Sheets account. | “Read your rate card” |
| Rate card spreadsheet | Paste the link of the spreadsheet with your rate card. | “Read your rate card” |
| Rate card tab | The tab with your rates, e.g. Rates. | “Read your rate card” |
| Google account (roster) | The same Google account, used to read the roster. Pick your connected Google Sheets account. | “Read your linguist roster” |
| Roster spreadsheet | Paste the link of the spreadsheet with your linguist roster (often the same one). | “Read your linguist roster” |
| Roster tab | The tab with one row per linguist, e.g. Linguists. | “Read your linguist roster” |
7. Add your inbox, HubSpot and Slack
Open “Email the quote” and enter the Reply-to, pick the HubSpot account, pipeline and stage on the HubSpot steps, and the Slack account and channel.
| Setting | What to enter | In step |
|---|---|---|
| PM inbox (replies) | Clients' replies to the quote (e.g. “approved”) come back to this address. | “Email the quote” |
| HubSpot account (contacts) | The HubSpot account for your clients. Pick your connected HubSpot account. | “Save the client in HubSpot” |
| HubSpot account (deals) | The same HubSpot account, used to create the deal. Pick your connected HubSpot account. | “Create the HubSpot deal” |
| Deal pipeline | The HubSpot pipeline quotes go into. | “Create the HubSpot deal” |
| Quote stage | The stage new quotes start in, e.g. “Quote sent”. | “Create the HubSpot deal” |
| HubSpot account (link) | The same HubSpot account, used to link the deal to the client. Pick your connected HubSpot account. | “Link the deal to the client” |
| Slack account | The Slack workspace your PMs use. Pick your connected Slack account. | “Tell the PM in Slack” |
| PM Slack channel | The channel new quotes are posted to, e.g. #quotes. | “Tell the PM in Slack” |
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, switch the webhook on and copy its URL and secret into your quote form.
How it works
The agent is a normal workflow with 13 steps (1 AI step, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.
- Quote request — Starts when your form or app sends data to the agent's webhook URL. Starts when your website's quote form posts here: language pairs, word count, subject area, deadline, whether a certified translation is needed and a file link.
- Read your rate card — Google Sheets: Read rows. Reads your rate card tab: per-word rate by language pair and specialty, minimum fee, rush multipliers and certification fee.
- Read your linguist roster — Google Sheets: Read rows. Reads your linguist roster tab: name, language pairs, specialties, certified or sworn status and availability notes.
- Work out the deadline — Step. In code, not AI: how many working days (Monday–Friday) and calendar days from today the client's deadline is, in the trigger's time zone (set timezone here; UTC otherwise), for the rush check.
- Price the quote — AI step (runs on your AI provider key). AI prices each language pair from your rate card only (per word, minimum fee, rush, certification), flags certified, sworn, legal or medical work for your PM, suggests 2 linguists per pair from your roster and drafts the quote email.
- Check the math — Step. Recalculates each pair (words × rate, or the minimum fee when higher), the translation subtotal, the rush surcharge, the certification fee and the total in code — not by AI — writes the correct figures into the quote, email and Slack summary, and flags anything the AI got wrong for the PM. Pairs without a rate stay unpriced.
- PM approves the quote — A person approves or rejects it in Reviews (the run waits). The project manager checks every rate, the flags and the suggested linguists in Reviews, edits the quote if needed and approves it to send. Reject to send nothing.
- Email the quote — Sends an email from your workspace's sender. Branch: Approved. Emails the approved quote to the client, with replies to your PM inbox.
- Save the client in HubSpot — HubSpot: Create or update a contact. Creates or updates the client's HubSpot contact.
- Create the HubSpot deal — HubSpot: Create a deal. Creates a deal for the quote in your pipeline stage, with the approved total.
- Link the deal to the client — HubSpot: Link two records. Links the new deal to the client's contact.
- Tell the PM in Slack — Slack: Post a message. Posts the quote, flags and suggested linguists to your PM channel.
- Quote sent — Kept in the run history. The run history keeps the pricing, the quote and the HubSpot deal.
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
client_name, client_email, company, source_language, target_languages (a list), word_count, subject_area, deadline, certified, file_link, notes.
- 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 quote 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 client_name, client_email, company, source_language, target_languages (a list), word_count, subject_area, deadline, certified (yes / no), file_link and notes.
What should the rate card look like?
One row per pair and specialty: Source, Target, Specialty, Per word, Minimum fee; plus rows for rush bands (e.g. “Rush: under 3 working days ×1.25”) and the certification fee. Discounts for repetitions or translation memory apply only if your card defines them.
Can the AI get the totals wrong?
Not in what your PM or client sees: after the AI prices the quote, each pair (words × rate, or the minimum fee), the rush surcharge, the certification fee and the total are recalculated in code and written into the quote email, the HubSpot deal and the Slack summary. If the AI's math was off, the review screen shows what was corrected.
Does it count the words in the file?
No. It prices the word count the client gives, and the quote says the price may change once the files are counted.
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 .