Chat: interviewer
File:apps/api/src/ai/prompts/interviewer.prompt.ts
Perilaku utama:
- Bahasa Indonesia, singkat, satu pertanyaan (atau 2–3 field terkait sekaligus)
- Branding: kumpulkan identitas trainer, positioning, brand voice, promo brief
- Tidak bahas SKKNI / unit / KUK
- Setelah lengkap → arahkan user klik Generate Konten
| Fase | Field |
|---|---|
| trainer_identity | trainer_name, trainer_credentials, expertise_areas, experience_story |
| brand_positioning | organization_name, target_audience, pain_points, value_proposition, training_programs |
| brand_voice | tone_of_voice, brand_keywords |
| promo_brief | promo_program, promo_hook, call_to_action |
Chat: extractor
File:apps/api/src/ai/prompts/extractor.prompt.ts
- Hanya ekstrak yang eksplisit dari pesan user
- Pertanyaan user (“maksudnya gimana?”) → patch kosong
- Koreksi user (“bukan marketing, public speaking”) → patch field yang benar
Knowledge base branding
File:apps/api/src/ai/prompts/branding-knowledge.ts
brandingKnowledgePrompt — prinsip personal branding trainer Indonesia:
- Positioning thought leader, tone hangat-profesional
- Framework PAS, AIDA, format LinkedIn / Instagram / email / hero website
- Larangan klaim berlebihan & kata “AI-generated”
System prompt enricher branding
Diai-enricher.ts → BRANDING_SYSTEM_PROMPT:
- Gabung
brandingKnowledgePrompt+ aturan JSON - Versi:
branding-enricher-v1
Panduan per tipe dokumen
brandingDocumentGuidance di branding-knowledge.ts:
documentType | Instruksi panjang |
|---|---|
branding-linkedin-post | 180–280 kata, hook baris pertama, 3–5 hashtag |
branding-instagram-caption | 120–200 kata, max 3 emoji, CTA DM/WA |
branding-email-promo | subject ≤50 char, preview ≤90, body 3 paragraf PAS |
branding-website-hero | headline ≤12 kata, 3 bullet benefit, CTA 2–4 kata |
PANDUAN DOKUMEN: ...
Field exact vs enrichable
Semua branding doc memproteksi fakta user:trainer_name, organization_name, expertise_areas, target_audience, value_proposition, promo_program, promo_hook, call_to_action, tone_of_voice
AI hanya menulis field kreatif (content, body, headline, dll.)
Output
Renderer:inline-text — teks langsung di UI, bukan DOCX.
Definisi: apps/api/src/generation/document-definitions/branding-definitions.ts