Document Libraries
Engenerate exposes documents to a project through three distinct surfaces. Understanding which surface a document lives on tells you who can see it, where the file is stored, and whether RAG (Retrieval-Augmented Generation) includes it in chat answers.
Three surfaces, one Resources view
Project Resources (Documents)
The Documents tab on a project (Resources panel) is the project's own collection of files. These are uploaded directly by anyone with write access to the project and live entirely inside that project's tenancy:
- Scope: one project
- Storage:
users/{userId}/projects/{projectId}/…for personal-org projects,orgs/{orgId}/projects/{projectId}/…for team-org projects - RAG: embedded into the per-project namespace
p:{projectId} - Workspace pinning: files can be attached to one or more workspaces within the same project (the join table requires same-project workspace IDs)
- Delete: soft-deletable like any project resource
Organization Library
The Organization Library is a single shared collection per organization (personal or team). It exists so curators can upload documents once and have every project in the same organization reference them without re-uploading.
- Curators: Owners and Admins of the active organization
- Consumers: all members of the same organization
- Scope: the active organization (personal-org library and any team-org library are completely independent; a user with multiple contexts has separate libraries that never cross)
- Page:
/organization/libraryexposes the full Resources/Documents UI for curation; the Library Sheet's Organization tab lets every member browse and pin - Attach to projects: consumers add documents to their projects by reference — files are never copied, never re-embedded, and never re-uploaded
- Storage: files live inside a single hidden
ORG_LIBRARYproject per organization (Project.kind = 'ORG_LIBRARY'). Personal-org library uploads land underusers/{userId}/…(mirrors personal-org project storage); team-org library uploads land underorgs/{orgId}/…. - RAG: embedded into the org-library project's namespace
p:{orgLibraryProjectId}. When chat references an org-library doc, the server scopes Pinecone queries to that namespace and filters chunks by the documents you've actually pinned or attached. - Subscription gating: none. Every org member can browse and pin their own org's library regardless of subscription tier.
- Cross-organization sharing: not supported. References are enforced by a four-way org-equality invariant on every read and write.
Attaching an Organization Library document to a project
From the Library Sheet's Organization tab, members can pin an org-library
document into a project (creating a ProjectFileReference). The document
then appears in that project's Resources/Documents list with an
Organization Library source badge — it's the same row your curator
uploaded, viewed through the consumer project's lens. Detach removes
the reference; the underlying file in the library is untouched.
Engenerate Library
The Engenerate Library is the cross-customer reference library that Engenerate itself curates: federal regulations and federal agency guidance (USACE, FEMA, USBR, NRCS, FHWA, USGS, and peers).
- Curators: Engenerate staff (admin-only)
- Coverage: federal documents. State and other non-federal jurisdictions are not currently served through this library — upload the ones your team relies on to your Organization Library instead
- Consumers: subscribers on an eligible plan (ACTIVE/TRIAL); see Pricing
- Scope: global
- RAG: chunks live in Pinecone's global namespace; the
searchLibrarychat tool surfaces them with citations - Subscription gating: required. The Library Sheet's Engenerate tab shows a "Subscribe to access" empty state for free-tier users; the Organization tab stays available regardless.
"Library only" chat toggle
The chat toolbar (next to the Web Search globe) has a Library only
toggle, marked by a small library icon. By default it is off and the
chat agent reaches the Engenerate Library through the same
searchDocuments tool it uses for project documents — the library's
chunks are part of that tool's entitled scope, so toggling Library only
off does not hide curated standards.
Turning the toggle on scopes the turn to the Engenerate Library
exclusively: the server registers a dedicated searchLibrary tool
(library-only Pinecone query) and hides searchDocuments for the
duration of the turn. Use it when you want the agent to answer purely
from FEMA/USGS/USACE manuals, regulations, or standards and ignore your
own uploads.
- The toggle is component-local — it resets to off whenever you reload the chat panel.
- It is orthogonal to the Web Search globe; both can be on at the same time (Library only governs document retrieval only).
- If you turn it on without a Library entitlement, the server logs the
request and silently falls back to the default
searchDocumentsregistration.
Where each surface shows up
| Surface | UI entry points | Stored as | Chat retrieval |
|---|---|---|---|
| Project Resources | Documents tab on a project | ProjectFile in this project | p:{projectId} namespace |
| Organization Library | /organization/library, Library Sheet → Organization, Project Switcher → Organization Library | ProjectFile in this org's hidden ORG_LIBRARY project, plus ProjectFileReference rows from consumer projects | p:{orgLibraryProjectId} namespace, filtered to attached/pinned IDs |
| Engenerate Library | Library Sheet → Engenerate, Chat Context → Library tab | ProjectFile in the system LIBRARY project | Pinecone global "Library" embedding collection |
Why use one vs. another
- Project Resources — documents that only matter to one project. Specs, reports, photos, datasets unique to this design.
- Organization Library — internal company standards, recurring reference material, agency-specific guidance your team uses across many projects. Curators upload once; members pin into individual projects on demand.
- Engenerate Library — public reference material, curated by Engenerate and ready to use now.
Reference graph (Engenerate Library)
Engenerate Library documents are connected by an automatically extracted
citation/reference graph (DocumentReference edges). On ingest, an LLM step
identifies the other documents, standards, and authorities each Library doc
cites; matches that resolve to a document already in the Library become
RESOLVED edges, which (once enabled) let chat retrieval pull in cited/related
documents and reason about their relationships. The graph is agency-agnostic
(USACE, FEMA, USBR, NRCS, ...) and Library-only in v1.
See the engineering reference at _docs/README_Document_Reference_Graph.md for
the architecture, extraction prompt/schema, resolution rules, backfill commands,
and environment flags (LIBRARY_REFERENCES_MODEL, LIBRARY_GRAPH_EXTRACT, LIBRARY_GRAPH_EXPAND — the last two default off).