Intelligent cover letter formatting with semantic understanding of structure and content (project, gitignored)
Format cover letters with intelligent style application and automatic play title italicization. Uses the shared career documents template with 19 semantic styles and learns from your corrections over time.
Format with just body text (metadata auto-inferred):
Format this cover letter: [paste body paragraphs only]
I'll infer contact block, date, recipient, and RE line!
Format with complete JSON:
Format this cover letter: [paste full JSON with metadata]
Format from file:
Format my-cover-letter.txt
Semantic Analysis: I analyze content to understand elements (contact info, recipient address, RE line, body text, etc.)
Style Mapping: Based on context, I assign appropriate styles:
Hybrid Inline Styling: Play/production titles automatically italicized:
Generate Document: Create formatted .docx using template
Visual Preview: Show PDF preview for review
Learn from Corrections: If you correct a style choice, I remember for next time
Paragraph Styles:
Character Styles (inline):
Contact Block (top of page):
ANTHONY BYRNES
T: 213.305.3132
E: [email protected]
Recipient Address:
Colburn School
200 South Grand Avenue
Los Angeles, CA 90012
RE Line (bold orange, same as section headers):
RE: General Manager of Performances & Events Division
Body Text with auto-italicized play titles:
For Louis & Keely: Live at the Sahara, I generated $1.4 million...
→ "Louis & Keely: Live at the Sahara" automatically italicized from dictionary
Signature:
Sincerely,
[signature image]
Anthony Byrnes
You provide: Raw text or minimal JSON (just body paragraphs)
I infer:
Smart Job Description Matching:
career-applications/*/00-job-description.md filesConfirmation Before Formatting:
Inferred Metadata:
Contact: ✓ ANTHONY BYRNES
✓ T: 213.305.3132
✓ E: [email protected]
Date: November 11, 2025
Recipient: UCLA School of Theater, Film and Television
RE: Associate Dean and Chief Administrative Officer [CAO]
Salutation: Dear Search Committee,
Looks correct? (yes/modify/[field name])
Configuration:
~/.claude/skills/format-cover-letter/defaults.yamlStep 1: Analyze Content
I'll parse your content and create JSON structure:
{
"document_metadata": {
"type": "cover-letter",
"author_name": "Anthony Byrnes",
"document_title": "Position Title Cover Letter"
},
"content": [
{"text": "ANTHONY BYRNES", "style": "Contact Name", "type": "paragraph"},
{"text": "RE: Position Title", "style": "RE Line", "type": "paragraph"},
{"text": "Body with play title...", "style": "Body Text", "type": "paragraph"}
]
}
Step 2: Generate Document
I'll call the formatter to create your .docx:
import json
import subprocess
from pathlib import Path
# Save content mapping
mapping_file = "/tmp/cover_letter_mapping.json"
with open(mapping_file, 'w') as f:
json.dump(data, f, indent=2)
# Format document
result = subprocess.run([
"python3",
"format_cv.py",
mapping_file,
output_path,
"--document-type", "cover-letter",
"--preview"
], capture_output=True, text=True, cwd=str(Path.home() / "PycharmProjects/career-lexicon-builder"))
Step 3: Visual Preview
I'll convert to PDF and show you what it looks like using the open command.
Step 4: Review
You can request changes: "That venue should be italic" or "Don't emphasize that number"
Step 5: Learn (if corrections made)
If you made corrections, I'll update learned-preferences.yaml and add new plays to play-titles-dictionary.yaml.
The Problem: Manually marking up every play title is tedious:
{
"text": "For Louis & Keely: Live at the Sahara, I...",
"runs": [
{"text": "For ", "style": null},
{"text": "Louis & Keely: Live at the Sahara", "style": "Play Title"},
{"text": ", I...", "style": null}
]
}
The Solution: Dictionary auto-styling (95% of cases):
{
"text": "For Louis & Keely: Live at the Sahara, I...",
"style": "Body Text"
}
→ "Louis & Keely: Live at the Sahara" automatically italicized from dictionary!
Dictionary Location:
~/.claude/skills/format-cover-letter/play-titles-dictionary.yaml
Example dictionary: