# Kratos Operations

> Use for all Kratos assistant operations for Ibrahim Ramzy (The Creed). Covers tone, messaging patterns, tool access, and operational preferences. Load this when working on anything Ibrahim-related.

- Skill: `s3yed/kratos-operations` (Agent Skill)
- Install (CLI): `npx skillmds@latest add s3yed/kratos-operations`
- Raw SKILL.md: https://api.skillmd.com/api/skills/s3yed/kratos-operations/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: S3YED (https://skillmd.com/u/s3yed)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/s3yed/kratos-operations

---


# Kratos Operations — Ibrahim Ramzy

## User Preferences (Seyed)

- **ACT, don't ask**: When Seyed says "send it to him" or "let him know", just deliver the message. Never ask "Want me to send this?" — the instruction is the green light.
- **Direct and masculine tone**: Short sentences, no fluff, no em dashes. Mirror Seyed's communication style.
- **Batch delivery**: Messages to Ibrahim go via Telegram cron jobs using `no_agent=true`, `schedule="1m"`, `deliver="telegram:7192708686"`. Scripts output message content via heredoc.

## Messaging Pattern (Telegram to Ibrahim)

```bash
# Create script that outputs the message
cat > ~/.hermes/scripts/<name>.sh << 'SCRIPT'
#!/bin/bash
cat << 'EOF'
Message content here.
Keep it direct. No fluff.
EOF
SCRIPT

# Deliver via cron
hermes cron create \
  --name "<Name>" \
  --no-agent \
  --schedule "1m" \
  --repeat 1 \
  --deliver "telegram:7192708686" \
  --script "<name>.sh"
```

## Brand Rules (Ibrahim)

- Aspiration over shame — never use guilt-based messaging
- "Everyone" not "guys" — ICP is men AND women
- No em dashes — short, direct sentences
- Lucide icons over emojis
- Family > business, always
- Country disqualification: Asia/Africa/South America = no giveaway win, but data captured

## Value Delivery Pipeline (Giveaway Lead Nurture)

**Reference**: `references/value-delivery-agent-spec.md` — full operating spec.

**Workflow rule**: When Ibrahim shares a complex document or spec, STOP, read it, and confirm back your understanding in detail BEFORE pulling any data. He will green-light or correct. Only then execute.

**Core principle**: Generic confirms "free." Personalized screams "paid." Every asset must reference something the specific lead actually said or did. If copy-pasteable, it failed.

### CRITICAL: Always Check WhatsApp Chat Before Drafting Assets

**PITFALL — Drafting blind from transcripts:** Never draft value assets (voice notes, quick wins, mini-plans) using only the triage transcript. Ibrahim may have already delivered value, had follow-up conversations, or disqualified the lead since the call. Drafting the wrong thing (e.g. suggesting walking when he already assigned walking) wastes Ibrahim's time.

**Mandatory workflow before drafting any lead's assets:**
1. Pull the triage transcript (Gemini notes from Drive)
2. **Pull the WhatsApp chat** (`wacli messages list --chat <JID> --limit 30`) — this is NOT optional
3. Read the full conversation. Note: what's already been sent, what tasks are in progress, what identity work has been discussed, the lead's engagement level
4. Only then draft assets that ESCALATE from where they actually are
5. If the chat shows they're further along, skip basic quick wins — go to deeper value

### Message Tone Rule: Value-Forward, Never Attacking

Ibrahim rejected messages that sounded "labelling and borderline attacking." Every message must make the lead think: "This is crazy value — nobody has ever shown me this."

- **Frame as revelation:** "Here's something most people never figure out" / "Nobody's ever told you this"
- **Frame as insider access:** They're getting knowledge others pay for
- **Never label the lead:** Don't say "you know macros but don't execute" — reframe as "you've never seen your own pattern"
- **Never attack their situation:** Don't say "your body deserves honesty" — reframe as "most people at your stage never learn this"
- **The test:** Would a lead think "wow, serious value" or "ouch, he's calling me out"? Must be the former.

### Role Boundary: You Organize, Ibrahim Sends

Ibrahim handles all message sending. Your job: compile lead data, draft assets, organize tracking sheets, flag what needs attention. Do NOT send messages unless he explicitly says "send it." Present drafts for approval. He records voice notes — you script them and flag which leads need one.

