Skip to main content

PDF Export

ForgeX provides robust PDF generation capabilities to create professional bid proposals directly from the application. Export complete bids with detailed cost breakdowns, scope summaries, and customizable messaging.

info

PDF generation happens client-side using jsPDF, ensuring fast exports without server load. All bid data is formatted and styled automatically.

Featuresโ€‹

๐Ÿงพ

Complete Bid Breakdown

Export all scopes, items, and cost summaries in a professional layout

๐Ÿ’ฌ

Customizable Message

Include custom introduction/cover letter for each bid

๐Ÿ›ก๏ธ

Tax & Compliance Flags

Display tax exemption status, certified payroll, insurance type

โœ…

Exclusions List

Automatically include active exclusions from templates


What's Included in the Exportโ€‹

Every PDF export contains the following sections:

Header Sectionโ€‹

  • Company branding (Precision Site Services logo)
  • Bid metadata: Job name, client name, location
  • Prepared by: Estimator name
  • Date prepared: Creation/last updated timestamp

Bid Summaryโ€‹

Cost rollup showing totals by module:

ModuleDescription
ConcreteTotal concrete items cost
LaborTotal labor cost (including per diem if enabled)
EquipmentTotal equipment rental cost
MaterialsTotal materials cost
SubcontractorTotal subcontractor/sublet cost
MiscellaneousTotal misc items cost

Financial Summary:

Subtotal:        $X,XXX.XX
Overhead (X%): $X,XXX.XX
Profit (X%): $X,XXX.XX
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Total: $X,XXX.XX

Scope Overviewโ€‹

High-level table showing each scope's cost breakdown:

Scope NameConcreteLaborEquipmentMaterialsSubletMiscTotal
Foundation$10,000$5,000$3,000$2,000$1,500$500$22,000
Driveway (5ร—)$15,000$7,500$4,000$2,500$1,000$0$30,000
note

Scope multipliers are displayed (e.g., "Driveway (5ร—)") to indicate repeated areas.

Detailed Scope Breakdownโ€‹

For each scope, the PDF includes:

Module-Level Detailsโ€‹

Each module shows individual items with descriptions and costs:

Concrete Items:

โ€ข 3000 PSI Slab
100 SF โ€ข 3.70 CY โ€ข 500 lbs rebar โ€ข #4 @ 18"
$2,410.00

โ€ข Foundation Walls
50 SF โ€ข 1.85 CY โ€ข 250 lbs rebar โ€ข #5 @ 12"
$1,850.00

Labor Items:

โ€ข Concrete Finisher
2.0 crew โ€ข 8.0 hrs/day ร— 5.0 days โ€ข $38/hr
$2,052.00

โ€ข Laborer
4.0 crew โ€ข 8.0 hrs/day ร— 5.0 days โ€ข $28/hr
$3,584.00

Equipment Items:

โ€ข Dozer
1.0 units โ€ข 5.0 days โ€ข $931/day โ€ข Delivery $150 โ€ข Fuel $250
$5,055.00

Material Items:

โ€ข Rebar #4
1000.0 LB โ€ข $0.92/LB โ€ข Waste 5.0%
$966.00

Subcontractor Items:

โ€ข Concrete Pumping
1.0 LS โ€ข $2,500/LS โ€ข Buffer 10.0%
$2,750.00

Miscellaneous Items:

โ€ข Permits
1.0 units โ€ข $500/unit
$500.00

Compliance & Flagsโ€‹

The PDF displays important bid flags:

FlagDescription
Tax Exemptโœ… if bid is tax-exempt, โŒ otherwise
Per Diem Enabledโœ… if per diem costs are included
Certified Payrollโœ… if certified payroll required
C3 Requiredโœ… if C3 form required
Drug Testing Requiredโœ… if drug testing required
Insurance TypeCCIP, OCIP, RCIP, or None

Exclusionsโ€‹

If the bid has active exclusions, they're listed at the bottom:

