---
summary: "Mas Eko — core decisions, preferences, reusable patterns"
last_updated: 2026-07-25
---

## 👤 User Profile

| Field | Value |
|-------|-------|
| **Name** | Mas Eko |
| **Role** | Freelance advertiser / Meta Ads specialist / **Prudential Agent** (AAJI lulus ✅) |
| **Timezone** | Asia/Bali (GMT+8), active after ~23:20 WITA |
| **Location** | Bali |
| **Contact** | Telegram ID: `203050635` |
| **Main Clients** | Rolina Visa Services, **Svaha Tour & Travel** (svahatourandtravel.com) |
| **Preferred Deliverable** | DOCX with comparison tables & concrete numbers |
| **AI Access** | Gemini (free) + ChatGPT (GPT Image2) for image gen |

---

## 🎯 Active Projects

| Project | Type | Status |
|---------|------|--------|
| **Bali Usada Database** | Database | 🔴 URGENT |
| **@balimentari (NLP/Hypnosis Content)** | Content | 🟢 Active |
| **Rolina Visa — Meta Ads Campaign** | Advertising | 🟢 Active |
| **Svaha Tour & Travel** | Travel/Visa | 🟢 Active — website audit & landing pages |
| **PruAgent (Prudential Agency)** | Insurance | 🟢 Active — new agent |
| **Object Imagery Hypnosis Ebook** | Digital Product | 🟢 Concept approved |
| **Nago (Web + Discovery)** | Web | ✅ Done — landing + quiz complete |
| **Web Psikolog Indra Surya** | Web Dev | 🟡 On hold |
| **Branding Tugus Purwa** | Branding | 🟡 On hold |

---

## 📌 PruAgent — Prudential Agency Assistant

**Location:** `skills/pruagent/SKILL.md` (160 lines)
**Status:** Active, Bahasa Indonesia-focused, built from scratch for new agent onboarding

### Products & Strategy
- **15+ Prudential products** (PRUWell Medical, PRUCritical Benefit 88, PRULady, PRUMapan, PRUSmart Plan, PRUFuture, PRULink NextGen, PRULink Investor Account, PRUlink Syariah Edu Protection, etc.)
- **Quick Pick:** 6 scenarios for product recommendations
- **5 Working Modes:** Product Recommendation, Follow-up Chat WA, Objection Handling, Social Media Content, Prospek Tracking
- **Objection Handling:** 6 common objection types + template answers

### PRUSmart Plan — Master Strategy Document
- **File:** `memory/pruagent-strategy-2026-07-11.md` (1207 lines)
- **Contents:** 3 Customer Personas, Pain Points & Education Cost Data, Value Proposition Canvas, 10 Caption IG, 5 TikTok/Reels Scripts, 5 WA Opening Chats, 7-Day Follow-up Sequence, Full Sales Script, 10 Objection Handling Scripts, 30-Day Content Calendar, Psychological Strategy, First Month KPIs
- **⏰ Cashback deadline:** 8% PRUSmart Plan — **31 August 2026**
- **Target persona:** Parents in their 30s with young children

---

## 📌 Svaha Tour & Travel

**Website:** `svahatourandtravel.com` — WordPress, PHP 8.3.31, Apache

### Tracking Setup
| Item | Status |
|------|--------|
| GA4 via Site Kit (ID: GT-WPD7HKJ) | ✅ |
| Google AdSense | ✅ |
| GDPR Consent Mode (EU/Belanda target) | ✅ |
| Meta Pixel | ❌ |
| Landing pages per product | ❌ |
| Testimonials (AU/NL specific) | ❌ |
| Form + WA integration | ❌ |
| Conversion tracking | ❌ |

**Brand Score:** 3/12 — merah, belum optimal

### Visa Products
| Product | Description |
|---------|-------------|
| E28A | PMA |
| Second Home E33 | 5-year stay |
| Retirement E33F | ≥60 years old |
| Family E31A/E31B | Family visa |
| Tourist B211 | 2+2 months |
| Business C2 | 6 months |

