> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sertifikasitrainer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Prompt branding & chat

> Interviewer, extractor, dan prompt per output LinkedIn/IG/email/website.

Flow branding membantu trainer membuat **konten promosi** — bukan dokumen SKKNI.

## 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**

Field yang dikumpulkan (via extractor):

| 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

Di `ai-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 ini di-inject ke user prompt sebagai `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`
