# Contractor Call Sheet

> Turn a finished contractor/vendor directory (the Excel from vendor-directory-builder, or any list of vetted providers with phones) into an action layer: a one-page printable CALL SHEET of the top picks by trade, plus personalized first-contact messages (text / voicemail) for each and a vetting-call question script. Use whenever someone has a provider/contractor list and wants to actually start reaching out: "make a call sheet from this directory," "who do I call first," "draft outreach to these contractors," "turn my top picks into a one-pager," "give me a script for calling these subs," or "write intro texts to these vendors." Works off the directory this team's research workflow produces, but also off any spreadsheet or pasted list that has company names and phone numbers. Trigger even if they don't say "call sheet": if the need is "I have the list, now help me contact them," use this skill. Pairs with vendor-directory-builder (which builds the list); this skill works the list.

- Skill: `datasift-ty-personal/contractor-call-sheet` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add datasift-ty-personal/contractor-call-sheet`
- Raw SKILL.md: https://api.skillmd.com/api/skills/datasift-ty-personal/contractor-call-sheet/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: DataSift-Ty-Personal (https://skillmd.com/u/datasift-ty-personal)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/datasift-ty-personal/contractor-call-sheet

---


# Contractor Call Sheet

## What this produces

Two deliverables that turn a vetted directory into same-day outreach:

1. **A one-page call sheet** (printable HTML): the top picks grouped by trade, each with
   phone, the one-line reason it's the pick, what to confirm on the call, and empty
   Status / Notes / Next-step columns to work down. Call-first (cross-validated) providers
   are flagged at the top.
2. **Personalized first-contact messages**: a short, human text or voicemail for each top
   pick, varied so they don't read like a mass blast, plus the **vetting-call question
   script** for when someone picks up.

The call sheet is generated by `scripts/build_call_sheet.py` (deterministic). The messages
are drafted by you (the model) from `references/outreach-templates.md`, personalized per
provider. That part shouldn't be a template mail-merge; it should sound like a real person.

## Why it's split this way

The sheet is mechanical (same columns every time), so a script does it perfectly and
free. The outreach is the opposite: a message that lands is specific ("saw you do a lot of
investor work in Maryville") and varied, which is a judgment task, not a merge. Doing the
merge in a script would produce the exact spammy sameness we're trying to avoid.

## Workflow

### 1. Get the input
Ideally the Excel from `vendor-directory-builder` (it has the columns this expects:
Category, Company, Phone, Serves, Why, Cautions, Source, Confidence, Top Pick). Any
spreadsheet or pasted list with company names + phones also works: map the columns
mentally and pass what you have.

### 2. Build the call sheet
```bash
python scripts/build_call_sheet.py <directory.xlsx> <call_sheet.html> [--all]
```
By default it includes only the **top picks** (starred rows), the people to call first.
Pass `--all` to include every provider. It groups by trade, puts cross-validated
"call-first" providers in a banner at the top, and leaves Status / Notes / Next-step
columns blank to work down. Open or deliver the HTML (it prints cleanly to one or two
pages). The script's header shows the market and date if present in the file.

### 3. Draft the outreach
Read `references/outreach-templates.md`. For each top pick, write a short first-contact
**text** and a **voicemail** line, personalized from that provider's own row: pull a
specific hook from the `Why` field (what they're good at / who recommended them) and, for
any "Confirm [area]" provider, lead with the coverage question. **Vary the wording** across
providers. Keep them short, plainly worded, and investor-to-pro (not salesy). Include the
**vetting-call script** so whoever dials knows what to ask when someone answers.

### 4. Deliver
Hand over the call sheet (HTML) + the outreach messages (grouped by provider). Offer to
drop the messages into the directory or a tracker if the team wants them stored.

## Guardrails

- **Don't invent contact info.** If a row's phone is "not found," carry that through: say
  "no number yet, get it from the group/site first." Never fill in a plausible number.
- **Respect the confidence + cautions.** Low-confidence or "confirm license/insurance" rows
  should surface that in the notes, not get a glowing intro that overstates them.
- **Messaging is a draft for a human to send.** This skill writes the outreach; it does not
  send it. Sending is the user's call.

## Files

- `scripts/build_call_sheet.py`: builds the printable call sheet from a directory file.
- `references/outreach-templates.md`: first-contact text/voicemail templates, the
  vetting-call script, and how to personalize per provider without sounding mass-sent.

