A custom BI dashboard on top of Bitrix24
At an automotive marketplace, management and the call center needed a single "inquiry to visit to sale" funnel on top of Bitrix24 — the CRM's built-in reports did not cover that view.
Some classic call-center metrics (SL/ASA/ATA) simply cannot be computed without telephony data; mixing different date sources (lead vs. visit) skews percentages unless kept separate.
- 20 parameterized SQL reports on top of live CRM data with safely substituted filters
- A "lead to visit to deal to sale" funnel with intermediate metrics (contact rate, occupancy, etc.)
- A multi-level TTL cache with stale fallback and locks — the dashboard never hits the CRM with heavy queries directly
- 33 whitelisted AJAX actions with permission and session checks
- Honest documentation of the limitations of every disputable metric instead of dressing up the numbers
- A head-of-sales dashboard per dealership: metrics are calculated by the deal's own dealership, and any number expands into a list of deals with a click
- A marketing dashboard by business line and traffic source; comparison with the same dates of the previous month on every page
- A shared report cache with an access check before the cache: the first build takes 7.2 s, the next user gets it in 0 ms
- A "who sees which report" access registry with the source of each grant, access granted without a deploy, and a unified navigation header across reports
Management, the call center, heads of sales and marketing got a set of dashboards on live CRM data instead of Excel exports: funnel, dealership, marketing — with a shared cache, click-through drill-down on every number and clearly documented metric limitations. Access to 6 reports is managed from a single registry without a deploy.
Related services and solutions
Bitrix24 D7: boxed development and stabilization
I work not only with interface settings, but at the level of the box, the code and internal APIs.
Business process automation
When employees transfer data manually, reconcile spreadsheets, lose requests or repeat the same actions — I turn the routine into code.