All work

Deployed demo

IntelliBid

Auction platform with a conversational bidding agent

My role
Sole engineer — agent design, real-time bidding, frontend
Timeline
2026
Team
Solo

Outcome

Agent
bids autonomously within a user-set ceiling
Explained
every automated action carries its rationale
Live
WebSocket bidding with server-ordered writes
3D
interactive lot inspection before bidding

What it looks like

BidMind assistant answering the question "Should I raise my bid?" by directing the user to auction insights and a bid simulator rather than naming a figure.
BidMind, the assistant, sits in the same inbox as seller messages and system alerts. Asked whether to raise a bid, it points at the evidence — auction insights, the bid simulator — instead of inventing a number, which is the behaviour a bidding assistant has to have to be trustworthy.

Context

Auction interfaces assume a user who is watching. Anyone not watching at the moment a lot closes simply loses it, which is why sniping tools exist at all. The project began from a straightforward question: if an agent can be told an intent and a ceiling, why should a person have to sit at the screen?

The problem

  1. An agent that spends a user's money is a materially different proposition from a chatbot. Its authority has to be bounded before it acts, not apologised for afterwards.
  2. An agent whose reasoning is opaque is unusable in this setting. A user who cannot see why a bid was placed cannot decide whether to keep delegating.
  3. Auction state is contested by construction: several bidders and their agents act on the same lot within the same second, and the ordering has to be authoritative.
  4. Natural-language intent is ambiguous, while a bid is exact. Something has to convert one into the other without quietly inventing the parts the user did not specify.

How I approached it

Give the agent a ceiling before giving it authority

Delegation always begins with an explicit maximum. The agent operates strictly inside that envelope and is structurally incapable of exceeding it, which makes the worst case something the user chose in advance rather than something the model decided.

Within that envelope the agent bids incrementally rather than immediately committing the ceiling, so a user's maximum is a limit rather than a starting price.

Require the agent to narrate every action

Each bid the agent places carries a plain-language explanation of why it was placed. The intent is not decoration: an agent that must justify an action is far easier to evaluate, and a user who disagrees with the reasoning can withdraw delegation before the next round.

Treating explanation as a product requirement rather than a debugging aid was the decision that made the feature trustworthy enough to use.

Constrain the language interface to a resolved query

Free-text intent is resolved into an explicit, structured query — category, ceiling, constraints — which the user can see and correct before anything is committed. Ambiguity is surfaced rather than silently resolved by the model.

The same structured representation drives both search and the agent's subsequent behaviour, so what the user reviewed is exactly what executes.

Serve the bid path over WebSockets

Bids, outbid notifications and closing timers are pushed rather than polled, so a competing bid reaches every participant — human or agent — as one ordered stream of events.

The server sequences bids authoritatively. Contested lots resolve against server ordering rather than client clocks, which is the only defensible answer when money is attached to the outcome.

Architecture

  1. Intent

    • Natural-language request
    • Ceiling & constraints
  2. Agent (Gemini)

    • Query resolver
    • Bounded bid policy
    • Action explainer
  3. Bid engine

    • Server-ordered bid sequencing
    • Lot state & closing timers
  4. Transport

    • WebSocket channel per lot
  5. Participants

    • Human bidders
    • Delegated agents
    • Sellers

Cross-cutting

  • Delegation records — every automated action stored with its rationale
The agent never reaches the bid engine directly. Intent is resolved into a reviewable query, bounded by a ceiling, and only then submitted through the same ordered path a human bid takes.
Frontend
React · interactive 3D lot previews · live bid stream
Realtime
WebSocket channels per lot — bids, outbid alerts, closing timers
Agent
BidMind — Google Gemini, bounded by a user-set ceiling, emitting an explanation per action
Backend
Node.js REST API · authoritative server-side bid sequencing
Data
MongoDB — lots, bids, users, agent delegation records
Roles
Bidder · pro bidder (agent access) · seller

Trade-offs I chose

A hard user-set ceiling as a precondition of delegation

WhyThe failure mode of an autonomous agent with a wallet is unbounded. Making the bound a precondition rather than a guardrail means the worst outcome is one the user authored themselves.

Mandatory per-action explanations

WhyTrust in an agent is not established by accuracy alone. If a user cannot audit a decision, they will stop delegating regardless of whether the agent was right.

Resolving natural language into a reviewable structured query

WhyInterpreting intent silently is where conversational interfaces lose people. Showing the resolved query converts a guess into something the user can confirm or correct.

Server-authoritative bid ordering

WhyClient timestamps are unreliable and, in an auction, adversarial. The only sequencing anyone will accept is the one the server produces.

What I took away

  • The engineering difficulty in an agent product is not the model. It is deciding precisely what authority the agent holds and making that boundary structural rather than advisory.
  • Requiring the agent to explain itself improved the system twice over: users could evaluate it, and so could I — most of the behaviours I corrected were ones the explanations exposed.
  • Anything involving money converges on the same conclusion as ChefOS did: the server orders events, and the client renders the result.

Stack

  • React
  • Node.js
  • WebSockets
  • LLM agent
  • 3D previews
  • MongoDB