Junior Tony — Digital Twin Agent

Product Requirements Document

Owner: Victor Slompo Date: 2026-06-10 Status: Awaiting Approval Source: Tony × Victor call (Jun 9)

1. Problem

Tony needs a credible digital presence that posts consistently on LinkedIn — thought leadership content aligned with his voice, style, and AIPMO positioning. Manual posting is inconsistent and competes with higher-value work.

This is the first step toward a broader digital twin strategy (future: Junior Joana, Junior Victor) that doubles as a live product demo and GTM funnel.

2. Solution

An autonomous OpenClaw agent ("Junior Tony") that generates and publishes LinkedIn content via the official LinkedIn API, with a human QA gate before every post goes live.

3. Value / Impact — The Funnel

This is NOT a content tool. It's a sales funnel disguised as a LinkedIn presence. The bot posting IS the product demo — a digital twin operating autonomously proves the exact capability T&C sells.
📝 Junior Tony posts thought leadership on LinkedIn
💬 Prospects engage with content
📅 Interested prospects seek meeting with "Tony"
🤝 Tony closes — AIPMO / T&C services

4. Scope — Phase 1 (MVP)

4.1 What's IN

#DeliverableDetail
1LinkedIn AppLinkedIn Developer Portal. OAuth 2.0, scope w_member_social. New LinkedIn account (separate from Tony's).
2Slack BotNew Slack App in VTKL workspace. Own identity: "Junior Tony", custom avatar.
3OpenClaw InstanceNew workspace in t-and-c-golden. Own SOUL.md, AGENTS.md, MEMORY.md. AWS deploy.
4SOUL.md — Tony's VoiceBuilt from: Tony comm style guide, WWTD corpus, Steve Ward "digital Tony" validation, coaching transcripts.
5Content GenerationLinkedIn posts: text, articles, images. Topics: AIPMO, AI strategy, decision-making.
6QA Review GateSlack channel #junior-tony-review. Dukane reviews. ✅ = publish, ❌ = revise.
7LinkedIn PublishingOfficial API (POST /v2/ugcPosts). Text, URL, image, video. 150 req/day limit.
8Token ManagementOAuth 2.0 3-legged. 60-day token. Automated expiry alert.

4.2 What's OUT (Phase 1)

ItemReason
Engagement on others' postsNo public API. Browser automation rejected — ban risk > value.
LinkedIn analyticsRequires Marketing API partnership. Defer.
LinkedIn messaging / InMailNot available via Consumer API.
Junior Joana / Junior VictorFuture phases. Same architecture, different SOUL.md.
AIPMO work capabilitiesPhase 2 — prove online presence first, then layer in work.

5. Architecture

┌─────────────────────────────────────────────┐
│               Junior Tony                    │
│           (OpenClaw Instance)                │
│                                              │
│  SOUL.md ← Tony's voice/style/DNA           │
│  AGENTS.md ← posting rules, QA gates        │
│  Skills: linkedin-poster, content-gen        │
│                                              │
│  Channels:                                   │
│    Slack (own bot) ← QA review + commands    │
│    LinkedIn API ← publish posts              │
└──────────┬──────────────┬────────────────────┘
           │              │
           ▼              ▼
   ┌──────────────┐  ┌──────────────────┐
   │ Slack         │  │ LinkedIn API      │
   │ #junior-tony  │  │ POST /v2/ugcPosts │
   │ -review       │  │ (OAuth 2.0)       │
   │               │  │                   │
   │ Dukane QAs    │  │ New LI account    │
   └──────────────┘  └──────────────────┘

5.1 LinkedIn Integration

ItemDetail
AccountNew LinkedIn account (NOT Tony's real account)
AppLinkedIn Developer Portal → "Share on LinkedIn" product
Auth3-legged OAuth 2.0. Authorize once via browser.
Scopew_member_social — post, comment, like
Token60-day expiry. Secure storage (Doppler/env). Auto-alert.
Rate Limits150/day per member · 100K/day per app

5.2 Content Types

TypeAPI FieldNotes
TextNONEPure thought leadership
Article/URLARTICLELink + commentary
ImageIMAGERegister → upload → post
VideoVIDEOSame flow as image

6. Execution Plan — 1 Week

Victor owns execution. Warren co-executes. Charlie assists with OpenClaw instance deploy only.

Day 1–2 — Foundation

#TaskOwner
1Create new LinkedIn accountVictor
2Create LinkedIn Developer AppVictor
3Create Slack App "Junior Tony"Victor
4Create #junior-tony-review channelVictor
5Golden repo workspace configWarren
6Write SOUL.mdWarren
7Write AGENTS.mdWarren

Day 3–4 — Integration

#TaskOwner
8OAuth flow + store tokenVictor Warren
9Build linkedin-poster skillWarren
10Content generation workflowWarren
11Deploy OpenClaw instanceVictor Charlie
12Connect Slack botVictor Charlie
13Wire QA gateWarren

Day 5 — Validation & Go Live

#TaskOwner
145 test posts through QA cycleWarren Dukane
15Tony reviews & calibrates voiceTony
16Go live — first real postsVictor

7. QA Gate Flow

Agent generates post
        │
        ▼
Posts draft to #junior-tony-review
        │
        ▼
Dukane reviews
   ├── ✅ → Agent publishes to LinkedIn
   ├── ⚠️ → Agent revises, re-submits
   └── ❌ → Agent discards, logs reason

8. Success Criteria

MetricTarget
Posts per week3–5 consistent
QA pass rate>80% first-submission
Voice accuracyTony confirms "sounds like me" ≥ 4/5
Zero bansNo LinkedIn TOS violations
Token uptimeNo expired-token outages

9. Risks & Mitigations

RiskImpactMitigation
LinkedIn detects new account as botAccount banCredible profile, human-like cadence, real photo/bio
Token expires unnoticedSilent failuresAuto-alert 7 days before expiry
Content doesn't sound like TonyCredibility lossHeavy SOUL.md calibration + Tony feedback loop
LinkedIn API changesIntegration breaksMonitor changelog; UGC v2 API is stable

10. Future Phases

11. Decision Log

2026-06-10 API only, no browser automation — Ban risk far exceeds value of automated engagement
2026-06-10 New LinkedIn account — Isolate risk, keep Tony's real account clean
2026-06-10 Dukane as QA gate — Human review before all public content
2026-06-10 Victor owns execution — Full responsibility for delivery