Apache-3 BidOps · Docs · 02
Bundle format
Shape of an auto-applied bid bundle: the directory structure, file naming, and per-artifact contract.
A "bundle" is the full set of artifacts the auto-apply pipeline produces for a single SAM.gov opportunity.
Directory layout
docs/sample-bundles/<noticeId>/
├── README.md # human summary + guardrail log
├── email-body.md # the email body for the CO
├── capability_statement.md # generated capability statement
├── sources_sought_response.md # if applicable to notice type
├── rfi_response.md # if applicable
├── rfq_response.md # if applicable
├── prime_outreach_email.md # email to prime contractor SBLOs
├── sblo_outreach_email.md # email to agency SBLOs
├── capability_statement.pdf # Apache-3 letterhead PDF
├── sources_sought_response.pdf
├── rfi_response.pdf
├── rfq_response.pdf
├── prime_outreach_email.pdf
└── sblo_outreach_email.pdf
README.md shape
Each bundle's README contains:
# <noticeId>
**<opportunity title>**
**Agency:** <agency name>
**Mode:** <templates_only | llm_enhanced>
**Win themes:** <count>
**Artifacts:** <count>
**Recommended submission path:** <email_co | sam_gov_portal | piee | manual>
**Generated:** <ISO 8601 timestamp>
## Artifacts
- [<title>](./<type>.md) — confidence: <high | medium | low>
## Attachments
- `<filename>` (<artifact_type>) — <asset_url if present>
## Claim guardrail activity
Stripped: <forbidden phrases stripped from generated content>
Verification flags: <missing-info markers per artifact>
## Email body preview
```<first 400 chars>...```
TypeScript types
The full type definitions live in:
src/lib/auto-apply/types.ts—AutoApplyBundle,AutoApplyAttachment,AutoApplySubmissionResultsrc/lib/artifacts/types.ts—GeneratedArtifact,ArtifactType
How to regenerate
# Single bundle (filter by noticeId)
node --import tsx scripts/generate-all-bundles.ts MOCK-W912DY-2026-001
# All bundles, with PDFs
node --import tsx scripts/generate-all-bundles.ts --pdf
# Just PDFs (markdown already committed)
node --import tsx scripts/render-bundle-pdfs.ts --all
How to score
node --import tsx scripts/score-bundle.ts --all
The CI bundle-quality-score job runs this on every push.