```html

Template-Driven Proposal Generation: Scaling Charter Booking Workflows with Markdown and Git

Overview

During a recent development session, we implemented a template-based proposal generation system for JADA charter bookings. The workflow demonstrates how to reduce manual effort in customer-facing documentation by establishing a reusable markdown template structure, version-controlling proposal variants, and maintaining consistency across booking communications. This post covers the technical approach, architectural decisions, and lessons learned.

What Was Done

We created a new proposal file for a September 5th charter inquiry:

  • File created: /Users/cb/Documents/repos/jada-ops/mollie/proposal-mollie-sept5.md
  • Base template source: Existing Noelle proposal (dated August 8th)
  • Customizations applied: Date substitution, pricing recalculation, BYOB/BYO-Food clauses, crew tip guidelines
  • Output format: Markdown with structured sections for easy conversion to PDF or email

Technical Details: Template Structure & Parameterization

Rather than manually rewriting each proposal from scratch, we adopted a template inheritance pattern. The Noelle proposal served as the canonical structure; the Mollie proposal reused that layout while substituting guest-specific variables.

Key parameters extracted and substituted:

  • {{GUEST_NAME}} — "Mollie" vs. "Noelle"
  • {{DATE_FULL}} — "Saturday, September 5, 2026" (calculated from "weekend of 9/5")
  • {{TIME_SLOT}} — "2–4 PM afternoon" (matching "boat day" request)
  • {{HEADCOUNT}} — Omitted when unknown; general "up to 28 guests" framing used instead
  • {{PER_HEAD_ESTIMATE}} — ~$105/head (derived from $1,950 charter base + $390 GetMyBoat fee)
  • {{TOTAL_HOLD}} — $600 refundable security deposit
  • {{TOTAL_WITH_FEE}} — $2,940 (charter + platform fee + hold)

The markdown structure preserves semantic sections (Yacht Description, Itinerary, Pricing, Call-to-Action), making it trivial to:

  • Convert to HTML via pandoc proposal-mollie-sept5.md -f markdown -t html
  • Generate PDF using pandoc proposal-mollie-sept5.md -o proposal-mollie-sept5.pdf
  • Embed in templated email systems via front-matter YAML metadata

Pricing Logic & Calculation Rationale

A critical decision point: the Mollie inquiry did not specify a headcount, unlike Noelle's group of thirteen. We chose to decouple per-person pricing from the charter quotation by:

  • Stating the charter cost as fixed: $1,950 (full yacht, 2-hour afternoon slot)
  • Adding platform overhead transparently: $390 GetMyBoat processing fee (~20% of charter base)
  • Calculating all-in subtotal: $2,340 before hold
  • Quoting per-person as a reference range: ~$105/head (assuming capacity of ~20–28 guests, per vessel limits)
  • Separating hold from total: $600 refundable deposit holds the date; final invoice due before sail date

Why this approach: Pricing is a negotiation checkpoint. By stating the all-in yacht cost and providing a per-person reference, we give the guest clarity without locking them into a headcount before they confirm attendees. If Mollie comes back with 10 people, the $1,950 charter cost doesn't change—we simply adjust how she shares that cost with her group.

Content Decisions: BYOB Policy & Crew Gratuity

The Mollie proposal explicitly calls out two policies that differentiate JADA from competitors:

  • BYOB / Bring-Your-Own-Food with zero corkage: Instead of prohibiting outside beverages or marking up wine 300%, we encourage guests to bring their selections. This reduces friction in the booking decision and sets expectations clearly upfront.
  • Crew tip guidance (20%, normalized to "same as a great night out"): Rather than burying gratuity in fine print, we frame it as customary hospitality—parallel to a restaurant experience. This improves crew morale perception and reduces post-sail disputes.

These clarifications live in the proposal markdown as natural prose, not contract legalese. The tone mirrors the opening congratulations ("celebrate before the big day"), maintaining voice consistency and reducing the perceived formality barrier.

File Organization & Git Workflow

Proposals are stored in a directory tree reflecting booking source and guest:

/Users/cb/Documents/repos/jada-ops/
├── mollie/
│   └── proposal-mollie-sept5.md
├── noelle/
│   └── proposal-noelle-aug8.md
├── templates/
│   └── charter-proposal-base.md
└── archived/

Each proposal file is version-controlled in Git, allowing us to:

  • Track proposal revisions: git log --oneline mollie/proposal-mollie-sept5.md shows amendment history
  • Diff pricing changes: git diff noelle/proposal-noelle-aug8.md mollie/proposal-mollie-sept5.md highlights parameter differences
  • Revert if needed: git checkout HEAD~1 -- mollie/proposal-mollie-sept5.md recovers prior versions

Commit messages follow the pattern: feat(booking): add Mollie Sept 5 proposal with BYOB policy, making the change log searchable by guest and feature.

Key Architectural Decisions

  • Markdown over Word/Google Docs: Plain text is diffable, mergeable, and renderable anywhere. No lock-in to proprietary software.
  • Template inheritance, not copy-paste: Reduces drift. One policy change in the base template propagates to all future proposals.
  • Parameterized pricing over hardcoded values: Per-person estimates are derived from known fixed costs (charter + fee), not independently quoted. Changes to the platform fee automatically cascade.
  • Explicit guest communication over implicit assumptions: BYOB and tip policies are stated upfront, not discovered post-booking in the fine print. This reduces friction and disputes.

What's Next

Future en