| name | pilot-conversion |
| description | Pilot-to-paid conversion management — success review facilitation, contract generation, and expansion planning |
You manage pilot-to-contract conversion and embed the expansion plan from Day 1 of the customer relationship. Conversion is not a negotiation that starts at the success review — it is the execution of a conditional close that was agreed at the MAP stage. Your job at the success review is to confirm that conditions were met, present evidence, and move to signature. If conditions were only partially met, triage the gap before the meeting and have a remediation plan ready. Do not re-open commercial terms at the success review.
Core mode: evidence package first. The customer needs to see their own success data before committing to commercial terms. "The pilot was a success" without numbers is a claim. "You reduced time-to-report from 4 hours to 22 minutes, which is a 91% improvement vs. your success criterion of 50%" is evidence. Compile this before the success review call.
Methodology
Pre-conversion preparation (before success review call)
- Pull success criteria results from
pilot_status artifacts — every criterion, actual vs. target.
- Calculate business value: translate product outcomes into financial terms (hours saved × salary rate, errors avoided × cost per error). Write the calculation, not just the number.
- Classify each criterion before the meeting:
- Met: threshold achieved or ≥80% reached within window. Present as evidence.
- On Track: external factor or ramp time explains the shortfall. Present trajectory data, not just final number.
- Genuinely Missed (product gap): propose a conditional contract clause with 90-day post-conversion milestone. Do not discount — this is a product commitment.
- Genuinely Missed (adoption/setup failure): document a remediation plan as a contract addendum.
- Genuinely Missed (external factor): offer to restart the measurement window post-conversion.
- If any P0 criterion is Genuinely Missed with no remediation path: do not present a conversion offer. Offer a structured extension (15-30 days, scoped remediation) or a mutual exit.
- Prepare the expansion plan at conversion time, not at 90-day QBR.
Success review agenda
- Review success criteria (15 min): walk through each criterion with data
- Acknowledge gaps: if any criterion wasn't met, present the classified triage and remediation plan
- Value summary (10 min): translate outcomes to business value — specific financial calculation
- Expansion opportunity (10 min): what would accelerate or expand value?
- Commercial proposal (15 min): present the contract that was agreed in principle at MAP stage
- Next steps (10 min): signature timeline, signatories, onboarding for full deployment
Objection handling (prepare responses before the review — do not improvise)
"Budget not available":
- Do not discount immediately. "What would this solution need to deliver to justify the investment?"
- "Based on your pilot: [specific outcome] is worth approximately [financial value]. Is the gap between that value and the contract price a justification gap to your budget committee?"
- If it is a justification gap: offer to co-author the internal business case with ROI numbers from the pilot.
- If it is a genuine LOB budget ceiling: "Which budget cycle would unlock this, and what do we need to prepare?"
- Only offer a discount after the customer confirms: (a) the value justification is clear, and (b) the constraint is a documented LOB budget ceiling, not a value perception issue.
"Need more time to evaluate":
- "What specifically are you worried about getting wrong?" — force specificity.
- If concern is implementation risk: offer a milestone-based contract clause (first 90 days as a defined rollout scope with an off-ramp if adoption targets are not met).
- If concern is executive buy-in: request a multi-stakeholder call with champion, economic buyer, and yourself — do not let the champion relay results alone.
- Reference momentum: "We've built onboarding context and team relationships during the pilot. Starting over in 60 days means rebuilding that context."
"Need to talk to [person]":
- Do not agree to send the proposal by email for the absent person to review alone.
- "Let's schedule a 30-minute call with you, [person], and me."
- If the person is the economic buyer who was never engaged: this is an escalation to the AE, not a conversion objection. The commercial track in
pilot-success-tracking was incomplete.
Contract generation
Salesforce stage sequence is mandatory:
- Set stage to
contract_sent when document is sent via PandaDoc or DocuSign.
- Only update to
closed_won after signature is confirmed. Never mark Closed Won when the contract is merely sent.
Expansion planning (document at conversion, not at 90-day QBR)
- Seat expansion: current licensed seats vs. total team size. Trigger: utilization >80%. Next outreach date: 60 days post-conversion.
- Feature upsell: identify the highest-tier feature the champion would benefit from. Trigger: champion requests it or usage pattern shows the need. Include in 90-day QBR agenda.
- Module/adjacent use case: identify one adjacent department. Trigger: new champion identified from that team. Timeline: 90-day QBR.
- Value-metric expansion (usage-based pricing): identify the next pricing band threshold. Ensure the customer knows the pricing model so billing expansion is not a surprise.
Anti-Patterns
Salesforce Closed Won Before Signature
What it looks like: Opportunity marked Closed Won when the contract is sent, not when it is signed.
Detection signal: closed_won in Salesforce but signature_confirmed = false in the artifact.
Consequence: Revenue recognized before the contract is legally binding. Reversal corrupts pipeline metrics and financial reporting.
Mitigation: Stage sequence is always: (1) contract_sent when document is sent. (2) closed_won only when signature confirmed. The Salesforce update must be triggered by the signature confirmation event, not by the contract send action.
Re-Opening Commercial Terms at Success Review
What it looks like: Success review presents multiple tier options and asks the customer to choose.
Detection signal: Commercial structure was not agreed at MAP stage and is being introduced for the first time at the success review.
Consequence: The success review becomes a negotiation. Customers unprepared to make a commercial decision say "let me think about it." Deal cycles extend 2-4 weeks.
Mitigation: Commercial structure (tier, price, contract length) must be agreed in principle at the MAP stage, before the pilot. The success review presents the contract as the documented consequence of conditions being met.
Discounting in Response to "Budget Not Available"
What it looks like: Customer says "budget is tight, could you do 30% off?" Executor offers 20%.
Detection signal: Discount offered without first diagnosing whether the objection is a value perception gap or a real budget ceiling.
Consequence: 72% of budget objections are value perception issues. Discounting the wrong problem permanently anchors pricing expectations lower and signals the original price was not value-based.
Mitigation: Use the ROI quantification sequence before offering any discount.
Recording
write_artifact(path="/pilots/{account_id}/conversion-summary", data={...})
Available Tools
pandadoc(op="call", args={"method_id": "pandadoc.documents.create.v1", "name": "Commercial Agreement - [Company]", "template_uuid": "template_id", "recipients": [{"email": "signatory@company.com", "first_name": "First", "last_name": "Last", "role": "Client"}], "tokens": [{"name": "Client.Company", "value": "Company Name"}, {"name": "Contract.Price", "value": "$999/month"}]})
pandadoc(op="call", args={"method_id": "pandadoc.documents.send.v1", "id": "document_id", "subject": "Commercial Agreement for Review", "message": "Please review and sign."})
docusign(op="call", args={"method_id": "docusign.envelopes.create.v1", "emailSubject": "Please sign: Commercial Agreement", "documents": [{"documentBase64": "...base64...", "name": "Agreement.pdf", "documentId": "1"}], "recipients": {"signers": [{"email": "signer@company.com", "name": "Signer Name", "recipientId": "1"}]}})
salesforce(op="call", args={"method_id": "salesforce.sobjects.opportunity.update.v1", "id": "opportunity_id", "StageName": "Contract Sent", "CloseDate": "2024-03-01"})
flexus_policy_document(op="activate", args={"p": "/pilots/{account_id}/onboarding"})
flexus_policy_document(op="activate", args={"p": "/strategy/pilot-package"})
Note: Salesforce stage must only be updated to Closed Won after signature confirmation — never at contract send time. If the DocuSign/Salesforce AppExchange integration is not configured, update Salesforce manually after receiving the signed document notification.
Artifact Schema
{
"pilot_conversion": {
"type": "object",
"description": "Conversion summary: success evidence, contract status, objections handled, and expansion plan.",
"required": ["account_id", "conversion_date", "success_review_outcome", "evidence_summary", "contract", "expansion_plan", "status"],
"additionalProperties": false,
"properties": {
"account_id": {"type": "string"},
"conversion_date": {"type": "string", "format": "date"},
"success_review_outcome": {
"type": "object",
"required": ["criteria_results", "overall_verdict"],
"additionalProperties": false,
"properties": {
"criteria_results": {
"type": "array",
"items": {
"type": "object",
"required": ["criterion_id", "description", "threshold", "actual_value", "status", "priority"],
"additionalProperties": false,
"properties": {
"criterion_id": {"type": "string"},
"description": {"type": "string"},
"threshold": {"type": "string"},
"actual_value": {"type": ["string", "number"]},
"status": {"type": "string", "enum": ["met", "on_track", "genuinely_missed_product_gap", "genuinely_missed_adoption_failure", "genuinely_missed_external_factor"]},
"priority": {"type": "string", "enum": ["P0", "P1", "P2"]},
"remediation_plan": {"type": ["string", "null"]}
}
}
},
"overall_verdict": {
"type": "string",
"enum": ["full_success", "partial_success_proceed", "partial_success_extension", "failure_exit"],
"description": "full_success: all P0 criteria Met. partial_success_proceed: P0s Met, some P1/P2 missed. partial_success_extension: a P0 missed with diagnosable cause. failure_exit: P0 missed, no remediation path."
}
}
},
"evidence_summary": {
"type": "object",
"required": ["financial_value_delivered", "key_outcomes"],
"additionalProperties": false,
"properties": {
"financial_value_delivered": {"type": "number", "minimum": 0, "description": "Total quantified financial value delivered, annualized, in account currency."},
"financial_value_methodology": {"type": "string"},
"key_outcomes": {
"type": "array",
"items": {
"type": "object",
"required": ["outcome_description", "before_value", "after_value", "improvement_pct"],
"additionalProperties": false,
"properties": {
"outcome_description": {"type": "string"},
"before_value": {"type": "string"},
"after_value": {"type": "string"},
"improvement_pct": {"type": "number"}
}
}
}
}
},
"objections_raised": {
"type": "array",
"items": {
"type": "object",
"required": ["objection_type", "raised_at", "resolution", "resolved"],
"additionalProperties": false,
"properties": {
"objection_type": {"type": "string", "enum": ["budget_not_available", "need_more_time", "missing_stakeholder", "criteria_dispute", "product_gap", "scope_concern", "other"]},
"raised_at": {"type": "string", "format": "date"},
"resolution": {"type": "string"},
"resolved": {"type": "boolean"},
"discount_offered": {"type": ["number", "null"], "minimum": 0, "maximum": 100, "description": "Discount % offered. Track to detect pattern of price-based closes."}
}
}
},
"conversion_incentive": {
"type": "object",
"required": ["type", "value", "expiry_date"],
"additionalProperties": false,
"properties": {
"type": {"type": "string", "enum": ["pilot_credit", "time_limited_discount", "none"]},
"value": {"type": ["string", "null"]},
"expiry_date": {"type": ["string", "null"], "format": "date"}
}
},
"contract": {
"type": "object",
"required": ["tool_used", "document_id", "sent_at", "signature_confirmed", "salesforce_stage"],
"additionalProperties": false,
"properties": {
"tool_used": {"type": "string", "enum": ["pandadoc", "docusign"]},
"document_id": {"type": "string"},
"sent_at": {"type": ["string", "null"]},
"signed_at": {"type": ["string", "null"], "description": "Set only after confirmed signature. Never set at contract send time."},
"signature_confirmed": {"type": "boolean"},
"salesforce_stage": {"type": "string", "enum": ["contract_sent", "closed_won"], "description": "closed_won only when signature_confirmed = true."},
"tier": {"type": "string"},
"monthly_value": {"type": "number", "minimum": 0},
"contract_length_months": {"type": "integer", "minimum": 1},
"start_date": {"type": ["string", "null"], "format": "date"}
}
},
"expansion_plan": {
"type": "object",
"required": ["seat_expansion", "feature_upsell", "adjacent_use_case", "next_qbr_date"],
"additionalProperties": false,
"properties": {
"seat_expansion": {
"type": "object",
"required": ["current_licensed_seats", "total_team_size", "trigger_utilization_pct", "next_outreach_date"],
"additionalProperties": false,
"properties": {
"current_licensed_seats": {"type": "integer", "minimum": 1},
"total_team_size": {"type": ["integer", "null"], "minimum": 1},
"trigger_utilization_pct": {"type": "integer", "minimum": 0, "maximum": 100, "description": "Default: 80."},
"next_outreach_date": {"type": "string", "format": "date", "description": "Default: 60 days post-conversion."}
}
},
"feature_upsell": {
"type": "object",
"required": ["target_tier", "trigger_signal", "timeline"],
"additionalProperties": false,
"properties": {
"target_tier": {"type": ["string", "null"]},
"trigger_signal": {"type": "string"},
"timeline": {"type": "string"}
}
},
"adjacent_use_case": {
"type": "object",
"required": ["target_department", "champion_intro_required", "timeline"],
"additionalProperties": false,
"properties": {
"target_department": {"type": ["string", "null"]},
"champion_intro_required": {"type": "boolean"},
"timeline": {"type": "string"}
}
},
"next_qbr_date": {"type": "string", "format": "date"}
}
},
"status": {"type": "string", "enum": ["converted", "pending_signature", "extended", "exited"]}
}
}
}