What it does
A maintenance technician looking for the trip curve on a specific breaker is searching across Schneider, Rockwell, Siemens, Eaton and ABB, each with its own site, its own PDF conventions and its own idea of what a model number is. GREYBOOK crawls those vendor libraries into a single SQLite catalog and a content-addressed PDF store, extracts the text page by page, and puts a retrieval layer with citations on top.
The crawler half is a Python package with per-vendor spiders and a FastAPI control dashboard. The platform half is a Next.js application: auth, document viewer, and a chat surface where every answer carries the document and page it came from.
Politeness is a feature
Each spider runs with a configured interval and a dry-run mode, and vendor-specific field notes live in the repository, Schneider's Akamai layer returns 403 to anything that looks impatient. A crawler that gets a lab blocked is worse than no crawler, so the defaults are conservative and the run history is recorded per vendor.
In the code
CREATE TABLE IF NOT EXISTS documents (
stable_id TEXT PRIMARY KEY,
vendor TEXT NOT NULL,
title TEXT NOT NULL,
source_url TEXT NOT NULL,
doc_type TEXT NOT NULL,
product_family TEXT,
model_numbers TEXT, -- JSON array
revision TEXT,
-- download fields, NULL until fetched
local_path TEXT,
sha256 TEXT,
pages INTEGER,
-- text-extraction fields, NULL until extracted
text_pages TEXT, -- JSON array, one string per page
text_extracted_at TEXT
);
Discovery, download and extraction are three separate stages with their own timestamps, so a crawl can be resumed, audited, or re-run for one vendor without touching the rest. sha256 is the deduplication key: the same manual published under four part numbers is stored once.
greybook seeds
greybook crawl --vendor schneider --seed masterpact_mtz --dry-run --max-documents 50
greybook crawl --vendor schneider --url '<seed URL>' --interval 3.0
greybook list --vendor schneider --downloaded
greybook stats
greybook export --output catalog.jsonl
Dry-run first, always. The revision field is what makes this more than a search box: a plant running a 2014 revision of a breaker needs the 2014 curve, not the current one.
How this differs from the ordinary version
Revision-aware, not just full-text
Vendor search finds the current document. A plant floor needs the revision that matches the equipment actually installed, which is frequently two or three revisions behind. Because every document is stored with its revision, family and model numbers, a query can be scoped to the gear in the building rather than the gear in the catalog.
Answers cite the page
A retrieval system that summarizes five manuals into a confident paragraph is dangerous in this domain, a wrong torque spec or trip setting has physical consequences. Every answer here resolves to a document, a revision and a page number the technician can open and read for themselves.
One corpus, five vendors
The value is not any single vendor library; it is that a mixed plant has Schneider gear feeding Rockwell drives next to Siemens instrumentation, and no vendor will ever index a competitor. The cross-vendor join is the product.
In the field
A mixed-vendor plant in El Paso
Almost no facility is single-vendor. A technician tracing a fault crosses a Schneider main, a Rockwell VFD and a Siemens sensor in one shift, and burns twenty minutes per hop finding the right PDF. Collapsing that into one search with citations gives back time that is currently spent hunting rather than fixing.
Bilingual by necessity
On this border a work instruction is read in Spanish and the vendor manual is published in English. Retrieval that answers in the reader's language while citing the English source page keeps both the accessibility and the auditability, the technician understands it and the quality record still points at the controlling document.
What changes over a year
Early on the corpus is vendor libraries. Within a few months the valuable additions are local: the site's own drawings, MOPs, and closed work orders indexed beside the manuals. That is when it stops being a documentation search and becomes institutional memory that survives the retirement of the one technician who knew where everything was.
Questions
- Which vendors are covered?
- Schneider, Rockwell and Siemens have working spiders. Eaton and ABB exist as stubs with vendor research notes; adding a vendor is a spider, not an architecture change.
- Does it re-host vendor PDFs publicly?
- No. Documents are cached into a private content-addressed store for the operator that crawled them, and answers cite back to the vendor source URL.