### Target Markets & Funnel
- **Markets:** Australia (Second Home, Retirement, Tourist B211) & Netherlands (Second Home, Retirement)
- **Funnel:** Meta Ads → Landing Page per product → WhatsApp auto-redirect
- **Key rule:** Never ad-direct to WA — no tracking, no retargeting, cold leads lost. Always per-product landing page.

### Assets
- Landing page copy: `memory/svaha-landing-page-second-home.md`
- Nano Structure prompts: `memory/svaha-nano-prompts.md` (4 use cases)
- Next: Mas Eko generates Use Case 1 (Hero Shot passport + visa)

---

## 📌 Meta Ads Playbook

### Research & Analysis
- Scan Meta Ads Library (`facebook.com/ads/library/`)
- Catalog per competitor: website, positioning, languages, USP, pricing, services, contact
- SWOT per competitor → identify gap
- Funnel: TOFU → MOFU → BOFU + closing channel (WA/website)

### Multi-Market Strategy
- Budget split by market size (e.g., AU 60% / NL 40%)
- Separate ad sets per country with different hooks
- AU = casual English; NL = dual Dutch+English, history angle
- Key differentiators: pricing transparency, language support, speed tiers

### Travel/Visa Funnel Rules
- **Do:** Per-product landing pages with tracking + form → WA redirect
- **Don't:** Ad-direct to WA (untrackable, no retargeting, cold leads lost)
- **Landing page structure:** 9-section — Hero, Problem, Solution, Testimonial, How It Works, Requirements, FAQ, Form, Footer

### Rolina Visa
- Visa services in Bali since 2012, targeting inbound foreigners
- USP: "Pertama di Bali", 20+ years experience
- 10 competitors mapped

---

## 📌 @balimentari — Content Strategy

### Golden Rule (Non-Negotiable)
Every content MUST reference **"Nyambung ke: [prev content]"** — applies to all ideas including cronjob output.

### Carousel Framework
- **Formula:** Hook (menohok) → relate to youth phenomenon → link to psychology concept
- **Top Resonant Themes:** Ghosting, overthinking, FOMO, self-sabotage, toxic productivity, cognitive dissonance, projection
- **Avoid:** Too academic, too judgmental, too vague
- **Batch rule:** 3 ideas per request, no repeat themes from previous batch
- **Always request caption upon carousel completion**
- **Indonesian context is critical:** Real youth experiences — medsos, kuliah, kerja, drama pertemanan/pacaran
- **Cross-reference density:** More references to previous batches = stronger educational value

### Content Universe (Bawah Sadar Psychology)
```
Bawah Sadar (foundation)
  ├─ Contoh Bawah Sadar (application)
  ├─ Critical Factor / Si Penjaga Gerbang (mechanism)
  │    ├─ Self-Sabotage (manifestation)
  │    ├─ Denial (defense form)
  │    └─ Secondary Gain (hidden benefit)
  ├─ Afirmasi Gak Work (problem) → Fake It Till You Make It (solution)
  ├─ Trauma Lebih Nempel (memory mechanism) → Projection (manifestation)
  └─ Comfort Zone (barrier to change)
```

