Claude Writes, Jev Decides: LinkedIn Marketing Stack
Stand up TypeSafe Jev + Claude Code for LinkedIn radar, lead scoring, content gates, and reply-desk triage — Claude writes, Jev decides, humans approve.
What you will have live
By the end of this playbook you will have:
- A TypeSafe / Jev API key and a verified smoke call (
noul/choice/score) - The official TypeSafe skill installed in Claude Code so Claude writes glue code while Jev returns typed decisions
- An editable ICP decision contract (questions + thresholds) you can version in a repo or Sheet
- A LinkedIn radar that scores niche posts / profiles fetched from exports or documentable third-party connectors — not a native LinkedIn “magic API”
- A lead scoring lane that writes Hot / Warm / Cold rows to Google Sheets (or your CRM staging sheet)
- A content engine: Claude drafts posts/comments; Jev gates quality/fit; you approve before anything ships
- A reply desk for hot DMs/comments: Jev triages urgency + intent; Claude drafts; humans send
- Cost math against official Jev pricing so you know what “cheap decisions” actually means
Prerequisites
- TypeSafe account — early access at typesafe.ai; create an API key in the dashboard and store it as
TYPESAFE_API_KEY(password manager, not chat history). - Claude Code installed and logged in (Anthropic account / Claude subscription that supports Claude Code on your machine).
- Python 3.10+ or Node 18+ for the official SDK path (
typesafe-sdkor@typesafe-ai/sdk) — optional if you only use cURL at first. - A Google Sheet (or CSV) you own for radar + scoring rows — columns you control:
source_url,snippet,author,company,raw_state,tier,confidence,notes. - A legal data path for LinkedIn-ish inputs: LinkedIn CSV export, Sales Navigator export your policy allows, and/or a documentable connector your counsel accepts (common patterns: Apify actors, Periodix Actions, HeyReach webhooks). Do not paste stolen session cookies into random scripts.
- Optional orchestration: n8n (self-host or Cloud) for schedules + Slack approval cards — see n8n HITL gates once the decision contract works by hand.
How the stack actually works
Fetch state elsewhere → Jev (typed decide) → Claude (write/research) → Human approve → Send via approved tool
| Layer | Job | Not its job |
|---|---|---|
| Fetch (Sheets / export / Apify / Periodix / HeyReach webhook) | Supply profile text, post text, ICP fields | Judging fit |
Jev (POST /v1/systemone) |
noul / choice / score with probabilities |
Writing copy, browsing, sending |
| Claude (Claude Code + TypeSafe skill) | Glue code, research summaries, draft posts/replies | Final “yes ship this DM” |
| Human / HITL | Approve high-consequence sends | Rubber-stamping paraphrases |
| Send (HeyReach, native LinkedIn UI, CRM task) | Actually deliver | Inventing the ICP |
Third-party operators publish LinkedIn “radar” tutorials built this way. Treat those as industry anecdotes, not TypeSafe case studies and not Octacer performance claims.
Step 1 — Get TypeSafe access and prove Jev answers
- Sign in at typesafe.ai → open the dashboard → create an API key.
- Export it in your shell (or Claude Code env):
export TYPESAFE_API_KEY="ts_..." # never commit this
- Run the official smoke shape (docs: Quick start):
curl -sS -X POST https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"state": "VP Sales at a 80-person B2B SaaS. Posted: looking for a lightweight approval layer before AI agents write to HubSpot.",
"model": "jev-latest",
"questions": {
"icp_fit": {
"type": "noul",
"instructions": "Is this person a plausible buyer for governed AI ops / HITL automation in mid-market B2B?"
},
"lane": {
"type": "choice",
"instructions": "Which outreach lane fits best?",
"criteria": {
"radar_engage": "Public post worth a thoughtful comment",
"outbound_dm": "Direct outreach candidate",
"nurture": "Interesting but not now",
"skip": "Wrong ICP or noise"
}
},
"priority": {
"type": "score",
"instructions": "How hot is this lead for a discovery call this month?",
"criteria": ["Cold", "Warm", "Hot"]
}
}
}'
- Confirm the JSON returns
answers.icp_fit.noul,answers.lane.choice, andanswers.priority.scoreplususage.input_tokens. - Optional SDK installs:
pip install typesafe-sdk
# or
npm install @typesafe-ai/sdk
Step 2 — Install the Claude Code skill (Claude writes, Jev decides)
Jev is not a Claude chat model swap. The verified Claude path is TypeSafe’s agent skill/plugin, which teaches Claude Code how to compose System One calls.
claude plugin marketplace add typesafe-ai/skills
claude plugin install typesafe@typesafe-ai
Alternative (Codex / other agents via skills.sh):
npx skills add typesafe-ai/skills --skill typesafe-ai
Then in Claude Code:
- Restart or
/reload-pluginsif needed. - Invoke
/typesafe:typesafe-aior say “use the TypeSafe skill.” - Prompt something like:
Use the TypeSafe skill. Build a small Python CLI that reads rows from a CSV
(state text + url), calls Jev with my ICP questions (noul + choice + score),
and writes tier/confidence/token usage to an output CSV. Pin model jev-1.13.0.
Do not send LinkedIn messages. Ask me for the exact ICP criteria before coding.
Step 3 — Write your ICP decision contract (version it)
Create icp-questions.json (or a Sheet tab) you can diff in Git. Example for Octacer-shaped B2B automation buyers — edit hard for your niche:
{
"icp_fit": {
"type": "noul",
"instructions": "Buyer-side ops/RevOps/IT leader at B2B software or services, 20–500 staff, who cares about approvals before AI writes to CRM/ERP."
},
"persona": {
"type": "choice",
"instructions": "Best-fit persona",
"criteria": {
"revops": "Revenue ops / CRM owner",
"it_ops": "IT / platform / automation owner",
"founder": "Founder/CEO still in the weeds",
"other": "Not a fit or unclear"
}
},
"intent": {
"type": "score",
"instructions": "Strength of buying/intent signal in the supplied text",
"criteria": ["No intent", "Soft curiosity", "Active evaluation"]
}
}
Calibration drill (do this before bulk runs):
- Label 30–50 real rows yourself (Hot / Warm / Cold or Skip).
- Score them with Jev; log
choice, probabilities,confidence, and input tokens. - Set thresholds in code (e.g. Hot only if
icp_fit.noul >= 0.75andintent.score >= 1.5and confidence above your floor). - Fail closed on low confidence →
needs_humanqueue.
Step 4 — Stage 1 live: LinkedIn Radar (niche posts)
Goal: every morning, a short list of posts worth engaging — scored, not doom-scrolled.
- Ingest into Sheets (pick one documentable path):
- Manual: paste post URL + copied text into
raw_state. - Export: LinkedIn / Sales Nav CSV your account is allowed to download → Claude Code normalizes columns.
- Connector: n8n + Apify LinkedIn/profile actors, or Periodix Actions (LinkedIn post search patterns exist as n8n templates), writing authors + post text into the same Sheet.
- For each new row, build
stateas plain text: headline, company, post body, your niche keyword, date (date logic stays in code). - Call Jev with questions such as:
worth_comment(noul),angle(choice: product story / founder lesson / hiring / noise),priority(score). - Code routes:
worth_comment >= threshold→ Radar Hot tab; else Cold/Archive. - Claude (batch or per-row) drafts one thoughtful comment for Hot rows only — still not posted.
- You approve in Sheet checkbox or Slack HITL; then you (or an approved outreach tool) post manually.
Step 5 — Stage 2 live: Lead scoring lane
Goal: connection requests, CSV dumps, and event attendees become tiered queues.
- Put profile blobs in
raw_state(About + experience + recent post titles is enough; strip emails you do not need). - Reuse the ICP contract; add a
outbound_readynoul: “Is a short, non-spammy connection note justified this week?” - Write results to columns:
tier(Hot/Warm/Cold/Skip),persona,intent_score,confidence,input_tokens,model. - Only Hot (+ maybe Warm) go to Claude for a personalized note draft stored in
draft_note. - Human approves; send via native LinkedIn UI or a tool you already pay for (e.g. HeyReach campaign add via n8n — HeyReach documents an n8n key + nodes). Jev never sends.
Worked token math (official price $0.042 / 1M input tokens, output free):
| Volume | Assumed input tokens / decision | Jev $ |
|---|---|---|
| 1,000 leads | 800 | ≈ $0.03 |
| 10,000 leads | 800 | ≈ $0.34 |
| 40,000 decisions / month | 800 | ≈ $1.34 |
Step 6 — Stage 3 live: Content engine
Goal: a week of niche posts without posting slop.
- Collect inputs in a
content_inboxSheet: customer quotes, release notes, war stories, competitor public moves (facts you can defend). - Claude drafts 3–5 post variants (hook + body + CTA) into
drafts. - Jev scores each draft with a caller-defined rubric, for example:
on_brand(noul)format(choice: story / how-to / opinion / soft CTA)ship_readiness(score: Needs work / Almost / Ship)
- Auto-reject drafts below threshold; Claude revises losers once; winners enter
#content-approvals. - Human picks the final; schedule in your usual publisher (native LinkedIn, Buffer, etc.).
Do not ask Jev to “write a LinkedIn post.” Ask it to judge drafts Claude already wrote.
Step 7 — Stage 4 live: Reply desk / hot DMs
Goal: never leave money (or landmines) sitting in Unibox.
- Ingest inbound comments/DMs via export, HeyReach Unibox/webhook (documented with n8n), or manual paste into
inbox_raw. - One Jev call per message:
needs_human_now(noul) — legal, pricing commitment, angry customerintent(choice: buy / partner / spam / support / unclear)tone_risk(score: Safe / Careful / Escalation)
- Code routing:
- Escalation or
needs_human_nowhigh → Slack@ownerimmediately, no auto-draft send - buy/partner mid confidence → Claude drafts reply → HITL approve → human sends
- spam → archive
- Log every decision with model version + tokens for audit.
Step 8 — Optional: wire Sheets + n8n so it runs while you sleep
Once Steps 1–7 work manually:
- Schedule an n8n workflow: cron → read Sheet rows with
status=new→ HTTP Request tohttps://api.typesafe.ai/v1/systemonewithTYPESAFE_API_KEY→ Code node applies thresholds → update Sheet + Slack message. - Put Human review in front of any node that adds leads to a HeyReach campaign or posts externally (HITL playbook).
- Keep Claude drafting in a second lane (Claude Code batch job or n8n Anthropic node) after Jev says the row is worth it — saves writer tokens.
Go-live checklist
- [ ] Smoke cURL returns typed
answers+usage.input_tokens - [ ]
TYPESAFE_API_KEYonly in env/secret store - [ ] Claude Code TypeSafe skill installed; agent can generate a correct System One call
- [ ] ICP questions checked into Git; 30+ labeled rows used to set thresholds
- [ ] Model pinned (
jev-1.13.0) after calibration - [ ] Radar Hot tab reviews clean for one week of niche keywords
- [ ] Lead scoring writes tiers without sending messages
- [ ] Content drafts gated by Jev rubric before publish
- [ ] Reply desk escalations hit a human; no auto-send on low confidence
- [ ] Token usage logged; monthly Jev $ matches the math above (plus separate Claude/connector bills)
- [ ] Legal/privacy review done for LinkedIn data path and TypeSafe processing terms
Pitfalls
- Treating Jev like Claude — it will not browse LinkedIn or write essays; it answers your schema.
- “Zero hallucination” marketing — schema is bounded; judgments can still be wrong. Validate locally.
- Cookie scrapers as the default — prefer exports and vendors whose docs you can show counsel; respect LinkedIn terms.
- Thresholds without labels — you will over-message or starve the pipeline.
- Stuffing huge states — burns tokens and hits the 32k state/question guidance; summarize in code first.
- Auto-approve outreach — breaks the whole point of a decision stack.
- Claiming vanity metrics you did not earn — keep Octacer copy about the system, not third-party impression screenshots.
FAQ
Is this a native LinkedIn + Claude product from TypeSafe?
No. Official pieces are Jev (System One API), SDKs, and the Claude Code skill. LinkedIn data and send paths are third-party or manual.
Can I call Jev from Vercel AI SDK?
Vercel documents typesafe-ai/jev via AI Gateway / experimental_evaluate as an evaluation-model path — useful in apps, still not a LinkedIn integration.
What about free credits?
Promotional credits are account-specific; do not plan production budgets on unverified “$5 free” rumors. Use dashboard balance + the $0.042/1M math.
Where do Make.com or chatbots fit?
If your team already lives in Make, use it as the scheduler/Sheet glue the same way as n8n. For customer-facing FAQ bots, keep a separate governed chatbot lane — see related playbooks below.
Next step
Add hard gates on anything that writes or sends: n8n Human-in-the-Loop Tool Gates. For broader ops agents on your own metal: Self-Host n8n AI Ops Agent. For Sheets/CRM tool wiring into Claude: Business MCP Starter Pack.
Build a Governed Radar
Need a RevOps approvals matrix or a custom radar for a regulated niche? See Solutions, Architecture, or contact Octacer.
Ready to Implement This Playbook?
Our team can implement these strategies for you, tailored to your specific business needs.
Schedule Consultation