### Lead Command Center (Google Sheets)

When Ibrahim asks for organized lead tracking, build a Google Sheet — not a text dump. He wants checkboxes.

**Tab 1 — Lead Profiles:** Name, Phone, Country, JID, Funnel Stage, Track, Call Date, Next Call, Pain (their words), Current Situation, Goal, Why Now, Already Sent, Next Step. Sorted by priority.

**Tab 2 — Value Pipeline:** Name, Track, each step as status columns (Voice Note Script/Sent, Quick Win Drafted/Sent/Done, Mini-Plan Drafted/Sent, Matched Proof, Track B Reframe, etc.).

**Build workflow:**
1. Create via `gws sheets spreadsheets create --json` with `frozenRowCount: 1` on both tabs
2. Compile leads into Python dicts, verify every field
3. Write all rows via `gws sheets spreadsheets values update` — `--params` for URL params (spreadsheetId, range, valueInputOption), `--json` for values body
4. Single-quote sheet names with spaces: `'Lead Profiles'!A1:N51`
5. Escape single quotes in body with `'''` when shell-interpolating
6. Verify by reading back with `gws sheets +read`

**Reference:** `references/lead-roster.md` for current lead database.

### Two-Track System

- **Track A — The Creed (1:1)**: Clear pain, coachable, real urgency, capacity signals. Gets 4 escalating assets: Voice Note Script → 48hr Quick Win → Custom Mini-Plan → Matched Proof.
- **Track B — Health in Motion (low-ticket)**: Vague goals, price-sensitive, not ready for 1:1. Gets 2 assets: "Right Fit" Reframe + One Quick Win. Never a consolation prize — frame as "fit for where you are."

### Per-Lead Extraction (5 things)
1. PAIN: #1 pain in their own words (quote it)
2. CURRENT: Where they are now
3. FUTURE: Where they want to be
4. WHY NOW: What makes change urgent
5. ALREADY SENT: What the coach already sent (never repeat)

