Appearance
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— addexportPitchmutation - 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:
| Format | Output | Content |
|---|---|---|
FACE_SHEET | Grid of headshots with names only. Quick visual comparison. | |
FULL_INFO_SHEET | PDF or XLSX | Spreadsheet-style: name, age, location, skills, experience, union status, etc. fields param controls which columns to include. |
PRESENTATION_DECK | One 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:
- Format picker (Face Sheet / Full Info Sheet / Presentation Deck) with visual preview of each.
- Field selector (for Full Info Sheet / Deck): checklist of available fields.
- "Generate" → loading state → shows download link when ready. Uses DS
Modal,Button,Checkbox,Skeleton.