contractor-call-sheet
Skill22 starsChanged 53 days agoMITView on GitHub
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.
In this repository26 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- account-blueprintSkill
- buyer-prospectorSkill
- caller-reputation-monitorSkill
- candidate-intakeSkill
- closer-coachSkill
- cold-call-coachSkill
- comp-packageSkill
- deep-prospectingSkill
- deep-prospecting-v4Skill
- deep-prospecting-v5Skill
- dispo-deal-blastSkill
- first-market-county-dataSkill
- kpi-engineSkill
- lead-manager-coachSkill
- phone-validatorSkill
- playbook-creatorSkill
- probate-property-finderSkill
- real-estate-compingSkill
- rehab-estimatorSkill
- sequential-presetsSkill
- sift-market-researchSkill
- sift-sequencesSkill
- team-hiringSkill
- text-touch-builderSkill
- vendor-directory-builderSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 62
Read references/outreach-templates.md.
- Distinctive: line 75
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." …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Contractor Call Sheet
What this produces
Two deliverables that turn a vetted directory into same-day outreach:
- 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.
- 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
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.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

