name: log-call-transcripts description: Analyzes sales call transcripts to extract key information and automatically logs the call as a Phone Call activity in Dataverse. Use when user says "log this call", "process this transcript", "save this call to CRM", "create a phone call record from this transcript", uploads a call recording transcript, or pastes meeting/call notes to be logged. metadata: author: Dataverse version: 1.0.0 category: sales-productivity
Log Call Transcripts
When a sales representative uploads or provides a call transcript, this skill extracts actionable information from the conversation and creates a properly structured Phone Call activity record in Dataverse. This eliminates manual data entry and ensures consistent activity logging across the sales team.
Instructions
Step 1: Receive and Parse Transcript
When the user provides a call transcript:
- Accept the transcript content (text or file upload)
- Identify the transcript format and parse it appropriately
- Extract speaker labels if available (e.g., "Sales Rep:", "Customer:")
Step 2: Extract Key Information from Transcript
Analyze the transcript to identify and extract:
Participant Information:
- Customer name(s) mentioned
- Company/Account name mentioned
- Customer's role or title if mentioned
- Phone numbers discussed
Call Metadata:
- Call duration (if mentioned or calculable)
- Date/time of call (if mentioned, otherwise use current datetime)
- Call direction (inbound/outbound based on context)
Content Analysis:
- Subject/Topic: Main purpose of the call (e.g., "Product demo follow-up", "Pricing discussion", "Support inquiry")
- Key Discussion Points: Summarize 3-5 main topics discussed
- Action Items: Any commitments or next steps mentioned
- Customer Pain Points: Problems or challenges the customer mentioned
- Competitor Mentions: Any competitor products or companies referenced
- Budget Signals: Any pricing or budget discussions
- Decision Maker Signals: References to decision-making process or stakeholders
- Timeline Signals: Any urgency or timing requirements mentioned
Step 3: Match to Existing Records
Query Dataverse to find matching records:
Find Account:
Use read_query to search the account table:
- Search by company name mentioned in transcript
- Match on account.name field
- If multiple matches, list them for user confirmation
Find Contact:
Use read_query to search the contact table:
- Search by participant name(s) from transcript
- Match on contact.fullname or contact.firstname + contact.lastname
- Filter by accountid if account was identified
- If multiple matches, list them for user confirmation
Find Related Opportunity (if applicable):
Use read_query to search the opportunity table:
- Filter by customerid matching the identified Account or Contact
- Filter by statecode = 0 (Open)
- Present open opportunities for user selection if multiple exist
Find Related Lead (if no Account/Contact found):
Use read_query to search the lead table:
- Search by companyname or fullname
- Filter by statecode = 0 (Open)
Step 4: Prepare Phone Call Activity Record
Construct the Phone Call record with extracted information:
Required Fields:
subject: Generated from call topic (max 200 characters)description: Detailed call summary including:- Key discussion points
- Customer pain points identified
- Action items and next steps
- Any competitor or budget mentions
phonenumber: Customer phone if extracteddirectioncode: true for outgoing, false for incomingactualdurationminutes: Call duration in minutes
Regarding Object (Link to primary record):
- Set
regardingobjectidto the most relevant record:- If opportunity was discussed → link to Opportunity
- If no opportunity but account identified → link to Account
- If only contact identified → link to Contact
- If only lead identified → link to Lead
Activity Party Fields:
from: The sales rep (current user/systemuser)to: The customer contact(s) identified
Additional Fields:
statecode: 1 (Completed)statuscode: 2 (Made) for outgoing or 4 (Received) for incomingcategory: "Sales Call" or appropriate categoryactualstart: Call start timeactualend: Call end time
Step 5: Create the Phone Call Record
Use create_record tool with tablename: phonecall
Include all prepared fields in the item parameter as JSON
Step 6: Create Follow-up Task (if action items identified)
If action items were extracted from the transcript:
Use create_record tool with tablename: task
- subject: First action item or "Follow-up from call with [Customer Name]"
- description: List of all action items from the call
- regardingobjectid: Same as the phone call record
- scheduledend: Based on timeline mentioned or 3 business days from now
- prioritycode: Based on urgency signals (1=High, 2=Normal, 3=Low)
Step 7: Add Detailed Notes (if needed)
If transcript contains detailed technical or strategic information:
Use create_record tool with tablename: annotation
- subject: "Call Transcript - [Date]"
- notetext: Full transcript or detailed notes
- objectid: Link to the created Phone Call activity
- objecttypecode: "phonecall"
Step 8: Update Related Records (if applicable)
Based on transcript content, suggest updates to related records:
Update Opportunity (if linked):
- If competitor mentioned → suggest updating opportunity competitive information
- If budget discussed → suggest updating budgetamount
- If timeline clarified → suggest updating estimatedclosedate
Update Lead (if linked):
- If qualification signals found → suggest updating leadqualitycode
- If budget discussed → suggest updating budgetstatus
- If decision maker confirmed → suggest updating decisionmaker field
Examples
Example 1: Standard Sales Call Logging
User says: "Log this call transcript:
Sales Rep: Hi John, thanks for taking my call today. John: No problem Sarah. We're really interested in learning more about your Enterprise solution. Sales Rep: Great! I know Contoso has been evaluating options. What's driving the timeline? John: We need to make a decision by end of Q1. Our current vendor Acme Corp has been having reliability issues. Sales Rep: I understand. What's your budget range for this project? John: We're looking at around $50,000 for the initial implementation. Sales Rep: Perfect. Let me send you a proposal by Friday and we can schedule a demo for your team next week. John: Sounds good. Make sure to include our CTO, Mike Chen, on that invite."
Actions:
- Parse transcript and extract participant names (John, Sarah), company (Contoso)
- Query Dataverse for matching Account "Contoso" and Contact "John"
- Extract key signals: budget ($50K), timeline (Q1), competitor (Acme Corp), stakeholder (Mike Chen, CTO)
- Create Phone Call record linked to Contoso account
- Create follow-up Task "Send proposal to Contoso" due Friday
Result:
- Phone Call created: "Enterprise Solution Discussion with Contoso"
- Follow-up Task created with Friday deadline
- Suggested updates: Add $50K budget to opportunity, add Acme Corp as competitor
Example 2: Support Call with No Existing Records
User says: "Process this support call - customer called about integration issues"
Actions:
- Parse transcript for customer details
- Search Dataverse - no matching account/contact found
- Create Phone Call with extracted details
- Prompt user: "No matching account found. Would you like to create a new Lead?"
Result: Phone Call logged with suggestion to create new Lead record
Troubleshooting
Error: No matching Account or Contact found
Cause: Company or person name in transcript doesn't match any Dataverse records Solution:
- Check for spelling variations or abbreviations
- Ask user to confirm the correct account/contact
- Offer to create a new Lead record if appropriate
Error: Multiple matching records found
Cause: Common names or company names match multiple Dataverse records Solution:
- Present the list of potential matches to the user
- Ask user to select the correct record before proceeding
- Use additional context (phone number, email) to narrow matches
Error: Phone Call creation failed
Cause: Missing required fields or invalid field values Solution:
- Ensure
subjectis under 200 characters - Verify
regardingobjectidpoints to a valid record - Check that
directioncodeis a valid boolean value
Output Format
After processing, provide the user with:
- Summary: Brief confirmation of what was logged
- Phone Call Record: Link/ID of created phone call activity
- Key Extracted Information: Bullet points of main findings
- Follow-up Task: Link/ID if created
- Suggested Updates: Any recommended updates to related records
Example Interaction
User Input: "Log this call transcript:
Sales Rep: Hi John, thanks for taking my call today. John: No problem Sarah. We're really interested in learning more about your Enterprise solution. Sales Rep: Great! I know Contoso has been evaluating options. What's driving the timeline? John: We need to make a decision by end of Q1. Our current vendor Acme Corp has been having reliability issues. Sales Rep: I understand. What's your budget range for this project? John: We're looking at around $50,000 for the initial implementation. Sales Rep: Perfect. Let me send you a proposal by Friday and we can schedule a demo for your team next week. John: Sounds good. Make sure to include our CTO, Mike Chen, on that invite."
Skill Output: ✅ Phone Call Logged Successfully
Record Created: Phone Call - "Enterprise Solution Discussion with Contoso"
Key Information Extracted:
- Account: Contoso (matched in Dataverse)
- Contact: John (linked to Contoso)
- Topic: Enterprise solution evaluation
- Competitor Mentioned: Acme Corp (reliability issues)
- Budget Signal: $50,000 for implementation
- Timeline: Decision by end of Q1
- Decision Maker: Mike Chen (CTO) to be included
Follow-up Task Created: "Send proposal to Contoso" - Due: Friday
Suggested Updates:
- Update Opportunity "Contoso Enterprise Deal" with budget amount $50,000
- Add competitor "Acme Corp" to opportunity
- Update estimated close date to Q1 end
Dataverse Tables Used
| Table | Purpose |
|---|---|
phonecall | Primary record created for the call activity |
account | Query to match company mentioned in transcript |
contact | Query to match participant names |
opportunity | Query for related open deals, link as regarding object |
lead | Fallback if no account/contact found |
task | Create follow-up tasks for action items |
annotation | Store full transcript as attachment |
Key Fields Reference
phonecall:
subject(NVARCHAR 200) - Call titledescription(MULTILINE TEXT) - Call summary and notesphonenumber(PHONE) - Customer phone numberdirectioncode(BIT) - true=Outgoing, false=Incomingactualdurationminutes(DURATION) - Call length in minutesactualstart(DATETIME) - When call startedactualend(DATETIME) - When call endedregardingobjectid(LOOKUP) - Polymorphic link to account, contact, lead, or opportunityfrom(ACTIVITY PARTY) - Caller (systemuser, contact, account, lead)to(ACTIVITY PARTY) - Call recipient (contact, account, lead)leftvoicemail(BIT) - Whether voicemail was leftstatecode(STATE) - Open(0), Completed(1), Canceled(2)statuscode(STATUS) - Open(1), Made(2), Canceled(3), Received(4)
activityparty (for from/to fields):
partyid(LOOKUP) - Polymorphic reference to participant (contact, account, lead, systemuser)participationtypemask(CHOICE) - Sender(1), To Recipient(2), etc.
annotation (for transcript storage):
subject(NVARCHAR 500) - Note titlenotetext(MULTILINE TEXT) - Full transcript contentobjectid(LOOKUP) - Link to phonecall recordobjecttypecode(NVARCHAR) - "phonecall"