Source: https://www.heyganesh.in/work/spot-bid-approval

Author: Ganeshkumar, Product Designer

Published: 2026-09-11 · Updated: 2026-10-20

0→1 · B2B SaaS · Web App

# The lowest bid won automatically. Nobody approved it.

I designed the approval step between a spot bid closing and a transporter getting the job.

![Assign Indent approval panel showing the selected transporter, rate comparison chart and approval chain, over the spot bid auction screen](https://www.heyganesh.in/assets/spot-bid-approval/hero.webp)

- **Company:** Taabi Mobility (Logistics and procurement software for enterprises)
- **My Role:** Sole Product Designer
- **Team:** 3 Engineers, 1 PM & Me
- **Timeline:** Jun – Aug 2026

![Animated bar chart comparing the selected bid of ₹44,500 against the average bid of ₹41,900 over the last three months and the previous awarded bid of ₹47,600](https://www.heyganesh.in/assets/spot-bid-approval/rate-comparison.webp)

Approvers see the selected bid against the lane’s recent average and the last awarded bid

My role & contributions

| UI/UX Redesign | Designed the approval step from scratch as the sole designer: workspace, actions, revisions and status |
| --- | --- |
| Workflow structure | Approve / return / reject, the revision model, manual bids with proof, and the approval hierarchy settings |
| Prototyping | Prototyped the full workflow and demoed it to enterprise customers |

Context

## Spot bids went straight to the lowest bidder

The terms on this page

- **Indent:** An enterprise’s request for a truck, normally served by a contracted transporter.
- **Spot bid:** A short reverse auction, 10 minutes to 2 hours, run when the contracted transporter has no truck.
- **Approval chain:** Up to five approvers, set per site and bid value, who sign off in sequence.

Spot bidding already existed: the requestor runs a short auction, and the winner takes the indent. What didn’t exist was any check on that last step. The client asked for an approval gate, and I designed it from scratch.

![Existing spot bid auction screen showing the auction closing straight to Won Indent for the top-ranked transporter, with no approval step in between](https://www.heyganesh.in/assets/spot-bid-approval/before-approval-gate.webp)

Before: the auction closed straight to Won Indent.

Problem

## Price alone isn’t enough to approve a bid

> “Once the bidding window closes, send the selected bid to the appropriate approvers.”

> The client’s request

But an approver can’t decide from one rate.

Before approving, an approver needs to

01

Review it with senior stakeholders

02

Compare it with other transporters’ bids

03

Check historical rates on the lane

First version

## A side sheet couldn’t hold the decision

What I built

The approval action on a side sheet, so approvers could act without leaving the auction view.

What was wrong

It only fit the essentials and hid every other bid, so approvers had nothing to compare against.

What I did instead

Moved the whole decision into its own tab.

![V1 approval side sheet showing bid value, lowest-bid comparison, requestor details and approval chain, layered over the auction view](https://www.heyganesh.in/assets/spot-bid-approval/side-sheet.webp)

V1: an approval buried in a panel.

Approval workspace

## Every approval gets its own tab

The Approval Workflow tab puts the summary, the rate comparison and the full history on one screen.

![Approval Workflow tab showing the rate comparison chart, approval summary and activity timeline alongside the approval status rail and decision actions](https://www.heyganesh.in/assets/spot-bid-approval/approval-summary.webp)

### 01 Approval summary

What the approver has to decide, and what already happened before it reached them.

### 02 Rate comparison

A bar chart of the selected bid against the lane’s average awarded spot bid and the previous awarded bid.

### 03 Activity timeline

Every step of the spot bid, latest first, so nobody has to piece the story together.

Actions

## Return isn’t reject

![Animated Approve, Return and Reject buttons on the approval workspace](https://www.heyganesh.in/assets/spot-bid-approval/one-screen-actions.webp)

01

### One screen, three actions

Approve, Return and Reject. Return means the decision continues with a different transporter. Reject closes the spot bid.

![Activity Timeline showing a closed Revision 1 (returned by Anil Kumar) and an active Revision 2 with its own approval chain](https://www.heyganesh.in/assets/spot-bid-approval/revisions.webp)

02

### Returns become revisions

A return closes the current approval cycle, and resubmitting starts a new revision. Nothing is overwritten, so every change in the decision stays traceable.

![Color-coded status messages: approved in blue, returned for changes in orange, and rejected in red](https://www.heyganesh.in/assets/spot-bid-approval/status-messages.webp)

03

### Status you can scan

Color-coded status messages, always paired with text, so nobody has to rely on color alone.

Hierarchy

## Admins decide who approves what

In settings, an admin sets a value range per site and assigns up to five approvers in sequence. Access is restricted, so whoever is approving that day can’t edit the chain.

![Manage Spot Bidding Approvals settings with a value-range table and a Create Approval Workflow panel for configuring the approver chain](https://www.heyganesh.in/assets/spot-bid-approval/approval-config.webp)

Customer feedback

## Customers wanted to award transporters who never bid

We prototyped the full workflow and demoed it to enterprise customers. They sometimes wanted to award the spot bid to a transporter who wasn’t the winner:

Transporters who can now be awarded

01

Bid, but wasn’t selected

02

Invited, but didn’t bid

03

Never invited

And all three were negotiated offline.

Trade-off

## Proof, not a transporter’s yes

The idea

The enterprise enters the negotiated rate, and the transporter accepts it before approval continues.

Why we dropped it

It delayed every approval and made the transporter a dependency in an enterprise process.

What we did instead

A proof-document upload in the Add Manual Bid form.

A call with the enterprise answered the real question: how do they validate an offline negotiation today? With an official statement or document. The proof upload keeps that same confirmation, with no added wait.

![Transporter-facing bid screen with an Action Required panel showing the enterprise's revised rate proposal, rate reduction, and Accept Rate / Reject Request buttons](https://www.heyganesh.in/assets/spot-bid-approval/transporter-acceptance.webp)

Dropped: the transporter accepts the revised rate

![Add Manual Bid modal in two states: a transporter who bid in the auction, showing their bid value alongside the manual rate field, and an invited transporter who did not bid, with a note explaining the choice. Both include the proof-document upload and a reason field.](https://www.heyganesh.in/assets/spot-bid-approval/manual-bid.webp)

Shipped: Add Manual Bid, with a proof document and a reason

Outcome

Not live yet

## Lowest bid → approved bid

No measured impact yet. Here’s what changes once it rolls out.

|  | Before | After |
| --- | --- | --- |
| Awarding a spot bid | The lowest bidder gets it automatically | It goes through an approval chain set per site |
| Who can be awarded | Auction bidders only | Any transporter, backed by proof |
| Changing the decision | No approval step | Return creates a traceable revision |
| Record of the decision | Only the auction result | Activity timeline and revisions |

Learnings

## What it taught me

### Comparison needs room, not a side sheet

An approval is a comparison. If the screen can’t show the alternatives, the approver is just signing off on a number.

### Match the new step to how the enterprise already works offline

Before adding a step, check how people already confirm the same thing offline. Reusing their existing proof was faster than inventing a new confirmation.

---

Next case study

Laps

A stopwatch for structured routines and freeform runs, designed and built solo end-to-end

[Read case study →](https://www.heyganesh.in/work/laps)

Contact Ganeshkumar: ganeshbluesky05@gmail.com · LinkedIn https://www.linkedin.com/in/heyganeshkumar · X https://x.com/heyganesh_in · Resume https://www.heyganesh.in/assets/resume.pdf
