Skip to content

Epic 18 — Export Pitch

Producers export a curated shortlist of talents as a pitch document. Three formats. Referenced in spec "AFTER THOUGHTS #2".


BE-EXPORT-001 — Export pitch generation

  • [x] Done

Files:

  • Create: src/services/export/pitchExporter.ts
  • Edit: src/graphql/schema/index.ts — add exportPitch mutation
  • Create: src/graphql/resolvers/export.ts

Mutation:

graphql
exportPitch(talentIds: [ID!]!, format: ExportFormat!, fields: [String!]): String!
# Returns a presigned S3 URL to the generated file

enum ExportFormat { FACE_SHEET FULL_INFO_SHEET PRESENTATION_DECK }

Format specs:

FormatOutputContent
FACE_SHEETPDFGrid of headshots with names only. Quick visual comparison.
FULL_INFO_SHEETPDF or XLSXSpreadsheet-style: name, age, location, skills, experience, union status, etc. fields param controls which columns to include.
PRESENTATION_DECKPDFOne talent per page/slide: name, age, talent/skills, location, reel link (clickable). Producer toggles which fields to include.

Implementation: Use pdf-lib (Node.js) to generate PDFs server-side. For XLSX use exceljs. Store output in S3 (castyou-exports/{producerId}/{exportId}.{ext}), return presigned URL (valid 1 hour).


FE-EXPORT-001 — Export pitch UI

  • [x] Done

Files:

  • Create: apps/app/src/pages/jobs/ExportPitchPage.tsx
  • Create: apps/app/src/components/ExportPitchModal.tsx — opened from shortlist/folder views
  • Create: apps/app/src/hooks/useExportPitch.ts

Description: "Export" button appears on the shortlist view and producer folders. Opens a modal:

  1. Format picker (Face Sheet / Full Info Sheet / Presentation Deck) with visual preview of each.
  2. Field selector (for Full Info Sheet / Deck): checklist of available fields.
  3. "Generate" → loading state → shows download link when ready. Uses DS Modal, Button, Checkbox, Skeleton.