Write us on Telegram@Odilient

BROWSER EXTENSION

NDA Protected

Amazon Relay Automation

Chrome extension and Node.js tooling for the Amazon Relay load board that watches for new loads and payout changes, filters them by location and pickup time, and books matches.

Logistics
Industry
2 months
Duration
2022
Year
Where it started

The Challenge

Carriers on Amazon Relay compete for loads on a shared load board, where good work opportunities are claimed quickly and payouts change while you watch. Doing it by hand meant refreshing all day, reading every card for distance, pickup time and destination, and hoping to click Book first. The goal was to let the browser do the watching, filtering and clicking under clear, operator-defined rules.

What we did

The Solution

We built a Chrome extension that reads the load board's own JSON responses instead of scraping cards, then runs a configurable loop with three modes: alerts for new loads and payout increases, search and highlight, and auto-booking up to a set quantity. Filters cover distance, pickup buffer, latest departure and US state, ZIP or facility lists. A later Node.js client polled and booked without a browser window.

Built with
JavaScriptChrome Extensions APINode.jsjQueryBootstrapMoment.jsWebpack
Inside the build

How It Came Together

A Chrome extension for the Amazon Relay load board

Amazon Relay is where carriers find and book freight loads for Amazon's network. Its load board lists work opportunities with origin, destination, distance, stops, pickup times and payout, and those listings change constantly. For a carrier working the US load board, we built automation tools that watch the board, surface the loads that fit the operator's rules and, when told to, book them: first a Chrome extension, then a headless Node.js client.

The work ran through three iterations between April and June 2022.

Key features

  • Reads the board's own data — a script injected before the page loads wraps window.fetch, clones the load-board API responses and hands the JSON to the extension. Filters work on structured fields (payout, total distance, stop count, first pickup time, and every stop's state, ZIP code and facility) rather than on text scraped from cards.
  • Three operating modes — Simple alert watches for newly posted loads and for payout increases above a dollar threshold. Search finds and highlights loads that pass the filters. Auto book books matching loads until a maximum quantity is reached.
  • Operator-defined filters — minimum and maximum distance, a buffer in minutes before the first pickup, a latest departure date and time, and a location filter by US state, five-digit ZIP code or facility code, used either as a whitelist or as an exclusion list. Full state names are normalized to two-letter codes, so "Illinois" and "IL" match the same loads.
  • A controlled refresh loop — the extension pauses the board's built-in auto-refresh, triggers refreshes itself at a configurable speed plus a random delay, and waits for the load cards to render with a MutationObserver before evaluating them.
  • Visual and sound cues — new loads are highlighted and moved to the top, loads whose payout went up get a badge showing the increase, and the best-paying new match is scrolled into view and expanded. Separate sounds play for a new load, a price change and a successful booking.
  • Fast Book — an optional mode that relabels the Book button and confirms the booking dialog in the same action, removing a step when speed matters.
  • Hotkey and tab safety — a single key starts and stops the loop, and the background script marks tabs as non-discardable so Chrome does not freeze a load board left running in the background.

Architecture and tech stack

Browser extension

The extension is a Manifest V2 Chrome extension written in JavaScript. A content script injects the control panel above the available-work list, built with jQuery, Bootstrap and a Moment.js date-time picker. A second script is injected at document_start as a web-accessible resource and runs in the page's own context, the only place where the load board's fetch calls can be observed. It passes each load-board response to the content script with window.postMessage.

The content script keeps the latest list of work opportunities in memory, compares it with the previous snapshot to detect new loads and payout changes, and applies the filters on every loop iteration.

Iterations

The first build, in April 2022, used Russian-language labels for the operators and included a mobile-view toggle saved in Chrome sync storage. The May 2022 build reworked the panel, moved the mode labels to English and added tab-discard protection in the background script.

Headless Node.js client

In June 2022 we added a Node.js client that talks to the same load-board API without a browser window. It replays the operator's saved search, with parameters such as origin radius, equipment types, minimum rate per mile and maximum stops, on an interval with random jitter. When a result appears, it checks the stops against a list of excluded facility codes, sends the booking request and stops polling.

Each search profile is a pair of files, an environment config and a request body, passed on the command line, so several profiles can run as separate processes. The client uses node-fetch and dotenv, is bundled with Webpack, and authenticates with the operator's own Relay session supplied through local config.

Automation design choices

Working from intercepted API responses meant the filters did not depend on card markup, and payouts could be compared as numbers instead of parsed from currency strings. The randomized interval, the quantity cap and explicit Start and Stop controls kept the operator in charge of how aggressively the tool ran. The Node.js client removed the need for a visible browser window, which the extension relied on: its panel reminds operators to keep the load board on screen.

Our role

We built and iterated all three tools over about two months: the first extension, its rework and the headless client, including the request-replay format and the multi-profile setup.

This project is part of our AI integration and automation work. For more tooling built on top of Amazon, see Amazon seller tools and the Amazon order and shipping widgets extension. For internal tools built from scratch, see web app development.

Let's Build

Want something like Amazon Relay Automation?

Tell us what your product needs to do. We'll shape the scope, map a timeline and send a fixed price — free, and with no obligation to proceed.

Free consultation No commitment Fast reply