Exclusions:
โ€ข Permits and fees (owner-provided)
โ€ข Site utilities (existing connections assumed)
โ€ข Disposal of hazardous materials
โ€ข Work outside of scope listed above
note

Only active exclusions from templates are included. Inactive exclusions are omitted.

Custom Messageโ€‹

Optional custom message/cover letter at the top of the PDF:

"Thank you for the opportunity to bid on this project. We have reviewed the plans and specifications thoroughly. This proposal includes all labor, materials, and equipment necessary to complete the work as specified. We look forward to working with you."


Generating a PDFโ€‹

1
Open Bid Detail

Navigate to the bid you want to export.

2
Click Export PDF

Click the "Export PDF" button in the top toolbar.

3
Review Export Modal

The export modal displays:

  • Scope selection (export all or select specific scopes)
  • Custom message field
  • Preview of financial summary
4
Add Custom Message (Optional)

Enter a custom message to appear at the top of the PDF. This is useful for:

  • Cover letters
  • Special notes to the client
  • Clarifications or assumptions
5
Select Scopes (Optional)

By default, all scopes are exported. Uncheck scopes to exclude them:

  • Useful for partial bids or alternates
  • Excluded scopes won't appear in scope overview or details
  • Financial summary adjusts automatically
6
Generate PDF

Click "Generate PDF".

The browser generates the PDF and prompts you to download:

  • Filename: Bid_[JobName]_[Date].pdf
  • Example: Bid_Commercial_Foundation_2025-01-29.pdf
tip

Save generated PDFs to your bid attachments for easy reference and version tracking.


Customization Optionsโ€‹

Message Customizationโ€‹

The custom message field supports:

  • Plain text (no formatting, line breaks preserved)
  • Multi-paragraph content (separate with blank lines)
  • No length limit (but keep it concise for readability)

Best practices:

  • Keep it professional and concise
  • Use bullet points for clarity (manual formatting)
  • Avoid special characters that may not render correctly

Scope Selectionโ€‹

Use cases for selective scope export:

Bid Alternates

Export separate PDFs for base bid vs. alternate scopes.

Example:

  • Base bid: Foundation + Driveway
  • Alternate 1: Add Sidewalks scope
  • Alternate 2: Add Retaining Wall scope
Phased Proposals

Split large projects into phases:

  • Phase 1 PDF: Excavation + Foundation
  • Phase 2 PDF: Slab + Parking Lot
Client Comparison

Create multiple proposals for the same project with different scope combinations for client to compare options.

Template Variables (Future)โ€‹

warning

Planned Feature: Future versions will support template variables like {{clientName}}, {{bidNumber}}, and {{date}} in custom messages for dynamic content.


PDF Layout & Stylingโ€‹

Page Formatโ€‹

  • Paper size: US Letter (8.5" ร— 11")
  • Orientation: Portrait
  • Margins: 0.5" all sides
  • Font: Helvetica (sans-serif)

Typographyโ€‹

ElementFont SizeStyle
Title (Job Name)20ptBold
Section Headers14ptBold
Subsection Headers12ptBold
Body Text10ptRegular
Item Details9ptRegular, Gray

