PTENES
MODULE 5.2

📈 Sales OS

In the sales domain, things get more pressing: tools and context lead together. You'll build the pipeline from the scraper to the CRM, create your own enrichment, and — the heart of the module — qualify leads with friction by design: 50 good calls are worth more than 200 bad ones.

7
Topics
~45
Minutes
Advanced
Level
Practical
Type
0%
0 of 0 topics read · Section 1 of 7

Detailed content

1

🍕 The Sales OS pizza — tools at the top

If context ruled on its own in Tax OS (~34%), in Sales OS the stack is more tight: the context drops to ~30% and the tools rise to ~20%, splitting leadership. The shape of the pie is similar, but the proportions tell a different story: sales is a plumbing domain — scrapers, CRM, email.

🌱 New here?

ICP (Ideal Customer Profile) is your ideal customer profile. Lead is a contact/company that could become a client. CRM is the system that stores these contacts and their history. SDR (Sales Development Representative) is the prospecting salesperson who qualifies leads and schedules the demo.

Layer distribution (Sales)

Context30%
Tools20%
Skills16%
Agents14%
Rules & Hooks12%
Identity8%

✓ What carries the domain

  • ✓Context: ICP, cold email, won/lost deals.
  • ✓Tools: Apify scrapers, CRM, email.
  • ✓Skills: enrichment, qualification, humanize copy.

✗ What doesn’t solve it on its own

  • ✗An army of SDR agents with no qualified leads.
  • ✗“Humanized” copy sent to the wrong base.
  • ✗Sending volume with no opt-out rule.

Why learn

Because they determine where you spend your energy. Knowing that tools are worth ~20%, you prioritize the scraper→CRM integration instead of polishing a flashy agent. Sales is where “plumbing > model” becomes most obvious: results come from the data flow, not the AI’s eloquence.

Key concepts

Context 30%
ICP and structures
Tools 20%
the slice that goes up
Tight stack
more balanced
Plumbing
flow > eloquence
2

📚 Context: cold email, ICP, demographics

Sales context is the knowledge about who you serve and how you speak to them. This is where effective cold email frameworks, a precise ICP definition, lead demographics, and—just as importantly—the history of won and lost deals come in. That's what keeps the scraper from collecting junk.

🔎 What lives in the sales context

  • Detailed ICP — segment, size, contact’s role, pain signal.
  • Cold email structures — the frameworks that have already converted.
  • Demographics — where and how your best clients are alike.
  • Won / lost — why you won and why you lost deals.

💡 Where to store the leads

Ask yourself early: do the leads live in a Salesforce, a dedicated CRM, or your “Google Sheets empire”? The answer defines the connection you'll build in the next topic — and where won and lost deals are recorded.

Why learn

Because the ICP is the filter for everything that comes next. Without a clear definition, the scraper brings in irrelevant contacts, enrichment wastes tokens, and qualification has no benchmark. Clear context here is what lets the friction in topic 5 work.

Key concepts

ICP
ideal customer
Cold email
structures that convert
Won/Lost
learn from history
Where to store
CRM or Sheets
3

🔌 Tools: scrapers → leads → CRM

This is the ~20% slice. The author uses the Apify skill (without creating your own CLI—the skill already handles that) with different actors to pull leads from LinkedIn, Google Maps, and aggregators. Those leads become a file that goes into the CRM, and email (incoming and outgoing) is connected through a workspace CLI so everything is traceable.

Apify actors LinkedIn Google Maps 📄 leads raw file 🗃️ CRM lead database ✉️ email CLI

How to read: the actors (in teal) feed the leads file, which goes to the CRM; the email (in cyan) completes the communication loop. Note the Track 3 decision: here, the skill from Apify is enough — it’s not worth maintaining your own CLI.

💡 Skill, CLI, or MCP?

The question from Track 3 comes up again: skill, CLI, API, or just MCP? For scraping, Apify's ready-made skill "does more than necessary" — so don't invent a CLI just to keep it. For the CRM and email, a CLI seamless pays off with heavy use.

Why learn

Because the data pipeline is the skeleton of the Sales OS. Without the scraper→leads→CRM→email path, you have nothing to qualify and no one to write to. It also teaches you to be intentional: every connection you add becomes maintenance—build only what usage justifies.

Key concepts

Apify actors
LinkedIn, Maps
Lead database
in the CRM
Skill > CLI
when the skill is enough
Intentional
infra = maintenance
4

💎 Skills: custom enrichment + humanizers

Instead of paying for a tool like Clay, the author suggests designing the your own enrichment system: from the raw lead, gather data and prepare it. And at the output end, a series of humanizers ensures all copy comes out in "human speak," not "AI speak."

The sales skills pipeline

1

Enrich

Takes the raw lead and enriches it with data (role, company, signals) via scrapers — your homegrown Clay.

2

Qualify

Compare against the ICP and apply friction (topic 5) to disqualify weak leads before investing effort.

3

Draft + humanize

Drafts the outreach message and runs it through the humanizers so it sounds like a person, not a robot.

🔎 Why internalize enrichment

Building your own enrichment cuts subscription costs and gives you control over which signals matter to your ICP and keeps the data inside your OS — without relying on a third party for the most sensitive part of the funnel.

Why learn

Because skills are ~16% and determine the quality of what comes out. Well-done original enrichment supports honest qualification; humanizers protect your sender reputation. Together, these skills are what separate “automated spam” from “outreach that respects the recipient.”

Key concepts

Custom enrichment
Homemade Clay
Humanizers
human language
Data control
inside the OS
Reputation
not sound robotic
5

🎯 Qualification with friction

