Skip to main content

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/library exposes 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_LIBRARY project per organization (Project.kind = 'ORG_LIBRARY'). Personal-org library uploads land under users/{userId}/… (mirrors personal-org project storage); team-org library uploads land under orgs/{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 searchLibrary chat 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 searchDocuments registration.

Where each surface shows up​

SurfaceUI entry pointsStored asChat retrieval
Project ResourcesDocuments tab on a projectProjectFile in this projectp:{projectId} namespace
Organization Library/organization/library, Library Sheet → Organization, Project Switcher → Organization LibraryProjectFile in this org's hidden ORG_LIBRARY project, plus ProjectFileReference rows from consumer projectsp:{orgLibraryProjectId} namespace, filtered to attached/pinned IDs
Engenerate LibraryLibrary Sheet → Engenerate, Chat Context → Library tabProjectFile in the system LIBRARY projectPinecone 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).