Color Schemeโ€‹

  • Headers: Dark blue (#1a365d)
  • Body text: Black (#000000)
  • Item details: Gray (#718096)
  • Borders: Light gray (#e2e8f0)

Table Formattingโ€‹

  • Headers: Bold, dark background
  • Rows: Alternating white/light gray for readability
  • Borders: Thin gray lines
  • Alignment: Numbers right-aligned, text left-aligned

API Endpointโ€‹

Generate PDF Dataโ€‹

The backend provides a dedicated endpoint for fetching PDF-ready data:

POST /api/bids/:bidId/pdf-data

Request Body:
{
"scopes": ["scope-id-1", "scope-id-2"], // Optional: filter scopes
"message": "Custom message text", // Optional
"overheadPercent": 10, // Optional: override
"profitPercent": 5 // Optional: override
}

Response:
{
"meta": {
"bidId": "bid-123",
"jobName": "Commercial Foundation",
"clientName": "ABC Construction",
"clientEmail": "contact@abc.com",
"location": "Austin, TX",
"preparedBy": "jmckenzie@precisionsiteservices.com",
"createdAt": "2025-01-15T10:00:00Z",
"updatedAt": "2025-01-29T14:30:00Z"
},
"flags": {
"taxExempt": false,
"perDiemEnabled": true,
"certifiedPayroll": true,
"c3Required": false,
"drugTestingRequired": true
},
"compliance": {
"insuranceType": "CCIP",
"certifiedPayroll": true,
"c3Required": false,
"drugTestingRequired": true
},
"exclusions": [
"Permits and fees (owner-provided)",
"Site utilities (existing connections assumed)"
],
"message": "Custom message text",
"modules": [
{ "key": "concrete", "label": "Concrete", "amount": 40000.00 },
{ "key": "labor", "label": "Labor", "amount": 20000.00 },
...
],
"overview": [
{
"id": "scope-1",
"name": "Foundation",
"totals": {
"concrete": 10000.00,
"labor": 5000.00,
"equipment": 3000.00,
"materials": 2000.00,
"subcontractor": 1500.00,
"misc": 500.00,
"total": 22000.00
},
"multiplier": 1,
"shape": "Slab"
}
],
"scopes": [
{
"id": "scope-1",
"name": "Foundation",
"multiplier": 1,
"shape": "Slab",
"totals": { ... },
"modules": {
"concrete": {
"key": "concrete",
"label": "Concrete",
"total": 10000.00,
"items": [
{
"description": "3000 PSI Slab",
"detail": "100 SF โ€ข 3.70 CY โ€ข 500 lbs rebar โ€ข #4 @ 18\"",
"totalCost": 2410.00
}
]
},
...
}
}
],
"financial": {
"subtotal": 60000.00,
"overheadAmount": 6000.00,
"profitAmount": 3300.00,
"totalCost": 69300.00,
"overheadPercent": 10.0,
"profitPercent": 5.0
}
}
note

The prepareBidPdfPayload function in /services/bids/backend/src/services/pdf/bidPdfData.js handles all data transformation and formatting.


Best Practicesโ€‹

๐Ÿ‘๏ธ

Review Before Exporting

Always review the bid summary in-app before generating PDF to catch errors or missing data.

๐Ÿท๏ธ

Use Descriptive Job Names

Job names appear prominently in the PDF. Use clear, descriptive names for professionalism.

๐Ÿ“‹

Keep Exclusions Updated

Regularly review and update exclusion templates to ensure they're relevant to current bids.

๐Ÿ“Ž

Save PDFs as Attachments

Upload generated PDFs to bid attachments for version tracking and easy sharing.


Troubleshootingโ€‹

Common Issuesโ€‹

IssueCauseSolution
Missing scopes in PDFScopes not linked to bidVerify scope-bid relationships
Zero costs displayedCost rollup not triggeredManually trigger cost rollup before export
Tax amounts incorrectTax rates outdatedUpdate pricing database tax rates
PDF won't downloadBrowser popup blockerAllow popups for ForgeX domain
Custom message cut offMessage too longKeep message under ~500 words

Browser Compatibilityโ€‹

BrowserSupportNotes
Chromeโœ… FullRecommended
Firefoxโœ… Full
Safariโœ… Full
Edgeโœ… Full
IE 11โŒ Not supportedUse modern browser

Future Enhancementsโ€‹

note

Planned features for PDF export:

  • Custom templates: Choose from multiple PDF layouts/styles
  • Template variables: Dynamic content insertion (client name, bid number, etc.)
  • Logo customization: Upload custom company logos
  • Signature fields: Add signature blocks for client approval
  • Attachment embedding: Include photos/plans in PDF
  • Email integration: Send PDF directly to client from ForgeX

Next Stepsโ€‹