Precon RFI Drafting Workflow

Summary

RFI drafting helps estimators turn document questions and opportunity context into candidate communication. The system can extract candidate questions, select recipients, persist draft state, and expose editing controls, but the operator remains the final author.

The concept page Precon RFI Drafting covers the primitive. This thread explains how RFI drafting connects documents, contacts, workspace state, processing tasks, and model-assisted text.

Reader Question

How does Precon propose RFIs without letting generated text or extracted questions become unreviewed external communication?

Surface Or Workflow

Operators use the RFI workspace panel, candidate list, draft selector, draft editor, recipient selector, and RFI facts inside the estimator workspace. Engineers enter through RFI API routes, read services, persistence services, recipient selection, source-question extraction, processing tasks, and tests.

Lifecycle

The workflow starts with published documents and solicitation contacts. Runtime tasks extract candidate questions and relevant facts. The RFI read layer builds workspace state from candidates, drafts, recipients, and source evidence. Operators select, edit, and decide what is worth sending.

Persistence keeps draft state separate from final communication. That lets Precon support iteration while still treating outbound messages as deliberate operator action rather than automatic side effect.

Child Threads

Implementation Boundaries

RFI UI lives under app/web/app/precon/opportunities/workspace/rfi; API routes under app/api/precon/rfi; services under services/precon/rfi; shared types under libs/precon/rfi; processing integration under services/precon/processing/runtime/rfi_tasks.py and services/precon/processing/tasks/rfi.py.

Tradeoffs

RFI drafting is useful only if it stays editable and evidence-backed. That means the module keeps candidate extraction, draft persistence, recipient selection, and operator send decisions distinct.

Visual

The current visual is a graph neighborhood. The intended visual is an RFI workflow diagram from document facts to candidate questions, recipient context, draft state, operator edit, and external communication boundary.

Source Evidence

  • docs/engineering/concepts/precon-rfi-drafting.md
  • app/web/app/precon/opportunities/workspace/rfi
  • app/api/precon/rfi
  • services/precon/rfi
  • libs/precon/rfi
  • services/precon/processing/runtime/rfi_tasks.py
  • services/precon/processing/tasks/rfi.py
  • tests/precon/precon_rfi_pure_helpers.py
  • tests/precon/precon_rfi_state_helpers.py