2.8 KiB
id, title, status, assignee, created_date, updated_date, labels, dependencies, priority, ordinal
| id | title | status | assignee | created_date | updated_date | labels | dependencies | priority | ordinal |
|---|---|---|---|---|---|---|---|---|---|
| TASK-49 | Improve audit outreach email tone | In Progress | 2026-06-08 19:30 | 2026-06-08 19:48 | high | 51000 |
Description
Add evidence-first, collegial-direct tonal guidelines for generated outreach emails, wire them into the existing German copy stage without extra AI calls, and hard-block unnatural email copy before outreach_ready.
Acceptance Criteria
- #1 Shared customer tone guidelines capture the selected collegial-direct email style and banned patterns
- #2 German copy prompts use the tone guidelines, explicit lead context, at most two verified findings, and no extra AI stage or model call
- #3 Deterministic German copy guard blocks unnatural email subjects and bodies while keeping public audit tone checks limited to existing rules
- #4 Quality review applies the same first-contact email rubric
- #5 Focused and full regression tests cover natural email pass cases, unnatural email failures, source wiring, and no new generation stage
Implementation Plan
- Add failing tests for natural vs. formulaic outreach email tone
- Add shared collegial-direct tone guideline module
- Add deterministic hard guard for email subject/body tone
- Wire guidelines into German copy and quality review prompts without a new AI stage
- Run focused tests, full regression, lint, diff check, and Convex dev sync
Implementation Notes
Implemented the evidence-first outreach email tone pass. Added lib/ai/customer-tone-guidelines.ts with the selected collegial-direct sender posture, short first-contact email constraints, banned phrases, and prompt helper. Updated German copy generation to remove the old Ich-Ich instruction, include the shared tone section, pass normalized evidence context, and keep the existing generation call structure. Added hard deterministic email tone checks for subject length/pitch patterns, email length, sentence/paragraph count, formulaic Ich-habe/Ich-schlage-vor patterns, brochure language, mini-audit structure, informal address, and missing low-friction asks. Public audit hard guard behavior remains limited to the existing rules. Quality review now explicitly asks whether the email sounds like a real first email from Matthias, not AI sales copy, and whether concrete claims are backed by verified findings. Verification: focused tests 60/60 passed; full pnpm test 395/395 passed; targeted ESLint passed; git diff --check passed; npx convex dev --once synced successfully after fixing the Convex-only typecheck issue by passing evidenceInput instead of raw evidence.