One question → structured filters → map and directory shortlist.
Type a question the way you'd say it: "yards in Greece that can take a 220m tanker for drydocking" or "repair facilities near Singapore with a floating dock over 30,000 DWT". No dropdown menus, no boolean queries.
The AI extracts your constraints — country, vessel type, LOA, DWT, services — and applies them as chips above the directory. Each chip is removable individually if you want to relax one constraint without starting over. The AI also returns a short prose summary of what it found.
The map and directory list share the same filter state. Pan the map to add a geographic constraint, and the next question you ask will include that bounding box. Your session URL encodes the active filters so you can bookmark or share the shortlist.
Each card shows key dimensions up front — max LOA, DWT, vessel types, dock count. The full profile page shows services, contact details, confidence level, and links to the yard's own website.
For operators and the curious — this is what runs behind the directory.
Starting from known ports and Google Maps results, the pipeline identifies yard websites and classifies them — filtering out broker directories, group holding sites, and military facilities before crawling.
Firecrawl and Playwright fetch the relevant pages. An LLM extracts structured fields: dock dimensions, lifting capacity, vessel types, services, contact info. Image OCR handles facility tables that appear only as photos.
All dimensions are converted to metric. Duplicate records on the same host are merged. Each stored row gets an extraction_method tag and a confidence score.
Each profile shows a confidence chip — Verified (≥80%), Good, Partial, or Limited — derived from how many fields were populated and whether the data came from the yard's own pages or required inference.