CRM Process Automation Bot in Mobile Applications
Sales managers spend 20–30% of working time entering data into CRM. Voice memo after a meeting, quick deal status between calls — the bot does this through dialog without forcing users to open a full CRM client.
Key CRM Bot Scenarios
Creating contact and deal. "Just met with Ivan Petrov from LLC Alpha, phone +7 999 123-45-67, interested in our Pro plan, planning to call on Friday" — bot parses this into structure and creates contact + deal in CRM.
Updating status. "Deal 1234 — move to stage Proposal Sent" without searching through interface.
Adding activity. "Called 15 minutes, discussed terms, next step — demo on Thursday".
Requesting data. "What deals do I have in progress?", "When was last contact with client Daisy?".
CRM API Integration
Popular systems with REST API:
- AmoCRM / Kommo — OAuth 2.0, full REST API for deals, contacts, tasks, pipeline
- Bitrix24 — REST API via webhook or OAuth
- Salesforce — SOQL + REST/SOAP API, most complex to configure
- HubSpot — clean REST, good documentation
- Pipedrive — REST, convenient for small business
For AmoCRM creating deal with contact:
const amo = require('amocrm-js');
async function createDealWithContact(dealData, contactData) {
// First create or find contact
const contacts = await client.contacts.create([{
name: contactData.name,
phone: [{ value: contactData.phone, enum_code: 'WORK' }],
email: contactData.email ? [{ value: contactData.email, enum_code: 'WORK' }] : []
}]);
const contactId = contacts[0].id;
// Create deal and link contact
const deals = await client.leads.create([{
name: dealData.name,
price: dealData.price || 0,
pipeline_id: dealData.pipelineId,
status_id: dealData.statusId,
_embedded: {
contacts: [{ id: contactId }]
}
}]);
return deals[0];
}
Unstructured text parsing — key task. Manager won't fill fields through dialog sequentially. They'll speak a phrase, bot must extract name, company, phone, intent, next step.
LLM with function calling works better here than NLU with intents: model understands context and fills fields present in text, leaves others empty.
EXTRACT_PROMPT = """
Extract CRM parameters from sales manager text.
If information is not mentioned — leave field null.
Do not invent data that is not in the text.
"""
Phone number normalization. +7 999 123-45-67, 89991234567, 8(999)123-45-67 — same number. Before writing to CRM normalize to E.164: +79991234567. libphonenumber library (Google) — standard for this.
Voice Input for Field Sales
Manager won't type after meeting — will record voice memo. On iOS — SFSpeechRecognizer with SFSpeechAudioBufferRecognitionRequest, on Android — SpeechRecognizer. After transcription text is passed to bot as regular message.
Transcription quality for Russian: native APIs work acceptably for structured phrases, Whisper API handles conversational speech and non-standard industry names/terms better.
Dashboard in Mobile Application
Besides dialog, CRM bot is often complemented with compact dashboard: active deals by stage, today's tasks, monthly KPI. This is not replacement for full CRM client — quick overview for manager between meetings.
On Android — Jetpack Compose with LazyColumn and animated counters, on iOS — SwiftUI with Animation modifiers.
Implementation Process
Audit CRM system: API documentation, test account.
Design scenarios: creating entities, updating statuses, requesting data.
NLP logic for unstructured input parsing.
Mobile client with dialog and voice input.
Testing with real sales managers — their phrasing always differs from test cases.
Timeline Estimates
Bot for one CRM (AmoCRM / Bitrix24) with basic scenarios — 2–3 weeks. With voice input, complex parsing, dashboard — 4–6 weeks.







