Estym8 DocsEstym8 Home

Bodi ↔ Estym8 — Write path boundary

Product context: Estym8 is built from scratch as an AI-first construction preconstruction platform—not a legacy takeoff stack with AI bolted on. AI runs across the product: bid-package ingestion and classification, multi-model takeoff and vision, plan intelligence, cross-file synthesis, Estee, estimate-to-submittal draft review, and optimization recommendations. Canonical framing: AI-first positioning.

Purpose: State clearly which product owns writes for each kind of data today, and what is allowed when integration moves from one-way export (Estym8 → file / future API) toward two-way sync. Pair with Bodi + Estym8 integration for options (export file, push claims, shared project link).

Last updated: May 2026.

Audience: Engineers in both codebases, solutions/partners, and anyone designing OAuth or service-to-service flows.


1. Systems of record (current)

  • Estym8 (this repo) — Projects, estimates, folder runs, symbol takeoffs, plan harvest outputs, submittal catalog (products + PDFs), submittal packages (sections, items, exports), user & billing (Stripe), harvest overrides, reviewed RFI/concern flags, exports derived from the above. All persistence goes through Estym8’s APIs and Postgres schema.
  • Bodi (separate app / repo) — Sources, claims, BOD documents, Bodi-native project brain state. Bodi does not store Estym8 rawOutput as authoritative—imports become sources or claims.

Rule of thumb: If it affects MEP takeoff math, PDF harvest, submittal catalog/packages, or Stripe billing, the only writer is Estym8. If it affects ICT/LV BOD structure and claim graphs, the only writer is Bodi.


2. Today’s integration surface (Estym8)

Shipped in Estym8:

  • Export for BodiGET on estimate export with format=bodi (Markdown download). User-controlled, read-only generation; no Estym8 write triggered by Bodi.

Not shipped yet (see integration doc): server push to Bodi (POST sources/claims), shared project IDs, or Bodi-led GET of a Bodi-export JSON endpoint with partner auth.

Inbound to Estym8 from Bodi: None in production. There is no supported route for Bodi to mutate Estym8 Estimate, Project, or rawOutput without a user acting inside Estym8.


3. Two-way sync — allowed write directions (policy)

This section is policy for future implementation; it does not imply features are live until shipped in product.

3.1 Bodi → Estym8 (narrow)

IntentAllowed?How
Overwrite estimate counts / rawOutputNoWould break audit trail and plan-review truth. Estym8 remains system of record for takeoff.
Inject context for Estee / future prompts (client standards, meeting notes)Yes, when designedPrefer attachments or “context documents” stored as Estym8-owned metadata, or read-only payloads the user pastes/imports—not silent merges. Any automated path needs explicit user confirmation and versioning.
Create a new Estym8 project/estimate on behalf of userOnly via future OAuth + user consentNot a silent server merge; same patterns as “create from template.”

3.2 Estym8 → Bodi (broad)

IntentAllowed?How
Append sources (Markdown / JSON export)YesMatches integration Options A–C; Bodi treats content as new sources and derives claims.
POST claims with traceability to an Estym8 source idYes (when API exists)Estym8 never overwrites Bodi claims in place; it creates or updates via Bodi’s API using Bodi ids.
Link projects (estym8ProjectId / bodiProjectId)YesStored in each product for the same pursuit; no automatic merge of conflicting fields—link is navigational.

4. Implementation rules for the Estym8 codebase

  1. No trusted writes from Bodi until partner auth is defined (e.g. signed webhooks, mutual TLS, or per-org API keys scoped to “ingest context only”). Until then, treat any external writer as invalid.
  2. Secrets: outbound Bodi integration must use server-only env (e.g. BODI_API_BASE, BODI_SERVICE_SECRET when added)—never expose to the browser bundle.
  3. Conflict resolution: if the same field could be edited in both tools, do not last-write-wins across services. Either partition fields (name in Estym8 vs BOD title in Bodi) or require human merge in one UI.

5. Related links