| name | rigging-agent |
| description | Use whenever a used-machinery dealer needs to find a rigger / heavy-machinery mover for a specific location, or wants to add/update riggers in their personal rigger database. Pulls from the dealer's local rigger database (.dealer_riggers.json) first, then falls back to web search for riggers in the region that handle CNC, injection molding, presses, and other heavy industrial equipment. Triggers on "find a rigger", "who can rig in [city/state]", "rigger near [location]", "I need someone to load this", "add this rigger to my book", "rigger database", "save this rigger", or any time a dealer is sourcing the rigging side of a deal. NOT for freight/trucking — that's the trucking workflow. |
Rigging Agent
Sources riggers / heavy-machinery movers for a dealer's loads. Two modes: pull from the dealer's personal book (the fast, trusted answer) or search the web for new candidates in regions the dealer hasn't worked before.
When this fires
- "Find me a rigger in Cleveland for the KraussMaffei"
- "Who do I have in Texas for a 50,000 lb press?"
- "I need a rigger near Columbus, OH — injection molding, dock-high"
- "Add Bayshore Rigging to my list — (216) 555-0142, Cleveland, IMM specialist"
- "Pull up my Ohio riggers"
- "Search for riggers near 46815 that handle CNC"
First-run setup
If /mnt/user-data/uploads/.dealer_riggers.json doesn't exist, create it as an empty list:
{
"riggers": [],
"preferred_radius_miles": 250,
"last_web_search_cache": {}
}
Rigger record schema
Each rigger in the database:
{
"id": "bayshore-rigging-cleveland",
"company": "Bayshore Rigging",
"contact_name": "Mike Anderson",
"phone": "(216) 555-0142",
"email": "dispatch@bayshore-rigging.example",
"website": "https://bayshore-rigging.example",
"city": "Cleveland",
"state": "OH",
"postal": "44102",
"service_radius_miles": 300,
"equipment_types": ["injection_molding", "cnc", "presses", "heavy_general"],
"capabilities": ["crane_to_50t", "dock_high", "millwright", "trucking_partner"],
"last_used_date": "2026-02-14",
"last_used_load": "Krauss-Maffei CX 160 load-out",
"rating": 5,
"notes": "Sharp, on-time, sent photos during load. Will quote teardown.",
"added_by": "dealer",
"source": "personal"
}
source is "personal" (dealer added) or "web" (skill found and dealer approved). equipment_types enum: injection_molding, cnc, presses, extrusion, blow_molding, robots, heavy_general. capabilities is free-form but pick from common: crane_to_50t, crane_50_100t, crane_100t_plus, dock_high, forklift_to_25k, forklift_25k_plus, millwright, disassembly, trucking_partner, crating, international.
Per-request flow
- Parse the ask — extract location (city/state/zip), equipment type, and any constraints (weight, dock height, crane size, timeline).
- Query local DB first — call
scripts/find_riggers.py --location <loc> --equipment <type>. Returns matches ranked by:
- In-state and within
service_radius_miles of the load location
- Equipment-type match
- Recency (riggers used in last 12 months ranked higher)
- Rating
- Present matches — show top 3 with contact info, last-used date, and the load they ran. Include the dealer's own notes verbatim — those notes are the real value.
- If no local matches (or dealer asks to broaden) —
scripts/web_search_riggers.py writes a search-results stub; the skill then uses the WebSearch tool to find candidates with queries like:
"machinery rigging" near "<city>, <state>"
"injection molding mover" <state>
heavy machinery riggers <state> CNC press
For each web result the skill collects: company, phone, email, website, location, equipment types mentioned. Present the candidates and ASK the dealer which to call. Do NOT auto-add web results to the database — only add after the dealer says "use this one" or "add them" or after they actually run a load with them.
- Saving / updating —
scripts/add_rigger.py adds or updates a record. Always confirm with the dealer before writing: "Adding Bayshore Rigging (Cleveland, OH, IMM specialist) to your book — confirm?"
After a load runs
When the dealer mentions a load completed with a rigger ("Bayshore loaded the KraussMaffei yesterday"), update that rigger's last_used_date, last_used_load, and prompt for a rating + one-line note. The notes compound into real institutional knowledge.
Anti-patterns
- ❌ Auto-saving web-search results before the dealer confirms — the database is curated, not a dump.
- ❌ Recommending a rigger without surfacing their last-used date and the load context — those are the trust signals.
- ❌ Forgetting to filter by
equipment_types — a generic heavy-hauler is not the same as an IMM specialist.
- ❌ Searching the web before checking the local DB — the dealer's own book is always first.
- ❌ Conflating riggers with truckers —
trucking_partner: true means they can hand off to a trucker, not that they ARE one.
File map
scripts/find_riggers.py — local DB query (location + equipment filter, ranked output)
scripts/add_rigger.py — add/update a rigger record (interactive prompts via skill, batch-safe)
scripts/web_search_riggers.py — emits a search stub; pairs with the WebSearch tool to find candidates
references/rigger_schema.md — full field reference and enum values
Companion skills
sales-proposal — when rigging_mode="included", the rigger named here goes on the proposal
past-sales-agent — every closed load logs which rigger ran it; that data feeds back into rigger ratings