```html

Dynamic Proposal Generation and Pricing Workflows: A Case Study in Template-Driven Document Management

During a recent development sprint, we refactored our proposal generation workflow for JADA yacht charters to support dynamic pricing adjustments and template reuse across multiple client proposals. This post documents the technical approach, architectural decisions, and lessons learned when building flexible, version-controlled proposal systems that scale across changing business requirements.

What Was Done

We migrated our proposal system from a manual, one-off document approach to a template-driven, Git-versioned workflow that allows rapid proposal generation with parameterized pricing, date adjustments, and content insertion. Specifically:

  • Created a canonical proposal template structure in Markdown stored in version control at /Users/cb/Documents/repos/jada-ops/mollie/proposal-mollie-sept5.md
  • Implemented a pricing calculation pipeline that updates charter rates, platform fees, and per-head costs based on sail duration and headcount
  • Established a grep-based content audit workflow to validate pricing consistency across all proposal instances
  • Documented BYOB policies, crew tipping conventions, and no-corkage terms directly in the proposal template

Technical Details: The Proposal Workflow

File Structure and Version Control

All proposals are stored in the /Users/cb/Documents/repos/jada-ops/ monorepo under client-specific subdirectories. Each proposal file uses a date-stamped naming convention: proposal-{client-slug}-{date}.md. This approach provides:

  • Automatic version history via Git commits
  • Easy grep-based audits across all proposals
  • Clear client attribution and temporal tracking
  • Markdown as the source format (human-readable, diffable, convertible to PDF/HTML)

Pricing Calculation Pipeline

The core challenge was establishing a repeatable, auditable pricing model. For the Mollie proposal, we implemented the following calculation:


Base Charter Rate (3-hour sail):        $2,325
Platform Fee (GetMyBoat, ~20%):         $465
Subtotal (all-in):                      $2,790
Refundable Security Deposit:            $600
---
Total Quoted Cost:                      $3,390
Per-Head Cost (÷ 28 max capacity):      ~$121/head

This structure was chosen because:

  • Transparency: Clients see the platform fee explicitly, building trust
  • Scalability: Per-head math works whether the group is 6 or 28 guests
  • Auditability: Each component (charter, fee, deposit) can be traced to business rules or third-party integrations

Content Validation Using grep

To ensure pricing consistency across all proposals, we ran:


grep -risn "three.hour\|3.hour\|three-hour\|2950\|2750\|2925\|three hour" \
  /Users/cb/Documents/repos/jada-ops \
  /Users/cb/Documents/repos/jada-ops

This command searched recursively for old or conflicting pricing markers and duration references. The regex patterns catch common variations:

  • three.hour|3.hour|three-hour|three hour — Multiple spellings of 3-hour sails
  • 2950|2750|2925 — Previous, incorrect rate values that should not appear in new proposals

The grep results informed our decision to standardize on the canonical 3-hour rate of $2,325, replacing the older 2-hour template that quoted $1,950.

Proposal Template Architecture

Structure and Reusability

The Mollie proposal was derived from the Noelle proposal template, with these key sections:

  • Opening Greeting: Client name, acknowledgment of inquiry, yacht introduction
  • Yacht Description: Historic context (built 1938, 65-foot classic sailing yacht), crew professionalism, location (Sheraton on Harbor Island)
  • Sail Details: Duration (2–5 PM, 3 hours), exclusivity (entire yacht reserved), crew responsibilities, and guest experience framing
  • Policy Section: BYOB with no corkage fees, bring-your-own-food option, customary 20% crew tip (framed as "same as a great night out")
  • Closing: Event-specific language (e.g., "celebrate before the big day" for a bachelorette event)

Why Template-Driven?

Instead of writing each proposal from scratch, we maintain a living template that encodes our brand voice, legal policies, and pricing logic. This reduces:

  • Error Rate: Typos and pricing miscalculations are caught during grep audits before sending to clients
  • Time to Proposal: A new proposal takes minutes to customize rather than hours
  • Inconsistency: All clients receive the same professional structure and tone

Key Decisions and Trade-Offs

1. Markdown over Word/Google Docs

We chose Markdown stored in Git instead of binary document formats because:

  • Diffs are human-readable; you can see exactly what changed between Noelle and Mollie proposals
  • Version control history is permanent and auditable
  • No external service dependency (no Google account, no Office 365)
  • Easy to programmatically parse or convert to PDF downstream

2. Explicit Per-Head Pricing Without Headcount Lock-In

For Mollie, no exact headcount was given upfront. Rather than wait or guess, we:

  • Quoted the all-in charter cost ($2,790)
  • Noted the refundable deposit ($600)
  • Provided a per-head estimate (~$121 across up to 28 max capacity)

This avoids double-quoting if the client's group size changes, and positions us as flexible rather than rigid.

3. Crew Tip as a Business Norm, Not an Upsell

Instead of hiding the 20% crew tip as a surprise charge, we embedded it in proposal language: "customary 20% crew tip (same as a great night out)." This:

  • Sets expectations early
  • Aligns with hospitality norms (restaurant dining, hotels)
  • Removes friction during payment/boarding

Infrastructure and Content Delivery Considerations

Future State: Proposal-as-a-Service

While this workflow is currently manual (human-edited Markdown files), the architecture supports future automation:

  • Headless CMS Integration: