Default

<think>
docx udah terinstall. Sekarang aku buat script untuk generate dokumen Word.
</think>

const { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
        Header, Footer, AlignmentType, LevelFormat, HeadingLevel,
        BorderStyle, WidthType, ShadingType, PageNumber, PageBreak } = require('docx');
const fs = require('fs');

// Border style
const border = { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" };
const borders = { top: border, bottom: border, left: border, right: border };

// Table cell helper
function cell(text, width, bold = false, fill = null) {
    return new TableCell({
        borders,
        width: { size: width, type: WidthType.DXA },
        shading: fill ? { fill: fill, type: ShadingType.CLEAR } : undefined,
        margins: { top: 80, bottom: 80, left: 120, right: 120 },
        children: [new Paragraph({
            children: [new TextRun({ text: text, bold: bold, font: "Arial", size: 20 })]
        })]
    });
}

// Header cell
function headerCell(text, width) {
    return cell(text, width, true, "D5E8F0");
}

const doc = new Document({
    styles: {
        default: { document: { run: { font: "Arial", size: 22 } } },
        paragraphStyles: [
            { id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
              run: { size: 36, bold: true, font: "Arial", color: "1F4E79" },
              paragraph: { spacing: { before: 300, after: 200 }, outlineLevel: 0 } },
            { id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
              run: { size: 28, bold: true, font: "Arial", color: "2E75B6" },
              paragraph: { spacing: { before: 240, after: 120 }, outlineLevel: 1 } },
            { id: "Heading3", name: "Heading 3", basedOn: "Normal", next: "Normal", quickFormat: true,
              run: { size: 24, bold: true, font: "Arial", color: "333333" },
              paragraph: { spacing: { before: 180, after: 80 }, outlineLevel: 2 } },
        ]
    },
    numbering: {
        config: [
            { reference: "bullets",
              levels: [{ level: 0, format: LevelFormat.BULLET, text: "\u2022", alignment: AlignmentType.LEFT,
                style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },
            { reference: "numbers",
              levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT,
                style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },
        ]
    },
    sections: [{
        properties: {
            page: {
                size: { width: 12240, height: 15840 },
                margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 }
            }
        },
        headers: {
            default: new Header({
                children: [new Paragraph({
                    alignment: AlignmentType.RIGHT,
                    children: [new TextRun({ text: "Riset Kompetitor Rolina", font: "Arial", size: 18, color: "666666" })]
                })]
            })
        },
        footers: {
            default: new Footer({
                children: [new Paragraph({
                    alignment: AlignmentType.CENTER,
                    children: [new TextRun({ text: "Page ", font: "Arial", size: 18 }), new TextRun({ children: [PageNumber.CURRENT], font: "Arial", size: 18 })]
                })]
            })
        },
        children: [
            // Cover
            new Paragraph({ spacing: { before: 2000 } }),
            new Paragraph({
                alignment: AlignmentType.CENTER,
                children: [new TextRun({ text: "RISET KOMPETITOR", font: "Arial", size: 56, bold: true, color: "1F4E79" })]
            }),
            new Paragraph({
                alignment: AlignmentType.CENTER,
                children: [new TextRun({ text: "Visa Services di Bali", font: "Arial", size: 44, color: "2E75B6" })]
            }),
            new Paragraph({ spacing: { before: 400 } }),
            new Paragraph({
                alignment: AlignmentType.CENTER,
                children: [new TextRun({ text: "ROLINA", font: "Arial", size: 36, bold: true, color: "333333" })]
            }),
            new Paragraph({
                alignment: AlignmentType.CENTER,
                children: [new TextRun({ text: "Jasa Visa Pertama di Bali", font: "Arial", size: 28, italics: true, color: "666666" })]
            }),
            new Paragraph({ spacing: { before: 800 } }),
            new Paragraph({
                alignment: AlignmentType.CENTER,
                children: [new TextRun({ text: "Analisis Kompetitor & Rekomendasi Strategi Meta Ads", font: "Arial", size: 24, color: "666666" })]
            }),
            new Paragraph({ spacing: { before: 1200 } }),
            new Paragraph({
                alignment: AlignmentType.CENTER,
                children: [new TextRun({ text: "30 Mei 2026", font: "Arial", size: 22, color: "999999" })]
            }),

            // Page break
            new Paragraph({ children: [new PageBreak()] }),

            // Table of Contents placeholder
            new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun("Daftar Isi")] }),
            new Paragraph({ spacing: { before: 200 } }),
            new Paragraph({ children: [new TextRun("1. Konteks Bisnis...................................................................................................... 3")]}),
            new Paragraph({ children: [new TextRun("2. Kompetitor Utama.................................................................................................. 3")]}),
            new Paragraph({ children: [new TextRun("3. Strategi Meta Ads Kompetitor............................................................................ 8")]}),
            new Paragraph({ children: [new TextRun("4. Rekomendasi Positioning untuk Rolina................................................................. 10")]}),
            new Paragraph({ children: [new TextRun("5. Quick Wins............................................................................................................ 12")]}),

            new Paragraph({ children: [new PageBreak()] }),

            // Section 1
            new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun("1. Konteks Bisnis")] }),
            new Paragraph({ spacing: { before: 100 } }),
            new Table({
                width: { size: 9360, type: WidthType.DXA },
                columnWidths: [3000, 6360],
                rows: [
                    new TableRow({ children: [headerCell("Detail", 3000), headerCell("Informasi", 6360)] }),
                    new TableRow({ children: [cell("Bisnis", 3000), cell("Rolina", 6360)] }),
                    new TableRow({ children: [cell("Lokasi", 3000), cell("Bali, Indonesia", 6360)] }),
                    new TableRow({ children: [cell("Target", 3000), cell("WNA (Warga Negara Asing) yang mau ke Indonesia", 6360)] }),
                    new TableRow({ children: [cell("Platform", 3000), cell("Meta Ads (Facebook & Instagram)", 6360)] }),
                    new TableRow({ children: [cell("Positioning", 3000), cell("Jasa visa pertama di Bali", 6360)] }),
                    new TableRow({ children: [cell("Tanggal Riset", 3000), cell("30 Mei 2026", 6360)] }),
                ]
            }),

            new Paragraph({ children: [new PageBreak()] }),

            // Section 2
            new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun("2. Kompetitor Utama")] }),
            new Paragraph({ spacing: { before: 100 } }),
            new Paragraph({ children: [new TextRun("Ditemukan ~510 iklan di Meta Ads untuk keyword "visa bali" dan "visa indonesia". Berikut 5 kompetitor utama:")] }),
            new Paragraph({ spacing: { before: 200 } }),

            // Competitor 1
            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun("2.1 Visa by Bahalap Uras")] }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Profil")] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Website: visabybahalapuras.com", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Lokasi: Munggu area, dekat Canggu/Nuanu, Bali", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Didirikan: 2021", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Bahasa: English, Indonesian, Russian, French", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "WhatsApp: +62 877 5134 6157 (French), +62 859 5677 9547 (Russian)", font: "Arial", size: 22 })] }),

            new Paragraph({ spacing: { before: 100 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Layanan")] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Single Entry Visa (30-180 hari) - tourism, business, internship, music performer", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Multiple Entry Visa (1-2 tahun)", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("KITAS & extension", font: "Arial", size: 22 })] }),

            new Paragraph({ spacing: { before: 100 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Positioning & USP")] }),
            new Paragraph({ children: [new TextRun({ text: ""Affordable & reliable services since 2021, supported by English, Indonesian, Russian, and French speaking team"", font: "Arial", size: 22, italics: true, color: "666666" })] }),
            new Paragraph({ spacing: { before: 80 } }),
            new Paragraph({ children: [new TextRun("Keunggulan: Multi-language team (French & Russian speaker langsung via WA), harga transparan di website, targeting turis Western + Russian market.")] }),

            new Paragraph({ spacing: { before: 300 } }),

            // Competitor 2
            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun("2.2 Peak Solutions Group")] }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Profil")] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Website: peaksolutions.co.id", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Lokasi: Jl. Sunset Road No. 99D, Badung, Bali", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Didirikan: 2020", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Bahasa: English, Russian", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Kontak: +62 821 3005 0004 (English), +62 821 4732 1807 (Russian)", font: "Arial", size: 22 })] }),

            new Paragraph({ spacing: { before: 100 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Layanan")] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("C1 Tourism Visa Extension", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("B1 eVOA (Electronic Visa on Arrival)", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("B211 Visa (Business/social visa)", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("D12 Investment Visa, KITAS (Investor/Working)", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Company Registration Advisory (PT PMA)", font: "Arial", size: 22 })] }),

            new Paragraph({ spacing: { before: 100 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Positioning & USP")] }),
            new Paragraph({ children: [new TextRun({ text: ""Leading Business Visa Consultant in Bali"", font: "Arial", size: 22, italics: true, color: "666666" })] }),
            new Paragraph({ spacing: { before: 80 } }),
            new Paragraph({ children: [new TextRun("Keunggulan: Fokus B2B/business traveler, end-to-end support (visa + company setup), personalized approach + strong local network.")] }),

            new Paragraph({ children: [new PageBreak()] }),

            // Competitor 3
            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun("2.3 eVisa Bali")] }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Profil")] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Website: evisabali.com", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Founded: 12+ tahun pengalaman", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Kontak: +62 877 8850 0099 (WA), info@evisabali.com", font: "Arial", size: 22 })] }),

            new Paragraph({ spacing: { before: 100 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Layanan")] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Tourist Visa Services", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Working Permit (KITAS)", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Corporate Legal Support", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Special Offer: Stay in Bali for 6 months", font: "Arial", size: 22 })] }),

            new Paragraph({ spacing: { before: 100 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Positioning & USP")] }),
            new Paragraph({ children: [new TextRun({ text: ""Indonesia's most trusted visas agency in Bali for Expats"", font: "Arial", size: 22, italics: true, color: "666666" })] }),
            new Paragraph({ spacing: { before: 80 } }),
            new Paragraph({ children: [new TextRun("Keunggulan: 12+ tahun pengalaman (credibility tinggi), licensed agency, komitmen customer satisfaction, online application system.")] }),

            new Paragraph({ spacing: { before: 300 } }),

            // Competitor 4
            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun("2.4 Rumaka Visa")] }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Profil")] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Website: rumakavisa.com", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Lokasi: Nakula Plaza, Legian, Badung, Bali", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Perusahaan: PT. Rumaka Indo Global", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Kontak: +62 813 269 5680 (WA)", font: "Arial", size: 22 })] }),

            new Paragraph({ spacing: { before: 100 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Layanan")] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Visa & Immigration", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("PT PMA Registration", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Legal Consultation", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Real-time visa tracking", font: "Arial", size: 22 })] }),

            new Paragraph({ spacing: { before: 100 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Positioning & USP")] }),
            new Paragraph({ children: [new TextRun({ text: ""Your Indonesia Gateway Start Here"", font: "Arial", size: 22, italics: true, color: "666666" })] }),
            new Paragraph({ spacing: { before: 80 } }),
            new Paragraph({ children: [new TextRun("Keunggulan: Real-time status tracking (transparency), fast processing, 100% guaranteed, online application + tracking system.")] }),

            new Paragraph({ children: [new PageBreak()] }),

            // Competitor 5
            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun("2.5 VISALF Indonesia")] }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Profil")] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Facebook: visabyvisalf", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Coverage: Bali, Jakarta, Lombok, dan lainnya", font: "Arial", size: 22 })] }),

            new Paragraph({ spacing: { before: 100 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Layanan")] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Tourist Visa, Business Visa", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Digital Nomad Visa, Remote Worker Visa", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("KITAS (Work, Retirement, Investment)", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("PT PMA (Perusahaan asing), Free consultation", font: "Arial", size: 22 })] }),

            new Paragraph({ spacing: { before: 100 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("Positioning & USP")] }),
            new Paragraph({ children: [new TextRun({ text: ">30.000 satisfied customers, multi-location coverage, wide range of visa types", font: "Arial", size: 22, italics: true, color: "666666" })] }),
            new Paragraph({ spacing: { before: 80 } }),
            new Paragraph({ children: [new TextRun("Keunggulan: Skala besar, pengalaman menangani banyak customer, coverage luas.")] }),

            new Paragraph({ spacing: { before: 300 } }),

            // Comparison Table
            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun("2.6 Tabel Perbandingan Kompetitor")] }),
            new Paragraph({ spacing: { before: 100 } }),
            new Table({
                width: { size: 9360, type: WidthType.DXA },
                columnWidths: [2200, 1800, 1800, 1800, 1760],
                rows: [
                    new TableRow({ children: [
                        headerCell("Kompetitor", 2200),
                        headerCell("Positioning", 1800),
                        headerCell("Bahasa", 1800),
                        headerCell("Fokus", 1800),
                        headerCell("USP", 1760)
                    ]}),
                    new TableRow({ children: [
                        cell("Bahalap Uras", 2200),
                        cell("Affordable & reliable", 1800),
                        cell("EN/RU/FR", 1800),
                        cell("Tourist, Business", 1800),
                        cell("Multi-language team", 1760)
                    ]}),
                    new TableRow({ children: [
                        cell("Peak Solutions", 2200),
                        cell("Business consultant", 1800),
                        cell("EN/RU", 1800),
                        cell("B2B, Company setup", 1800),
                        cell("End-to-end support", 1760)
                    ]}),
                    new TableRow({ children: [
                        cell("eVisa Bali", 2200),
                        cell("Most trusted", 1800),
                        cell("EN", 1800),
                        cell("Tourist, KITAS", 1800),
                        cell("12+ years experience", 1760)
                    ]}),
                    new TableRow({ children: [
                        cell("Rumaka Visa", 2200),
                        cell("Fast & transparent", 1800),
                        cell("EN", 1800),
                        cell("Visa, Immigration", 1800),
                        cell("Real-time tracking", 1760)
                    ]}),
                    new TableRow({ children: [
                        cell("VISALF", 2200),
                        cell("30K+ customers", 1800),
                        cell("Multi", 1800),
                        cell("All visa types", 1800),
                        cell("Scale & coverage", 1760)
                    ]}),
                ]
            }),

            new Paragraph({ children: [new PageBreak()] }),

            // Section 3
            new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun("3. Strategi Meta Ads Kompetitor")] }),
            new Paragraph({ spacing: { before: 100 } }),

            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun("3.1 Language Targeting")] }),
            new Paragraph({ spacing: { before: 100 } }),
            new Table({
                width: { size: 9360, type: WidthType.DXA },
                columnWidths: [2200, 2500, 4660],
                rows: [
                    new TableRow({ children: [headerCell("Bahasa", 2200), headerCell("Negara Asal", 2500), headerCell("Strategi", 4660)] }),
                    new TableRow({ children: [cell("Russian", 2200), cell("Russia", 2500), cell("Paling populer - hampir semua competitor punya Russian speaker", 4660)] }),
                    new TableRow({ children: [cell("English", 2200), cell("US, UK, Australia, Eropa", 2500), cell("Market utama - ads dalam bahasa Inggris", 4660)] }),
                    new TableRow({ children: [cell("French", 2200), cell("Prancis, Belgia, Canada", 2500), cell("Secondary language", 4660)] }),
                ]
            }),

            new Paragraph({ spacing: { before: 300 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun("3.2 Content Strategy")] }),
            new Paragraph({ spacing: { before: 100 } }),
            new Table({
                width: { size: 9360, type: WidthType.DXA },
                columnWidths: [2500, 6860],
                rows: [
                    new TableRow({ children: [headerCell("Tipe Content", 2500), headerCell("Contoh", 6860)] }),
                    new TableRow({ children: [cell("Video ads", 2500), cell(""How to get visa in Bali"", 6860)] }),
                    new TableRow({ children: [cell("Static image", 2500), cell("Infographic process visa", 6860)] }),
                    new TableRow({ children: [cell("Testimonial", 2500), cell(""Satisfied customer"", 6860)] }),
                    new TableRow({ children: [cell("Educational", 2500), cell(""Visa types explained"", 6860)] }),
                    new TableRow({ children: [cell("Promo", 2500), cell(""Limited offer", discount", 6860)] }),
                ]
            }),

            new Paragraph({ spacing: { before: 300 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun("3.3 Ad Copy Themes")] }),
            new Paragraph({ spacing: { before: 100 } }),
            new Table({
                width: { size: 9360, type: WidthType.DXA },
                columnWidths: [2000, 7360],
                rows: [
                    new TableRow({ children: [headerCell("Theme", 2000), headerCell("Contoh Copy", 7360)] }),
                    new TableRow({ children: [cell("Speed", 2000), cell(""Fast visa processing", "Quick approval"", 7360)] }),
                    new TableRow({ children: [cell("Trust", 2000), cell(""Trusted", "Licensed", "12+ years experience"", 7360)] }),
                    new TableRow({ children: [cell("Simplicity", 2000), cell(""Easy online application", "No hassle"", 7360)] }),
                    new TableRow({ children: [cell("Transparency", 2000), cell(""No hidden fees", "Transparent pricing"", 7360)] }),
                    new TableRow({ children: [cell("Support", 2000), cell(""24/7 assistance", "Multi-language support"", 7360)] }),
                ]
            }),

            new Paragraph({ children: [new PageBreak()] }),

            // Section 4
            new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun("4. Rekomendasi Positioning untuk Rolina")] }),
            new Paragraph({ spacing: { before: 100 } }),

            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun("4.1 Unique Selling Point Rolina")] }),
            new Paragraph({ spacing: { before: 80 } }),
            new Paragraph({ children: [new TextRun("Pertanyaan kunci untuk menemukan USP Rolina:")] }),
            new Paragraph({ numbering: { reference: "numbers", level: 0 }, children: [new TextRun("Rolina beda dari kompetitor di mana?", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "numbers", level: 0 }, children: [new TextRun("Ada tim multilingual? Bahasa apa aja?", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "numbers", level: 0 }, children: [new TextRun("Sudah berapa lama beroperasi?", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "numbers", level: 0 }, children: [new TextRun("Ada spesialisasi tertentu? (tourist? business? digital nomad?)", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "numbers", level: 0 }, children: [new TextRun("Ada pricing advantage?", font: "Arial", size: 22 })] }),

            new Paragraph({ spacing: { before: 300 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun("4.2 Rekomendasi Strategi Meta Ads")] }),

            new Paragraph({ spacing: { before: 150 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("A. Audience Targeting")] }),
            new Paragraph({ spacing: { before: 80 } }),
            new Paragraph({ children: [new TextRun({ text: "Target:", font: "Arial", size: 22, bold: true })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Bahasa Inggris, Rusia, Prancis, Jerman (multi-country)", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Age: 25-55", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Interests: Bali, Indonesia travel, digital nomad, expat, tourism", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Behavior: International travelers, visa applicants", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun({ text: "Exclude:", font: "Arial", size: 22, bold: true }), new TextRun(" Orang yang sudah di Indonesia (focus new arrivals)", font: "Arial", size: 22 })] }),

            new Paragraph({ spacing: { before: 150 } }),
            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("B. Ad Creative Approach")] }),
            new Paragraph({ spacing: { before: 80 } }),
            new Paragraph({ children: [new TextRun({ text: "Video Ads:", font: "Arial", size: 22, bold: true })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun(""How easy it is to get visa to Bali with Rolina"", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun(""Meet our team" - humanize the brand", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Testimonial from satisfied customers", font: "Arial", size: 22 })] }),

            new Paragraph({ spacing: { before: 80 } }),
            new Paragraph({ children: [new TextRun({ text: "Image Ads:", font: "Arial", size: 22, bold: true })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Infographic: "Visa to Bali in 3 Simple Steps"", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Before/after comparison", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Team photo with multi-language greeting", font: "Arial", size: 22 })] }),

            new Paragraph({ spacing: { before: 80 } }),
            new Paragraph({ children: [new TextRun({ text: "Copy Angles:", font: "Arial", size: 22, bold: true })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Speed: "Visa approved in [X] days"", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Trust: "First visa service in Bali"", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Simplicity: "Just send us your passport photo"", font: "Arial", size: 22 })] }),
            new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [new TextRun("Safety: "Licensed & official"", font: "Arial", size: 22 })] }),

            new Paragraph({ children: [new PageBreak()] }),

            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun("C. Funnel Strategy")] }),
            new Paragraph({ spacing: { before: 100 } }),
            new Table({
                width: { size: 9360, type: WidthType.DXA },
                columnWidths: [1500, 2500, 5360],
                rows: [
                    new TableRow({ children: [headerCell("Funnel", 1500), headerCell("Stage", 2500), headerCell("Content", 5360)] }),
                    new TableRow({ children: [cell("TOFU

{"file_path": "/app/working/workspaces/default/generate_rolina_report.js", "content": "const { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell, \n        Header, Footer, AlignmentType, LevelFormat, HeadingLevel, \n        BorderStyle, WidthType, ShadingType, PageNumber, PageBreak } = require('docx');\nconst fs = require('fs');\n\n// Border style\nconst border = { style: BorderStyle.SINGLE, size: 1, color: \"CCCCCC\" };\nconst borders = { top: border, bottom: border, left: border, right: border };\n\n// Table cell helper\nfunction cell(text, width, bold = false, fill = null) {\n    return new TableCell({\n        borders,\n        width: { size: width, type: WidthType.DXA },\n        shading: fill ? { fill: fill, type: ShadingType.CLEAR } : undefined,\n        margins: { top: 80, bottom: 80, left: 120, right: 120 },\n        children: [new Paragraph({ \n            children: [new TextRun({ text: text, bold: bold, font: \"Arial\", size: 20 })] \n        })]\n    });\n}\n\n// Header cell\nfunction headerCell(text, width) {\n    return cell(text, width, true, \"D5E8F0\");\n}\n\nconst doc = new Document({\n    styles: {\n        default: { document: { run: { font: \"Arial\", size: 22 } } },\n        paragraphStyles: [\n            { id: \"Heading1\", name: \"Heading 1\", basedOn: \"Normal\", next: \"Normal\", quickFormat: true,\n              run: { size: 36, bold: true, font: \"Arial\", color: \"1F4E79\" },\n              paragraph: { spacing: { before: 300, after: 200 }, outlineLevel: 0 } },\n            { id: \"Heading2\", name: \"Heading 2\", basedOn: \"Normal\", next: \"Normal\", quickFormat: true,\n              run: { size: 28, bold: true, font: \"Arial\", color: \"2E75B6\" },\n              paragraph: { spacing: { before: 240, after: 120 }, outlineLevel: 1 } },\n            { id: \"Heading3\", name: \"Heading 3\", basedOn: \"Normal\", next: \"Normal\", quickFormat: true,\n              run: { size: 24, bold: true, font: \"Arial\", color: \"333333\" },\n              paragraph: { spacing: { before: 180, after: 80 }, outlineLevel: 2 } },\n        ]\n    },\n    numbering: {\n        config: [\n            { reference: \"bullets\",\n              levels: [{ level: 0, format: LevelFormat.BULLET, text: \"\\u2022\", alignment: AlignmentType.LEFT,\n                style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },\n            { reference: \"numbers\",\n              levels: [{ level: 0, format: LevelFormat.DECIMAL, text: \"%1.\", alignment: AlignmentType.LEFT,\n                style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },\n        ]\n    },\n    sections: [{\n        properties: {\n            page: {\n                size: { width: 12240, height: 15840 },\n                margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 }\n            }\n        },\n        headers: {\n            default: new Header({ \n                children: [new Paragraph({ \n                    alignment: AlignmentType.RIGHT,\n                    children: [new TextRun({ text: \"Riset Kompetitor Rolina\", font: \"Arial\", size: 18, color: \"666666\" })] \n                })] \n            })\n        },\n        footers: {\n            default: new Footer({ \n                children: [new Paragraph({ \n                    alignment: AlignmentType.CENTER,\n                    children: [new TextRun({ text: \"Page \", font: \"Arial\", size: 18 }), new TextRun({ children: [PageNumber.CURRENT], font: \"Arial\", size: 18 })] \n                })] \n            })\n        },\n        children: [\n            // Cover\n            new Paragraph({ spacing: { before: 2000 } }),\n            new Paragraph({\n                alignment: AlignmentType.CENTER,\n                children: [new TextRun({ text: \"RISET KOMPETITOR\", font: \"Arial\", size: 56, bold: true, color: \"1F4E79\" })]\n            }),\n            new Paragraph({\n                alignment: AlignmentType.CENTER,\n                children: [new TextRun({ text: \"Visa Services di Bali\", font: \"Arial\", size: 44, color: \"2E75B6\" })]\n            }),\n            new Paragraph({ spacing: { before: 400 } }),\n            new Paragraph({\n                alignment: AlignmentType.CENTER,\n                children: [new TextRun({ text: \"ROLINA\", font: \"Arial\", size: 36, bold: true, color: \"333333\" })]\n            }),\n            new Paragraph({\n                alignment: AlignmentType.CENTER,\n                children: [new TextRun({ text: \"Jasa Visa Pertama di Bali\", font: \"Arial\", size: 28, italics: true, color: \"666666\" })]\n            }),\n            new Paragraph({ spacing: { before: 800 } }),\n            new Paragraph({\n                alignment: AlignmentType.CENTER,\n                children: [new TextRun({ text: \"Analisis Kompetitor & Rekomendasi Strategi Meta Ads\", font: \"Arial\", size: 24, color: \"666666\" })]\n            }),\n            new Paragraph({ spacing: { before: 1200 } }),\n            new Paragraph({\n                alignment: AlignmentType.CENTER,\n                children: [new TextRun({ text: \"30 Mei 2026\", font: \"Arial\", size: 22, color: \"999999\" })]\n            }),\n            \n            // Page break\n            new Paragraph({ children: [new PageBreak()] }),\n            \n            // Table of Contents placeholder\n            new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun(\"Daftar Isi\")] }),\n            new Paragraph({ spacing: { before: 200 } }),\n            new Paragraph({ children: [new TextRun(\"1. Konteks Bisnis...................................................................................................... 3\")]}),\n            new Paragraph({ children: [new TextRun(\"2. Kompetitor Utama.................................................................................................. 3\")]}),\n            new Paragraph({ children: [new TextRun(\"3. Strategi Meta Ads Kompetitor............................................................................ 8\")]}),\n            new Paragraph({ children: [new TextRun(\"4. Rekomendasi Positioning untuk Rolina................................................................. 10\")]}),\n            new Paragraph({ children: [new TextRun(\"5. Quick Wins............................................................................................................ 12\")]}),\n            \n            new Paragraph({ children: [new PageBreak()] }),\n            \n            // Section 1\n            new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun(\"1. Konteks Bisnis\")] }),\n            new Paragraph({ spacing: { before: 100 } }),\n            new Table({\n                width: { size: 9360, type: WidthType.DXA },\n                columnWidths: [3000, 6360],\n                rows: [\n                    new TableRow({ children: [headerCell(\"Detail\", 3000), headerCell(\"Informasi\", 6360)] }),\n                    new TableRow({ children: [cell(\"Bisnis\", 3000), cell(\"Rolina\", 6360)] }),\n                    new TableRow({ children: [cell(\"Lokasi\", 3000), cell(\"Bali, Indonesia\", 6360)] }),\n                    new TableRow({ children: [cell(\"Target\", 3000), cell(\"WNA (Warga Negara Asing) yang mau ke Indonesia\", 6360)] }),\n                    new TableRow({ children: [cell(\"Platform\", 3000), cell(\"Meta Ads (Facebook & Instagram)\", 6360)] }),\n                    new TableRow({ children: [cell(\"Positioning\", 3000), cell(\"Jasa visa pertama di Bali\", 6360)] }),\n                    new TableRow({ children: [cell(\"Tanggal Riset\", 3000), cell(\"30 Mei 2026\", 6360)] }),\n                ]\n            }),\n            \n            new Paragraph({ children: [new PageBreak()] }),\n            \n            // Section 2\n            new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun(\"2. Kompetitor Utama\")] }),\n            new Paragraph({ spacing: { before: 100 } }),\n            new Paragraph({ children: [new TextRun(\"Ditemukan ~510 iklan di Meta Ads untuk keyword \\\"visa bali\\\" dan \\\"visa indonesia\\\". Berikut 5 kompetitor utama:\")] }),\n            new Paragraph({ spacing: { before: 200 } }),\n            \n            // Competitor 1\n            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun(\"2.1 Visa by Bahalap Uras\")] }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Profil\")] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Website: visabybahalapuras.com\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Lokasi: Munggu area, dekat Canggu/Nuanu, Bali\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Didirikan: 2021\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Bahasa: English, Indonesian, Russian, French\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"WhatsApp: +62 877 5134 6157 (French), +62 859 5677 9547 (Russian)\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ spacing: { before: 100 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Layanan\")] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Single Entry Visa (30-180 hari) - tourism, business, internship, music performer\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Multiple Entry Visa (1-2 tahun)\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"KITAS & extension\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ spacing: { before: 100 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Positioning & USP\")] }),\n            new Paragraph({ children: [new TextRun({ text: \"\\\"Affordable & reliable services since 2021, supported by English, Indonesian, Russian, and French speaking team\\\"\", font: \"Arial\", size: 22, italics: true, color: \"666666\" })] }),\n            new Paragraph({ spacing: { before: 80 } }),\n            new Paragraph({ children: [new TextRun(\"Keunggulan: Multi-language team (French & Russian speaker langsung via WA), harga transparan di website, targeting turis Western + Russian market.\")] }),\n            \n            new Paragraph({ spacing: { before: 300 } }),\n            \n            // Competitor 2\n            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun(\"2.2 Peak Solutions Group\")] }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Profil\")] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Website: peaksolutions.co.id\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Lokasi: Jl. Sunset Road No. 99D, Badung, Bali\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Didirikan: 2020\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Bahasa: English, Russian\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Kontak: +62 821 3005 0004 (English), +62 821 4732 1807 (Russian)\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ spacing: { before: 100 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Layanan\")] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"C1 Tourism Visa Extension\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"B1 eVOA (Electronic Visa on Arrival)\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"B211 Visa (Business/social visa)\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"D12 Investment Visa, KITAS (Investor/Working)\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Company Registration Advisory (PT PMA)\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ spacing: { before: 100 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Positioning & USP\")] }),\n            new Paragraph({ children: [new TextRun({ text: \"\\\"Leading Business Visa Consultant in Bali\\\"\", font: \"Arial\", size: 22, italics: true, color: \"666666\" })] }),\n            new Paragraph({ spacing: { before: 80 } }),\n            new Paragraph({ children: [new TextRun(\"Keunggulan: Fokus B2B/business traveler, end-to-end support (visa + company setup), personalized approach + strong local network.\")] }),\n            \n            new Paragraph({ children: [new PageBreak()] }),\n            \n            // Competitor 3\n            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun(\"2.3 eVisa Bali\")] }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Profil\")] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Website: evisabali.com\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Founded: 12+ tahun pengalaman\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Kontak: +62 877 8850 0099 (WA), info@evisabali.com\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ spacing: { before: 100 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Layanan\")] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Tourist Visa Services\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Working Permit (KITAS)\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Corporate Legal Support\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Special Offer: Stay in Bali for 6 months\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ spacing: { before: 100 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Positioning & USP\")] }),\n            new Paragraph({ children: [new TextRun({ text: \"\\\"Indonesia's most trusted visas agency in Bali for Expats\\\"\", font: \"Arial\", size: 22, italics: true, color: \"666666\" })] }),\n            new Paragraph({ spacing: { before: 80 } }),\n            new Paragraph({ children: [new TextRun(\"Keunggulan: 12+ tahun pengalaman (credibility tinggi), licensed agency, komitmen customer satisfaction, online application system.\")] }),\n            \n            new Paragraph({ spacing: { before: 300 } }),\n            \n            // Competitor 4\n            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun(\"2.4 Rumaka Visa\")] }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Profil\")] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Website: rumakavisa.com\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Lokasi: Nakula Plaza, Legian, Badung, Bali\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Perusahaan: PT. Rumaka Indo Global\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Kontak: +62 813 269 5680 (WA)\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ spacing: { before: 100 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Layanan\")] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Visa & Immigration\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"PT PMA Registration\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Legal Consultation\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Real-time visa tracking\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ spacing: { before: 100 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Positioning & USP\")] }),\n            new Paragraph({ children: [new TextRun({ text: \"\\\"Your Indonesia Gateway Start Here\\\"\", font: \"Arial\", size: 22, italics: true, color: \"666666\" })] }),\n            new Paragraph({ spacing: { before: 80 } }),\n            new Paragraph({ children: [new TextRun(\"Keunggulan: Real-time status tracking (transparency), fast processing, 100% guaranteed, online application + tracking system.\")] }),\n            \n            new Paragraph({ children: [new PageBreak()] }),\n            \n            // Competitor 5\n            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun(\"2.5 VISALF Indonesia\")] }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Profil\")] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Facebook: visabyvisalf\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Coverage: Bali, Jakarta, Lombok, dan lainnya\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ spacing: { before: 100 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Layanan\")] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Tourist Visa, Business Visa\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Digital Nomad Visa, Remote Worker Visa\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"KITAS (Work, Retirement, Investment)\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"PT PMA (Perusahaan asing), Free consultation\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ spacing: { before: 100 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"Positioning & USP\")] }),\n            new Paragraph({ children: [new TextRun({ text: \">30.000 satisfied customers, multi-location coverage, wide range of visa types\", font: \"Arial\", size: 22, italics: true, color: \"666666\" })] }),\n            new Paragraph({ spacing: { before: 80 } }),\n            new Paragraph({ children: [new TextRun(\"Keunggulan: Skala besar, pengalaman menangani banyak customer, coverage luas.\")] }),\n            \n            new Paragraph({ spacing: { before: 300 } }),\n            \n            // Comparison Table\n            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun(\"2.6 Tabel Perbandingan Kompetitor\")] }),\n            new Paragraph({ spacing: { before: 100 } }),\n            new Table({\n                width: { size: 9360, type: WidthType.DXA },\n                columnWidths: [2200, 1800, 1800, 1800, 1760],\n                rows: [\n                    new TableRow({ children: [\n                        headerCell(\"Kompetitor\", 2200),\n                        headerCell(\"Positioning\", 1800),\n                        headerCell(\"Bahasa\", 1800),\n                        headerCell(\"Fokus\", 1800),\n                        headerCell(\"USP\", 1760)\n                    ]}),\n                    new TableRow({ children: [\n                        cell(\"Bahalap Uras\", 2200),\n                        cell(\"Affordable & reliable\", 1800),\n                        cell(\"EN/RU/FR\", 1800),\n                        cell(\"Tourist, Business\", 1800),\n                        cell(\"Multi-language team\", 1760)\n                    ]}),\n                    new TableRow({ children: [\n                        cell(\"Peak Solutions\", 2200),\n                        cell(\"Business consultant\", 1800),\n                        cell(\"EN/RU\", 1800),\n                        cell(\"B2B, Company setup\", 1800),\n                        cell(\"End-to-end support\", 1760)\n                    ]}),\n                    new TableRow({ children: [\n                        cell(\"eVisa Bali\", 2200),\n                        cell(\"Most trusted\", 1800),\n                        cell(\"EN\", 1800),\n                        cell(\"Tourist, KITAS\", 1800),\n                        cell(\"12+ years experience\", 1760)\n                    ]}),\n                    new TableRow({ children: [\n                        cell(\"Rumaka Visa\", 2200),\n                        cell(\"Fast & transparent\", 1800),\n                        cell(\"EN\", 1800),\n                        cell(\"Visa, Immigration\", 1800),\n                        cell(\"Real-time tracking\", 1760)\n                    ]}),\n                    new TableRow({ children: [\n                        cell(\"VISALF\", 2200),\n                        cell(\"30K+ customers\", 1800),\n                        cell(\"Multi\", 1800),\n                        cell(\"All visa types\", 1800),\n                        cell(\"Scale & coverage\", 1760)\n                    ]}),\n                ]\n            }),\n            \n            new Paragraph({ children: [new PageBreak()] }),\n            \n            // Section 3\n            new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun(\"3. Strategi Meta Ads Kompetitor\")] }),\n            new Paragraph({ spacing: { before: 100 } }),\n            \n            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun(\"3.1 Language Targeting\")] }),\n            new Paragraph({ spacing: { before: 100 } }),\n            new Table({\n                width: { size: 9360, type: WidthType.DXA },\n                columnWidths: [2200, 2500, 4660],\n                rows: [\n                    new TableRow({ children: [headerCell(\"Bahasa\", 2200), headerCell(\"Negara Asal\", 2500), headerCell(\"Strategi\", 4660)] }),\n                    new TableRow({ children: [cell(\"Russian\", 2200), cell(\"Russia\", 2500), cell(\"Paling populer - hampir semua competitor punya Russian speaker\", 4660)] }),\n                    new TableRow({ children: [cell(\"English\", 2200), cell(\"US, UK, Australia, Eropa\", 2500), cell(\"Market utama - ads dalam bahasa Inggris\", 4660)] }),\n                    new TableRow({ children: [cell(\"French\", 2200), cell(\"Prancis, Belgia, Canada\", 2500), cell(\"Secondary language\", 4660)] }),\n                ]\n            }),\n            \n            new Paragraph({ spacing: { before: 300 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun(\"3.2 Content Strategy\")] }),\n            new Paragraph({ spacing: { before: 100 } }),\n            new Table({\n                width: { size: 9360, type: WidthType.DXA },\n                columnWidths: [2500, 6860],\n                rows: [\n                    new TableRow({ children: [headerCell(\"Tipe Content\", 2500), headerCell(\"Contoh\", 6860)] }),\n                    new TableRow({ children: [cell(\"Video ads\", 2500), cell(\"\\\"How to get visa in Bali\\\"\", 6860)] }),\n                    new TableRow({ children: [cell(\"Static image\", 2500), cell(\"Infographic process visa\", 6860)] }),\n                    new TableRow({ children: [cell(\"Testimonial\", 2500), cell(\"\\\"Satisfied customer\\\"\", 6860)] }),\n                    new TableRow({ children: [cell(\"Educational\", 2500), cell(\"\\\"Visa types explained\\\"\", 6860)] }),\n                    new TableRow({ children: [cell(\"Promo\", 2500), cell(\"\\\"Limited offer\\\", discount\", 6860)] }),\n                ]\n            }),\n            \n            new Paragraph({ spacing: { before: 300 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun(\"3.3 Ad Copy Themes\")] }),\n            new Paragraph({ spacing: { before: 100 } }),\n            new Table({\n                width: { size: 9360, type: WidthType.DXA },\n                columnWidths: [2000, 7360],\n                rows: [\n                    new TableRow({ children: [headerCell(\"Theme\", 2000), headerCell(\"Contoh Copy\", 7360)] }),\n                    new TableRow({ children: [cell(\"Speed\", 2000), cell(\"\\\"Fast visa processing\\\", \\\"Quick approval\\\"\", 7360)] }),\n                    new TableRow({ children: [cell(\"Trust\", 2000), cell(\"\\\"Trusted\\\", \\\"Licensed\\\", \\\"12+ years experience\\\"\", 7360)] }),\n                    new TableRow({ children: [cell(\"Simplicity\", 2000), cell(\"\\\"Easy online application\\\", \\\"No hassle\\\"\", 7360)] }),\n                    new TableRow({ children: [cell(\"Transparency\", 2000), cell(\"\\\"No hidden fees\\\", \\\"Transparent pricing\\\"\", 7360)] }),\n                    new TableRow({ children: [cell(\"Support\", 2000), cell(\"\\\"24/7 assistance\\\", \\\"Multi-language support\\\"\", 7360)] }),\n                ]\n            }),\n            \n            new Paragraph({ children: [new PageBreak()] }),\n            \n            // Section 4\n            new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun(\"4. Rekomendasi Positioning untuk Rolina\")] }),\n            new Paragraph({ spacing: { before: 100 } }),\n            \n            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun(\"4.1 Unique Selling Point Rolina\")] }),\n            new Paragraph({ spacing: { before: 80 } }),\n            new Paragraph({ children: [new TextRun(\"Pertanyaan kunci untuk menemukan USP Rolina:\")] }),\n            new Paragraph({ numbering: { reference: \"numbers\", level: 0 }, children: [new TextRun(\"Rolina beda dari kompetitor di mana?\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"numbers\", level: 0 }, children: [new TextRun(\"Ada tim multilingual? Bahasa apa aja?\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"numbers\", level: 0 }, children: [new TextRun(\"Sudah berapa lama beroperasi?\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"numbers\", level: 0 }, children: [new TextRun(\"Ada spesialisasi tertentu? (tourist? business? digital nomad?)\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"numbers\", level: 0 }, children: [new TextRun(\"Ada pricing advantage?\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ spacing: { before: 300 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun(\"4.2 Rekomendasi Strategi Meta Ads\")] }),\n            \n            new Paragraph({ spacing: { before: 150 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"A. Audience Targeting\")] }),\n            new Paragraph({ spacing: { before: 80 } }),\n            new Paragraph({ children: [new TextRun({ text: \"Target:\", font: \"Arial\", size: 22, bold: true })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Bahasa Inggris, Rusia, Prancis, Jerman (multi-country)\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Age: 25-55\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Interests: Bali, Indonesia travel, digital nomad, expat, tourism\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Behavior: International travelers, visa applicants\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun({ text: \"Exclude:\", font: \"Arial\", size: 22, bold: true }), new TextRun(\" Orang yang sudah di Indonesia (focus new arrivals)\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ spacing: { before: 150 } }),\n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"B. Ad Creative Approach\")] }),\n            new Paragraph({ spacing: { before: 80 } }),\n            new Paragraph({ children: [new TextRun({ text: \"Video Ads:\", font: \"Arial\", size: 22, bold: true })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"\\\"How easy it is to get visa to Bali with Rolina\\\"\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"\\\"Meet our team\\\" - humanize the brand\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Testimonial from satisfied customers\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ spacing: { before: 80 } }),\n            new Paragraph({ children: [new TextRun({ text: \"Image Ads:\", font: \"Arial\", size: 22, bold: true })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Infographic: \\\"Visa to Bali in 3 Simple Steps\\\"\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Before/after comparison\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Team photo with multi-language greeting\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ spacing: { before: 80 } }),\n            new Paragraph({ children: [new TextRun({ text: \"Copy Angles:\", font: \"Arial\", size: 22, bold: true })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Speed: \\\"Visa approved in [X] days\\\"\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Trust: \\\"First visa service in Bali\\\"\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Simplicity: \\\"Just send us your passport photo\\\"\", font: \"Arial\", size: 22 })] }),\n            new Paragraph({ numbering: { reference: \"bullets\", level: 0 }, children: [new TextRun(\"Safety: \\\"Licensed & official\\\"\", font: \"Arial\", size: 22 })] }),\n            \n            new Paragraph({ children: [new PageBreak()] }),\n            \n            new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(\"C. Funnel Strategy\")] }),\n            new Paragraph({ spacing: { before: 100 } }),\n            new Table({\n                width: { size: 9360, type: WidthType.DXA },\n                columnWidths: [1500, 2500, 5360],\n                rows: [\n                    new TableRow({ children: [headerCell(\"Funnel\", 1500), headerCell(\"Stage\", 2500), headerCell(\"Content\", 5360)] }),\n                    new TableRow({ children: [cell(\"TOFU


system

Wrote 32132 bytes to /app/working/workspaces/default/generate_rolina_report.js.