Moosa Memon
← Index of work

Load boards, filtered down to the calls worth making

LaneMatch: watches multiple freight load boards, normalizes listings into one schema, and surfaces only the loads that fit a carrier's trucks, lanes and rate targets, with an explanation for every ranking, pushed to Slack.

Type
Automation
Stack
Python / FastAPI / n8n / Embeddings / SQLite
Status
Complete; runs end to end with no API keys, dashboard included

Problem

A dispatcher at a small carrier keeps four or five load boards open, each with its own login, listing format and refresh cadence, and re-checks every tab all day mentally filtering hundreds of listings for the handful that fit. It falls behind exactly when volume picks up.

System

Board connectors normalize listings into one schema. A scorer combines hard filters (equipment type, lanes, pickup window) with rate-per-mile against the carrier’s floor and deadhead distance, and produces a ranked digest where each line explains itself: “Reefer matches the fleet exactly. $2.63/mi vs $2.35 floor (+12%). 0 mi deadhead. On preferred lane.” The best ones go to Slack tagged CALL NOW; the rest wait in a dashboard.

Worth knowing

Every ranking is explained in the dispatcher’s own terms rather than as a score, because a dispatcher who can’t see why a load ranked high will stop trusting the list after the first bad call. The rules-only scoring path runs with no model at all; embeddings are an optional layer for fuzzy lane matching, not a dependency.

Have a workflow that looks like this?

Most of these start as a messy, manual process someone got tired of. Twenty minutes is usually enough to sketch how I'd approach yours.