### Asset Sequence (Track A)
A1 — Voice Note Script (60-90s, highest priority)
A2 — 48-Hour Quick Win (noticeable result, doubles as buy-in test)
A3 — Custom One-Page Mini-Plan (3 sections: reframe, first 2 weeks, what's beyond)
A4 — Matched Proof (relevant client match, flag as [COACH TO SUPPLY] if unavailable)

### Output Format (per lead)
```
LEAD: [name]
TRACK: [A | B]
ROUTING REASON: [1 line]
EXTRACTED: Pain / Current / Future / Why-now / Already-sent
--- DRAFTED ASSETS ---
[Each asset, fully drafted]
--- PERSONALIZATION BRIEF ---
[What was pulled, what coach must verify, confidence level]
```

### Priority Order
1. Leads with completed calls TODAY (most recent first)
2. All 🟢 Completed Call leads (14 in Giveaway Notes)
3. 🔜 Upcoming call leads (prep before their call)
4. 🔴 No-reply leads (re-engagement)

### Lead Qualification Workflow (Track A vs B)

When classifying a batch of giveaway leads, follow this sequence. Do NOT ask Ibrahim about each lead individually — present as a table and let him batch-correct.

1. **Pull all transcripts**: `gws drive files list` with filter `name contains "Notes by Gemini" and modifiedTime > <date>`. Show ALL individual lead calls — never skip a name that might belong.
2. **Pull WhatsApp Giveaway contacts**: `wacli contacts search "Giveaway"`
3. **Pull Giveaway Notes funnel doc**: `gws docs documents get` on the GIVEAWAY NOTES doc to get funnel statuses
4. **Extract country from phone number** — prefix matching (1=US/Canada, 44=UK, 971=UAE, 60=Malaysia, 216=Tunisia, 213=Algeria, 20=Egypt, 92=Pakistan, 964=Iraq, etc.)
5. **Cross-reference**: transcript dates, funnel status (🟢 completed / 🟠 booked / 🔴 no reply / ⚫ out), WhatsApp contact presence, country
6. **Present as table** with columns: Status | Lead | Country | Known Data | Track recommendation

**Country routing signals** (Ibrahim decides, not you):
- UK/US/Canada/UAE/Switzerland/Singapore/Denmark/Australia → typically Track A
- Tunisia/Algeria/Egypt/Pakistan/Iraq/Malaysia/Thailand/Kyrgyzstan → typically Track B
- Turkey, South Africa, Mauritius → Ibrahim's call

**Ibrahim's qualification signals** (from transcripts):
- Clear specific pain, coachability, urgency, financial capacity → Track A
- Vague goals, "it was free", price-resistant, early journey → Track B
- If Giveaway Notes doc says "low ticket lead" or "waffler" → flag in table
- Ibrahim may mark leads unqualified directly — accept and move on, skip those leads immediately

### Correction Pattern (Missed Calls/Transcripts)

When Ibrahim says "you missed calls":
1. Re-run Drive search pulling ALL Gemini notes, not just filtered ones
2. Print every individual lead call — never assume a lead doesn't belong in the funnel
3. Cross-reference calendar events for the same date range to catch leads not in WhatsApp
4. Re-present the FULL list, explicitly highlighting what was missed
5. This is a high-frequency correction — Ibrahim catches these often. Be thorough the first time.

### WhatsApp Chat Discovery (Chat Names ≠ Contact Names)

**PITFALL:** WhatsApp chat display names often differ from contact names in wacli. E.g., Imran's chat shows as \"IA\", Subina as \"Sub\", Ibraam as \"IA\". Searching by JID can return empty even when a chat exists.

**Workflow:**
1. First try `wacli messages list --chat <JID> --limit 10`
2. If empty, search by name: `wacli messages search \"<first name>\"` — this searches message content
3. If found in search results, note the display name (e.g., chat \"IA\")
4. Find the JID: `wacli chats list | grep \"<display name>\"`
5. Then pull the full chat: `wacli messages list --chat <found_jid> --limit 30`

### Infographic Creation (Branded Value Docs)

When Ibrahim asks for a branded infographic or value deliverable (not an AI PDF), use HTML → headless Chrome screenshot pipeline.

**Design rules (from Ibrahim's reference image + rejected AI-slops):**
- Dark base (#0b0b0b), card (#0f0f0f), gold accent (#c4985a)
- Text: headers #f5efe8, body #908070, subtle #605040
- System fonts only (`-apple-system, sans-serif`) — Google Fonts fail in headless Chrome
- 2x2 grid layout for pillar content. Clean dividers (#1c1c1c).
- Max width 800px, border-radius 16px, 48px padding
- Zero em dashes. Ibrahim's voice. No corporate language.
- Steps section at bottom: doable alone but clearly limited without coaching
- Closing: \"This is the surface level. The full system is...\"

**Export:**
```bash
google-chrome --headless --no-sandbox --disable-gpu \
  --screenshot=/root/preview.png --window-size=900,1200 \
  --virtual-time-budget=3000 file:///root/page.html
```
- Screenshot ~150-170KB. ~14% content pixels is normal for dark theme.
- Share via MEDIA: path or deploy HTML as live page.

**Reference:** `references/infographic-template.html`

| File | Purpose |
|---|---|
| `/root/.hermes/KRATOS-BRIEF.md` | Full operating brief |
| `/root/.hermes/KRATOS-DASHBOARD-PRD.md` | Dashboard PRD |
| `/root/ibrahim/kratos-playbook.md` | User-facing playbook for Ibrahim |
| `/root/ibrahim-giveaway-v2/` | Giveaway landing page (Next.js) |
| `references/value-delivery-agent-spec.md` | Full Value Delivery Agent operating spec |
| `references/lead-roster.md` | Current lead roster, country routing, closed/unqualified/out lists |

## Cognify Memory

Server: `http://127.0.0.1:8799`
Tenant: `ibrahim`
Activation: `source /root/cognify/.venv/bin/activate && set -a && . /root/cognify/.env && set +a`
Query: `cognify --tenant ibrahim recall "<query>"`

## WhatsApp / WAI

See `whatsapp-pipeline` skill for full pipeline operations.
wacli account: `creed` — JID: `447822014367@s.whatsapp.net`

## Google Auth

Cron: `Google Token Auto-Refresh` (every 1h)
Script: `/root/refresh_google_token.py`
Manual refresh: `python3 /root/refresh_google_token.py`
Verify: `gws drive files list --params '{"pageSize": 3}'`
