Fruxon logo
Fruxon

Back Office

The work nobody sees until it's already late.

Invoices, internal tickets, order exceptions, vendor checks — records that sit in a queue until a person gets to them. Agents that work them end to end in your systems of record, and route the exceptions to whoever owns them instead of forcing them through.

Straight-through processing fails on the part that isn't straight.

The rules engine handles the clean records. Everything else — the invoice whose PO doesn't match, the request that needs an approval nobody chased, the order with an address that won't parse — falls into an exception queue that somebody works by hand, in batches, at the end of the month. The automation didn't fail on the hard records. It never covered them.

How it works

The same four beats, whichever queue it's working.

It picks the record up where it lands

A new invoice in SAP, a ticket in Jira, a row in a queue table, a form submission, a file dropped in Google Drive. The history and the policy that govern this record are retrieved at the step, so it starts with the context a person would go looking for.

It checks the record against the systems of record

Match the PO, confirm the terms against the contract in Confluence, query your Postgres or BigQuery for what happened last time. When it needs to compute rather than call, it runs Python in an isolated sandbox instead of doing arithmetic in a prompt.

It stops on the exception, not on the batch

A mismatch outside tolerance, a counterparty it's never seen, an amount over the ceiling you set. It flags that one record and keeps working the rest — a malformed row fails on its own instead of taking the run down with it.

The exception goes to the person who owns it

Not to a shared inbox. The owner gets the record, the mismatch, and the agent's reasoning on Slack, answers once, and it clears. If nobody answers, the run parks on the approval and resumes when they do.

When it isn't sure

Exceptions stop being a queue and start being a question.

Per action, you decide what it does alone: handle it, ask first, or just tell someone afterwards. What it can't clear goes to the person who owns that call — with the record, the mismatch, and its reasoning attached — instead of accumulating for someone to work through on Friday.

Approval gates on the actions that move money, grant access, or write to a system of record, each pausing the run with a full audit trail

Timeouts and a fallback ladder, so a record never sits waiting on one person being at their desk

Tag each run with the account or business unit it served, and get cost, error rate, and p95 split per entity

Systems

It works where the record already lives.

Connect a system once for the whole organization and every agent can use it from then on — with credentials held at the org and referenced by name, never pasted into a prompt.

Slack

GitHub

Jira

Google Drive

Salesforce

MongoDB

Notion

Linear

Grafana

Discord

Google Chat

Confluence

PostgreSQL

HubSpot

Airtable

Shopify

Stripe

Datadog

Sentry

GCP

BigQuery

Slack

GitHub

Jira

Google Drive

Salesforce

MongoDB

Notion

Linear

Grafana

Discord

Google Chat

Confluence

PostgreSQL

HubSpot

Airtable

Shopify

Stripe

Datadog

Sentry

GCP

BigQuery

Google Calendar

Gmail

Mixpanel

Monday

MySQL

SAP

Zendesk

Zoho CRM

Google Maps

Google Ads

Coralogix

Telegram

Apollo

Mailchimp

Calendly

Redis

Supabase

GCP Logging

gVisor

Loops

Typeform

Google Calendar

Gmail

Mixpanel

Monday

MySQL

SAP

Zendesk

Zoho CRM

Google Maps

Google Ads

Coralogix

Telegram

Apollo

Mailchimp

Calendly

Redis

Supabase

GCP Logging

gVisor

Loops

Typeform

Don't see yours? Import tools from any MCP server or request an integration.

Build the agent. We'll run the rest.