v. Infrastructure & Platforms

GREYBOOK

Industrial Documentation

Cross-vendor industrial documentation, crawled into one content-addressed corpus and made answerable with citations back to the exact page.

Crawler and web platform both running Python aiosqlite FastAPI Next.js Supabase pnpm

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

The catalog schema: text extraction is a separate, nullable stage
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.

Operating the crawler
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.