Turn a Twenty sales/discovery call into a partner-ready brief and record the lead in the CRM. Use whenever the user has a call recording, transcript, Fireflies link, or a lead folder and wants to qualify the deal, summarize the call, write a partner brief, or prep the partner handoff. Trigger even without the word "brief" - "summarize this call", "what did we learn from the X call", "qualify this lead", "scope this for a partner", "draft a design doc", or pointing at a transcript file all count. Produces a qualification summary, a partner brief, matching criteria, and an Opportunity in the partners workspace. Pass --full for inference mode.
72
90%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
First step of the lead path. Takes a raw call and produces everything the rest of the path needs:
twenty-lead-brief → twenty-partner-shortlist → twenty-partner-introFour outputs, in order:
partner-match-criteria.md, the input to twenty-partner-shortlist.Credentials, the gql() helper and every query live in ../_shared/partner-api.md. Read it
rather than restating anything.
The user provides it: pasted text, a path (.txt / .vtt / .srt, a meetily folder or
transcripts.json), or a Fireflies link or ID.
transcripts.json is { "segments": [ { "text": … } ] }: concatenate text in
order..vtt / .srt: drop cue numbers and timecodes.FIREFLIES_API_KEY.No transcript means stop and ask. Never fabricate one, never proceed without one.
For a long transcript, read the whole thing before writing. Coverage is the point.
A structured extraction against a fixed schema, not a summary. A "summary that loses nothing" is a contradiction; the schema is what prevents loss, because every dimension has a slot and a gap is marked rather than silently dropped.
Rules
Output (these exact headers)
== PART A — DEAL ONE-PAGER ==
1. ONE-LINE SUMMARY
2. COMPANY — name, what they do, size/employees, HQ + countries of operation, industry
3. PEOPLE ON THE CALL — name, role/title, side (Twenty vs prospect); infer roles if
unlabeled and flag uncertain names
4. CURRENT SITUATION — what CRM/tools they use today; specific pains
5. WHY THEY'RE INTERESTED IN TWENTY
6. WHAT THEY WANT — bulleted needs/requirements, verbatim where possible
7. IMPLEMENTATION COMPLEXITY (for partner matching)
- Deployment: cloud / self-host / both / unclear (+ the evidence)
- Data model: custom objects, multi-tenant, row-level security, migrations
- Integrations / custom apps needed
- Workflows / automation needs
- Scale: number of seats/users
- Region + language the partner would need to cover
8. COMMERCIALS — budget or prices discussed, plan tier (Pro/Org/Enterprise), seat count,
deal value, who pays
9. TIMELINE & DECISION — key dates, decision-makers, urgency, decision process
10. OBJECTIONS / RISKS / FEARS — including anything that could kill the deal
11. ALTERNATIVES — competitors or other options they're weighing
12. DOES THIS DEAL NEED A PARTNER? — yes / no / maybe + why; and if yes, what kind
(scope, region, language, seniority/tier)
13. NEXT STEPS / OPEN QUESTIONS / FOLLOW-UPS
14. PARTNER-FACING BRIEF — a 2-4 sentence narrative a partner can skim to decide yes/no,
drawn only from PART A
== PART B — APPENDIX (not deal-specific) ==
15. PRODUCT / WEBSITE / GTM FEEDBACK — feedback on the product, pricing page, website
wording, onboarding, or trial; capture even if off-topic for qualification
16. TERMINOLOGY / DOMAIN-LANGUAGE NOTES — words that mean different things to each side or
carry domain-specific meaning (e.g. "partner", "donor", jargon)
17. KEY VERBATIM QUOTES — 3-8 direct quotes that capture intent, needs, or objectionsPrint it, then save it to the lead folder as YYYY-MM-DD-<lead>-call-summary.md.
Stop here if the user only wanted the summary. Ask before continuing to Step 3: a lead that is clearly not partner-shaped (section 12 says no) does not need a partner brief.
The doctrine lives in design-doc-doctrine.md in this folder: what to produce, the
structure, the rules, the verification, the self-check. Read it and follow it. The rest of
this section is only the mechanics.
Default output is a zero-inference partner brief. Pass --full for the inference-enabled
design doc. The doctrine defines both.
.docx
with textutil -convert txt "<file>" -output /tmp/out.txt on macOS.YYYY-MM-DD-<lead>-partner-brief.md
(or -design-doc.md in --full).The partner gets a link, never an attachment: a Gmail compose URL cannot carry a file, and a
.md attachment is a poor read.
open -a "Google Chrome" "https://drive.google.com/drive/folders/1ISDCplqLv6GrBQOOX7Fk4OK07LAK8BPd"Tell the user: create the Doc there, paste the brief markdown, then paste the share URL
back. Mention Tools → Preferences → Enable Markdown once, so the paste renders headings,
bold and tables instead of showing raw ##.
Wait for the URL. If the user skips it, carry on with Step 5 and leave designDocUrl
empty. Say so, because twenty-partner-intro will then have no link to send.
The folder is shared anyone with the link can view, so a partner can open it without an
account. Do not call the Drive API: the connected account is personal, and any Doc it created
would land in the wrong Drive under the wrong owner.
partner-match-criteria.mdAlways, as a third file in the lead folder. This is the input twenty-partner-shortlist
reads.
Criterion | Why table. Cover language and region, deployment
type, data-model complexity signal, migration capability, engagement model (fixed vs
retainer).twenty-partner-shortlist shows this next
to each partner's rate; it never filters on it.This step writes to production. Search before creating, always.
| Field | Value |
|---|---|
name | <Company> <need in about three words>, matching existing records: TADA new CRM, Aranya CRM Migration, ECF PRO - Self-hosting multi-workspace |
stage | NEW |
need | one line, from section 6 of the summary |
requirements | the requirements text, from section 7 |
companyId, pointOfContactId | resolved above |
designDocUrl | { "primaryLinkUrl": "<the Doc URL>", "primaryLinkLabel": "Partner brief" }, omitted if Step 4 produced no URL |
Do not set isListed: that belongs to the marketplace pull flow, which this path does
not use. Do not set introSentAt and do not create any Application:
twenty-partner-intro owns both.
In the lead folder:
YYYY-MM-DD-<lead>-call-summary.mdYYYY-MM-DD-<lead>-partner-brief.md (or -design-doc.md in --full)partner-match-criteria.mdpartner-match-criteria.md current as you learn more about the lead. It feeds
twenty-partner-shortlist and, eventually, in-product matching logic.Deployment → deploymentExpertise,
scope needs → partnerScope, region and language → partner region and languages, scale →
capacity, the "needs a partner?" tier → partnerTier.partners-experience/TSF/2026-05-26-tsf-design-doc.md shows the target
coverage, flag discipline and verification appendix. It predates the current concision and
formatting rules, so follow the doctrine over the example where they differ.1749958
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.