Design principles

Approval-first: the agent never spends your money

Autonomous agents are impressive in demos and terrifying in a market where a wrong booking costs a week's income. So we drew a hard line: the agent proposes, the human commits.

A farmer's hands holding a smartphone in a field at dusk
Autonomy stops at the point where money moves.

There is a version of this product that runs entirely on its own — reads the lot, picks the buyer, books the truck, sends the messages. It would demo beautifully. It would also be unusable, because the first time it sent a commitment to a buyer at the wrong price, the user would never trust it again.

So FreshRoute Agent is built on a single non-negotiable rule: no action that touches money, reputation, or a third party happens without an explicit tap.

The workflow, with the gates marked

Lot intake        → automatic
        Quality analysis  → automatic
        Market comparison → automatic
        Buyer outreach    → APPROVAL REQUIRED
        Transport booking → APPROVAL REQUIRED
        Delivery tracking → automatic
        Payment confirm   → APPROVAL REQUIRED

Everything upstream of outreach is analysis: parsing, grading, pricing, ranking. Analysis is cheap and reversible, so the agent runs ahead freely. Everything downstream is commitment, and commitment is gated by an approve/reject card in the chat with the full terms visible — buyer, price, quantity, transporter, cost, expected net.

An agent that asks permission at three points is more useful than one that asks at none, because it's the only one anyone will actually let near a real trade.

Approval is only credible if it's auditable

A confirmation dialog that vanishes is not a control. Every action — by the agent, the user, or the system — is written to an action log with a timestamp and an actor. The drawer is one tap from the conversation, so "what did it do, and when, and who said yes" is always answerable after the fact.

9:41FreshRoute
FR AI Selling Agent
Online · replies in seconds
LIVE
Best route: Lahore. I've drafted the buyer message — nothing is sent until you approve.10:21

Approval required · buyer outreach

Buyer
Al-Madina Traders, Lahore
Reliability
4.8 / 5 · 41 trades
Offer
Rs 400 / kg · Grade A
Transport
Refrigerated · Rs 18,000
Expected net
Rs 302,000
Approve & send Reject

Logged to the action log with timestamp and actor.

Message FreshRoute…Voice
The approval gate before buyer outreach. Full terms are visible, and nothing is sent until the seller taps approve.

That log turned out to matter for a reason we didn't anticipate: disputes. When a buyer claims the agreed grade was different, the record of what was proposed and approved settles it in seconds.

Honest status beats silent fallback

The same principle applies to the AI itself. When the model is unavailable, the app does not quietly substitute a guess. A badge in the chat header always reads one of three states:

StateWhat it means
LIVEReal model responses through the server-side proxy.
DEMODeterministic local calculation — the arithmetic still holds, the language understanding is reduced.
AI ERRORThe call failed. Shown in the conversation, not buried in a console.

Degrading loudly costs some polish. It buys the one thing an agent handling someone's harvest income cannot do without.