Here’s the most counterintuitive idea in the module: add friction on purpose. The qualification skill doesn't try to approve leads right away—it pushes back: “keep scanning this file,” “go look for more information with another scraper.” The goal is not to spend 100 calls on 50 bad leads; 50 calls on real leads is better.

200 leads raw Friction does it fit the ICP? loop: rescans 150 discarded ~50 qualified is worth the call

How to read: the 200 raw leads (teal) enter the friction gate; those that don’t match the ICP are rescanned (loop) or discarded (red), and only the ~50 that are worth pursuing (cyan) move forward. Less volume, much higher quality.

💡 Friction is a feature

We're used to wanting AI to “approve quickly.” In the sales funnel, the virtue is the opposite: the skill should doubt, ask for more data, and reject when in doubt. Every bad lead it blocks is a saved call and a preserved sender reputation.

Why learn

Because it’s what makes Sales OS sustainable. Without friction, automation becomes a spray-and-pray machine: lots of outreach, few conversions, and a burned domain. With friction, you spend human time only where there’s a real chance—and that’s exactly the behavior the copy-run in topic 7 implements.

Key concepts

Intentional friction
doubt is good
Verification loop
rescans the lead
Quality > volume
50 > 200
When in doubt, don't
fails by default
6

🤖 Agents & Anti-Spray Rules

Agents are “mini versions of employees you’d hire”: the SDR does prospecting, outreach, qualification, and tries to book the demo; the orchestrator combines enrichment + qualification + drafting; and a human reviews everything before sending. But the anti-spray rules are what protect the brand.

✓ Sales OS rules & hooks

  • ✓Don't send the same message to hundreds of people.
  • ✓Opt-out becomes a hook: remove it from the CRM and mark it do-not-contact right away.
  • ✓Respect the brand voice (playbook referenced with every submission).

✗ The spray-and-pray anti-pattern

  • ✗Blast to more than X people without segmentation.
  • ✗Ignoring the person who asked to “leave me alone.”
  • ✗Being pushy—people are tired of it and ignore you.

💡 The good Samaritan salesperson

Identity (just 8%) sums up the tone: someone so proud of the product that this pride is contagious — but without being pushy. Pressure pushes people away; genuine enthusiasm brings them closer. That’s the voice standard humanizers should maintain.

Why learn

Because agents without guardrails become a risk. An automated SDR is powerful and dangerous: it can send a thousand identical emails with one click. The anti-spray rules and opt-out hook keep the Sales OS within the law and in good standing—and the human in the loop is the final check.

Key concepts

SDR
prospecting
Orchestrator
enrich+qualif+draft
Opt-out
do-not-contact hook
Human in the loop
reviews before sending
7

⚙️ Practical: lead qualification with friction

The prompt below is copy-run: paste it into Claude Code with your leads file ready. It qualifies each lead against the ICP with the friction from Topic 5 — if in doubt, doesn’t approve. Replace the sections <...> by yours.

🎯 Objective

Receive a list of leads and return a verdict for each lead (Qualified / Disqualified / Needs enrichment / Remove), with a reason—without writing any emails yet.

prompt · qualificar-leads.txt
Você é o qualificador de leads do meu Sales OS. Avalie cada lead contra o meu
ICP com fricção de propósito: na dúvida, NÃO aprove. Prefira 50 bons a 200 ruins.

Meu ICP (cliente ideal):
- Segmento: <SaaS B2B, 10–50 funcionários>
- Cargo do contato: <fundador ou head de vendas>
- Sinal de dor: <time de vendas sem CRM organizado>
- Desqualificadores: <freelancer, sem site, fora de <país>>

Arquivos:
- Leads: <./leads/leads-brutos.csv>
- Do-not-contact: <./rules/do-not-contact.md>

Para CADA lead, faça:
1. Se o e-mail/domínio estiver na do-not-contact, marque REMOVER e pule.
2. Compare com o ICP campo a campo. Se faltar dado para decidir, marque
   PRECISA-ENRIQUECER e diga EXATAMENTE qual dado falta — não chute.
3. Só marque QUALIFICADO se TODOS os critérios baterem e nenhum
   desqualificador aparecer. Caso contrário, DESQUALIFICADO + motivo.
4. Saída: tabela | lead | veredito | motivo | dado-faltante |.
   Não escreva e-mails ainda; só qualifique. Mostre no fim a contagem por veredito.

✅ How to verify that it worked

  • 1.Every lead that is in the do-not-contact appears as REMOVE.
  • 2.None QUALIFIED passed without meeting all the ICP criteria.
  • 3.Every NEEDS-ENRICHMENT says exactly which data is missing (not “maybe”).
  • 4.The table has the columns lead | verdict | reason | missing-data.
  • 5.The total number of QUALIFIED leads is much lower than the number of raw leads (the friction worked).

💡 Next step

Only after you have the QUALIFIED list, ask for outreach drafts — and run them through the humanizers. Never write copy before qualifying; that’s exactly what prevents spray-and-pray.

Why learn

Because it turns the concept of friction into real behavior. When you run this copy-run, you watch the skill reject weak leads right in front of you—and come away with the standard of “objective, copyable block, and how to verify” for any future skill in your Sales OS.

Key concepts

Copy-run
copy and run
Verdict by lead
4 states
Don't guess
says what data is missing
Qualify first
copy only afterward

✅ Module summary

✓
Crowded pie: context 30%, tools 20% — sales is plumbing.
✓
Scraper → leads → CRM → email pipeline — the Apify skill is enough; use the CLI only for things you use often.
✓
Custom enrichment + humanizers — homemade Clay and copy in human speak.
✓
Friction is a feature — when in doubt, don’t approve; 50 good ones > 200 bad ones.
✓
Anti-spray + opt-out + human in the loop — contagious pride, without being pushy.

Next module:

5.3 — Support OS 🎧 (tickets become playbooks)