### Brand Identity
- **Colors:** Deep teal blue (#1A5F7A) + Soft cream (#FFF8F0) + Orange (#FF9F43)
- **Mascot:** "Surya" — sun chibi
- **Style:** Flat vector, minimalis, modern, calming/edukatif

### Daily Auto-Content Pillars (no review needed)

| Time (WITA) | Content | Notes |
|-------------|---------|-------|
| 07:00 | Weather (Bali) | Multi-source cross-ref |
| 12:00 | Sports Update | If event exists |
| 22:00 | Daily News | Fenomena Alam → Politik → Ekonomi → Olahraga → Hiburan |
| 02:00 (every 2 days) | @balimentari carousel ideas | 3 per batch; Golden Rule applies |

### Content Batch Progress
| Batch | Date | Themes |
|-------|------|--------|
| 24 | 15 Jul | Sunk Cost Fallacy, Halo Effect, Denial vs Repression (Toxic Positivity) |
| 25 | 16 Jul | Social Comparison Theory, Placebo Effect, Backfire Effect |

**Untouched topics:** Confirmation Bias, False Consensus Effect, Hindsight Bias, Barnum Effect, Reactance, Overton Window

### Writing Conventions
- Sports tone: Casual Jaksel/Bali slang, emoji-rich; frame as "Argentina kasih pelajaran" not "Argentina menang 3-0"
- Economy indicators: Rupiah & IHSG sebagai indikator rutin

---

## 🔬 AI Product Photography — Kukuhaldy Method

**Reusable for:** Svaha, @balimentari, Prudential, any product shoot

### Nano Structure (8 Blocks)
1. **Photography Type & Subject**
2. **Subject Action**
3. **Environment**
4. **Lighting**
5. **Camera** — lens, angle, depth of field
6. **Texture & Props**
7. **Style Keywords**
8. **Constraints** — ⚠️ Most critical: "Do not alter text/logo. Keep label exactly as original."

### Workflow
1. Upload raw product photo (key to precision)
2. Brain Dump: Curhat ide ke AI → minta AI bikin structured prompt
3. 8-step: Siapkan foto mentah → Enhance → Cari Referensi → Reverse Engineering → Modifikasi Prompt → Eksekusi → Check & Revisi → Hapus Logo Gemini

**Tools:** Gemini (free tier first) → ChatGPT GPT Image2 as fallback

---

## 🔧 VIOSTUDIO API

- **API Key:** `vio_sk_vA8llIYm51J3oyXtfevrM92yUBJ8-3IS1sIn6xydF8o`
- **Base URL:** `https://api.viostudio.id/v1`

### Model Priority & Costs

| Model | Type | Credits | Use Case |
|-------|------|---------|----------|
| `omni-flash` | Video t2v (max 6s) | **1** | Primary — best value |
| `gpt-image-2.0` | Image | **5** | Preferred image model |
| `veo-3.1-lite` | Video i2v/t2v | 5 | Fallback |
| `veo-3.1-fast` | Video i2v/t2v | 50 | Fast but costly |
| `veo-3.1-quality` | Video i2v/t2v | 100 | Best quality |

### Production Rules
- **Model priority:** `omni-flash` (1cr) → `veo-3.1-lite` (5cr) → higher models
- **Prompt language:** Bahasa Indonesia (more stable results)
- **Safety:** Avoid "fight or flight", "stress active", "panic attack" (mental health/hypnosis context)
- **Aspect ratio:** Use `"3:4"` (1080×1440 px) for IG carousel — never `"4:5"` or `"3/4"` (ERROR 400)
- **Text rendering:** Generate background-only images, overlay text via Python/PIL
- **Batch splitting:** 3–4 slides per batch; poll ~5–10 min for 6–7 slides total
- **Timeout retry:** Max 30x, 8s interval; HTTP 500 recoverable via retry

### Reels Workflow
1. Generate 9:16 images (`gpt-image-2.0`)
2. Upload to `/v1/assets`
3. Animate via i2v model
4. Poll `/v1/generations/{id}` every 8–15s

---

## 🎬 OpenMontage — Local Video Pipeline

**Repo:** `calesthio/OpenMontage` | **Path:** `/app/working/workspaces/default/OpenMontage/`
**Setup:** `make setup` (Python deps, Remotion, Piper TTS v1.4.2, HyperFrames v0.7.17, FFmpeg)

### Free Tools (No API Key)

| Category | Tools |
|----------|-------|
| **Audio** | `piper_tts`, `audio_mixer`, `audio_enhance`, `freesound_music`, `pixabay_music`, `audio_probe` |
| **Video** | `video_stitch`, `clip_search`, `direct_clip_search`, `video_compose`, `hyperframes_compose` |
| **Compose** | Remotion, HyperFrames, FFmpeg |
| **Analysis** | `video_analyzer`, `scene_detect`, `frame_sampler`, `composition_validator`, `visual_qa` |
| **Enhance** | `color_grade`, `upscale`, `bg_remove`, `face_restore`, `subtitle_gen` |

### Constraints
- **Piper TTS:** ❌ No Indonesian model. Use `en_US-lessac-medium` (63MB) for English.
- **Graphics/Video gen:** Require API key (OpenAI, ~$5)
- **GPU tools (WAN 2.1):** Require PyTorch + GPU — use `requirements-gpu.txt`

### Compose Pattern
1. Narration via `piper_tts` (`en_US-lessac-medium`)
2. Remotion: warm gradient background + kinetic typography (Quicksand font)
3. Output: 1080×1920, 24fps, MP4 via FFmpeg

---

## 💬 Communication & Workflow Preferences

### Interaction Style
- **Initiative:** Langsung action, gas & semangat
- **Signal language:** "stop" = salah, "aman" = setuju, "udh/dgn/yg" = casual shorthand
- **Tone:** Santai, akrab — panggil "bre" atau "Mas Eko"
- **Humor:** Abu Nawas style, jokes garing
- **Check-in:** Awal minggu + daily via Telegram

### Handling Multiple Requests
- Mas Eko often fires 3+ requests in quick succession
- **Strategy:** Parallel search → present sequentially (PART 1, PART 2, PART 3)
- **Priority:** Newest request first; recurring ones (weather, sports) can be concise

### Skill Adaptability Rule
When request falls outside core scope, serve using overlapping competencies (digital presence, branding, closing/payment). Respond with Goal-First structure + numbered option menu.

### Workflow Rules
1. **Review-first:** Propose concept before generating — never generate directly
2. **Clarity direction:** Always ask where ads/closing should direct the user
3. **Comparison tables:** Include concrete numbers (budget, estimates) whenever possible

---

## 🔁 Automation & Scheduled Tasks

### Cronjob — Daily Content Ideas
- **Job ID:** `226198d7` — "Ide Konten Psikologi Harian"
- **Schedule:** Daily 10:00 WITA (02:00 UTC) → Telegram `203050635`
- **Type:** Agent — 3 fresh content ideas, each referencing previous theme (Golden Rule)

### Repliz API (Social Media Scheduler)
- **Base URL:** `https://api.repliz.com`
- **Auth:** Basic `9332936724:tH8tV0K38psksdYyyzfRHiGcpGZ0DdB7`
- **Endpoint:** `POST /public/schedule`
- **Account IDs:** IG @balimentari = `6957dc8f1fab4cfd20463b82` | FB Bali Mentari = `6957d0461fab4cfd2045bef6`

### Multi-Source Research Strategy
- **Weather sources:** BMKG Instagram (paling update), Detik Bali, Radarbali, Indobalinews, Tribun Bali, Bali Post, Kontan
- **Conflict resolution:** Majority vote across sources

---

## 🛠️ High-Value Technical Patterns

### DOCX Generation (Node.js `docx`)
- **⚠️ `write_file` truncates ~27KB** — never merge truncated files
- **Chunking:** Split into 6+ JS files (<15KB each), `cat chunk*.js > final.js && node final.js`
- **Quote rule:** Single quotes for JS strings, double quotes inside content strings

### Browser Reliability
- `browser_use` frequently fails (CAPTCHAs, CDP timeouts)
- **Fallback:** `tavily_search` for all web research
- Always test browser availability first

---

## 🧠 Installed MCP Skills

| Skill | Function |
|-------|----------|
| **social / content-strategy** | Social media content & strategy |
