ГАЙД. Как быстро подготовить клиентскую базу из 18.000 номеров для автообзвона с помощью нейросети

Отличный пример работы с большим объемом данных и автоматизации рутинных процессов. Сейчас слишком рано говорить о том что нейросети заменят людей, я вижу ситуацию наоборот что они создали новые вакансии AI специалистов.

Иван Тищенко
Основатель teamassist.ru

Часто наш сервис воспринимают как секретарей и консъержей, но это совершенно не так, пул наших компетенций значительно выше и вот этот кейс тому наглядный пример, способностей и возможностей.

Итак, в чем суть

Задача: Заказчик периодически запускает массовый автобзвон по телефонным номерам, базу эту он покупает в Интернете. Сервис который делает автопрозвон требует XLS файл в котором будут номера телефонов идущих списком. Нас попросили подготовить ее к рассылке, отформатировать так чтобы сервис по автообзвону получил в нужном ему формате базу номеров отформатированные списком.
Проблема: Все эти номера в базе указаны как попало, данные разбросаны по документу, в одной ячейке может быть сразу 10 номеров, вот скриншот. Кликните на картинку чтобы увеличить.

<i>Купленная база как она выглядит в оригинале, в таком виде ее загружать  в сервис автообзвона нельзя</i>
Купленная база как она выглядит в оригинале, в таком виде ее загружать  в сервис автообзвона нельзя
  • В одной ячейке находятся сразу по 2-8 номеров через запятую
  • Несколько столбцов с номерами на странице
  • В таблице есть дубли номеров, которые надо убрать
  • Нужно удалить номера 8800, 495, 499 и прочие городские номера
  • Очистить номера от лишних символов + ( ) тире и пробелов
  • В таблице полно пустых строк и слитых ячеек их там около тысячи

СПОЙЛЕР: В итоге должен получится чистый список номеров вот такого вида, что мы собственно и сделали.

<i>Готовый, чистый список номеров для программы автообзвона zvonobot</i>
Готовый, чистый список номеров для программы автообзвона zvonobot

Но дъявол как всегда кроется в деталях, обрабатывать такой объем информации в ручную ушло бы минимум пару дней и масса сил. Ниже покажу как это сделать за час.

Сложность задачи: Почти 15 тысяч строк, сидеть делать в такой таблице что-то руками это больно, долго и не эффективно, нужна автоматизация. К сожалению просто загрузить в нейросетку и сделать красиво одной кнопкой не получится потому что:

  • Нейросеть (ChatGPT, Claude, WriteSonic) при таком объеме теряет контекст и просто останавливается где-то фиг пойми в каком месте документа. Сидеть и искать за ними косяки не хочется
  • Почти все сетки начинают придумывать сами несуществующие номера телефонов, хотя никто об этом их в промпте не просил, могут легко потерять часть номеров. Поэтому мы решили чем меньше контента даем нейросети тем меньше косяков за ней надо будет исправлять.
  • Также они не умеют работать с файлом по ссылке а если загружать файлом то сбиваютсяв процессе работы так как в документе есть слитые ячейки и вообще формат документа максимально мусорный и не предсказуемый, почему-то нейросети не любят сложные документы
  • Объем файла большой, даже при заявленных 64 тысячах символах они его тупо не вывозят. Находить косяки после работы нейросети в документе в котором 15 тысяч строк это крайне неприятное и не прикольное занятие.

Проще говоря простого и быстрого решения к сожалению мы не нашли, поэтому вот как мы поступили.

ШАГ 1 - предварительная чистка базы

Удаляем из документа лишние столбцы, чтобы они просто не мешались. Оставим только столбец "C" т.к. в других столбцах были городские номера, поэтому их спокойно сносим. Получилось вот так

<i>Ок выглядит теперь не так страшно, но это только начало и самое сложное впереди</i>
Ок выглядит теперь не так страшно, но это только начало и самое сложное впереди

ШАГ 2 - удаление лишних символов

<i>Для вызова функции жмите комбинацию CTRL + H</i>
Для вызова функции жмите комбинацию CTRL + H

Теперь функцией "Поиск и замена" на всем листе пишем что найти, в данном случае открывающая скобка заменить на пустоту (удаление) и выбрать "Этот лист" тк. оригинал мы заранее оставили на первом листе, чтобы если что вернуться. Эта функция уберет все найденные открывающие скобки. Таким же методом чистим закрывающую скобку, знак "+", тире и пробел.

<i>Такая ситуация у вас возникнет при удалении скобки</i>
Такая ситуация у вас возникнет при удалении скобки

Следующая проблема, это наличие + в номере телефона, Google Sheet начинает складывать значения и поэтому появляется такая ошибка, давайте исправим это.

<i>Снова жмем CTRL + H и удаляем плюсы из формул</i>
Снова жмем CTRL + H и удаляем плюсы из формул

После того как мы удалили знак плюса ошибка пропадет, цифры станут цифрами а не формулой, можно работать дальше. Документ будет выглядеть вот так:

<i>Вот так выглядит база после этих махинаций</i>
Вот так выглядит база после этих махинаций

Результат: Отформатированные номера телефонов, без лишних символов, но остаются еще несколько серьезных проблем а именно

  • Пустые и цветные строки, которых около тысячи и в ручную сидеть их тыркать и удалять не вариант вообще
  • Номера которые записаны в одну ячейку через запятую, наверное сказав что на форматирование уйдет пару дней я был очень оптимистичен, в ручную это неделя миниум)

ШАГ 3 - Скрипт для автоматического удаления пустых строк

Идем в любую нейросеть и пишем промт удаления пустых строк через AppScript который есть в Google Sheet. Мы используем российский сервис для работы с Claude, ChatGPT

Сервис называется ask.chadgpt.ru
Сервис называется ask.chadgpt.ru

Промпт простейший и сработал с первого раза, звучит он так:
Как мне массово в google sheet удалить пустые цветные строки?

В итоге нейросеть выдала такой код и инструкцию по его установке

function deleteEmptyColoredRows() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var data = sheet.getDataRange().getValues(); var colors = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()).getBackgrounds(); for (var i = data.length - 1; i >= 0; i--) { if (data[i].join('') === '' && colors[i].join('') !== '#ffffff') { sheet.deleteRow(i + 1); } } }

Идем в AppSctript и вставляем наш код

<i>Через меню "Расширения"</i>
Через меню "Расширения"
<i>Создаем через "+" файл и вставляем код, сохраняем</i>
Создаем через "+" файл и вставляем код, сохраняем

Далее уже в таблице надо импортировать макрос

<i>Жмякаем по кнопке</i>
Жмякаем по кнопке
<i>Выбираем наш скрипт для импорта</i>
Выбираем наш скрипт для импорта
<i>Снова лезем в меню, и выбираем наш скрипт</i>
Снова лезем в меню, и выбираем наш скрипт
<i>Скрипт запустился, который убирает вот эти строки</i>
Скрипт запустился, который убирает вот эти строки

Наблюдаем как в режиме реального времени строки удаляются автоматически, кайфуем и пьем кофеек. Для 15 тысяч строк ушло примерно около 3х минут времени на обработку всего документа

Кстати скрипт скорее всего у вас сразу не запустится, нужно выдать ему разрешение, во всплывающих окнах везде жмем Allow или "Разрешить", всего будет 3-4 шага (запроса). И у нас должно получится вот это

<i>Удалили все пустые строки</i>
Удалили все пустые строки

И у нас остается еще пару шагов и самое сложное разделить номера по строкам из ячейки. Для разделения снова идем писать скрипт в нейросеть

ШАГ 4 - пишем скрипт для разделения номеров

Теперь нам нужно проверить каждую строку и если там много номеров удалить разделитель в виде запятой и сделать перенос строки после каждого номера.

<i>Снова идем в нейросетку и пишем запрос</i>
Снова идем в нейросетку и пишем запрос

Напиши скрипт для google sheet который проверяет каждую строку на вкладке документа и если находит в ячейке номера телефонов идущих списком через запятую, примерно вот так: 7988243****,7901491****,7918095****,7918160****,7988132**** то запятую убирает и вместо нее делает перенос строки, так чтобы каждый номер был на отдельной строке. Должно получиться вот так
7988243****
7901491****
7918095****
7918160****
7988132****
Номера могут быть разные и их может быть любое количество в ячейке

Получаем вот такой вот код. Он проверен и работает отлично. Делаем все то же самое что и по аналогии с кодом выше, заходим в AppScript создаем файл и добавляем код, жмем иконку сохранения.

function formatPhoneNumbers() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var dataRange = sheet.getDataRange(); var values = dataRange.getValues(); for (var i = 0; i < values.length; i++) { for (var j = 0; j < values[i].length; j++) { var cell = values[i][j]; if (typeof cell === 'string' && cell.match(/^\d{11}(,\d{11})*$/)) { var formattedNumbers = cell.split(',').join('\n'); sheet.getRange(i + 1, j + 1).setValue(formattedNumbers); } } } }

Также испортируем скрипт через меню как было описано выше и запускаем его, после чего смотрим что у нас в итоге получилось

<i>Скрипт отлично справился</i>
Скрипт отлично справился

Отлично, теперь все номера разделены переносами строк, запятые убраны, давайте теперь отцентрируем текст

<i>Получилось что надо</i>
Получилось что надо

Теперь остается только пару финальных штрихов, а именно

  • Вытащить номера из ячейки и вставить так чтобы каждый номер был в своей отдельной ячейке а не строке. Сейчас например в ячейке 32 они размещены переносом строк, для сервиса обзвона так не пройдет тк он будет обращаться к каждой ячейке и видеть там больше 1 номера плюс переносы строк, ему это явно не понравится
  • Удалить дубликаты, чтобы не тратить лишние деньги на повторные звонки

ШАГ 5 - Делаем каждый номер в свою ячейку и удаляем дубликаты номеров

Это делается максимально просто, копируем весь столбец и вставляем все номера в любой сервис чистки дубликатов, мы использовали сервис ibox.tools но таких аналогов масса

<i>Всего было найдено 10 дублей и удалено</i>
Всего было найдено 10 дублей и удалено

Далее копируем все номера и вставляем обратно в таблицу, заранее создав отдельный лист с новым названием, а также заранее добавим 5000 пустых строк ниже, до 20 тысяч, тк теперь строк стало больше, в итоге у нас получился готовый лист с чистыми номерами.

<i>Вот этот документ уже можно выгружать клиенту в XLS</i>
Вот этот документ уже можно выгружать клиенту в XLS

Готово! Задача, которую вы делали бы всем отделом маркетинга неделю мы сделали всего за час. Этот файл был загружен в zvonobot заказчиком и в тот же день, была запущена рассылка - автообзвон роботом по базе.
Ниже оставляю полезные ссылки, которые вам пригодятся.
1. Нейросеть которую мы используем: ask.chadgpt.ru

2. Сервис удаления дубликатов ibox.tools

3. Где можно купить базу данных, которую мы чистили

Иван Тищенко
Основатель teamassist.ru

Если вы ищите помощника для аналогичных или других задач, напишите нам в 👉 телеграм и расскажите что нужно сделать

Кстати мы запускаем обучение для ассистентов, если вы хотите научиться работать с нейросетями, выстраивать коммуникацию с предпринимателями и зарабатывать на этом, также пишите в телеграм за подробностями.
И на последок, наши кейсы можно найти у нас на канале
Наш сайт teamassist.ru

До скорого!

7 комментариев

Ура, автообзвон.
Ура, антимонопольная служба советует также указывать клиентов, которые это успешно применяют по Ст. 18 ФЗ №38-ФЗ

Все равно будут пользоваться) кто бы что ни говорил.

Дедушка мороз, хочу, чтоб всем таким Заказчикам, которые покупают базы данных, сливают номера - услышал мои мольбы и пришёл ФАС, штрафанул от 500к

Реально достали. Недавно я интересовалась регистрацией товарных знаков. Сегодня утром звонок
- Подскажите, вам актуальны наши услуги ла-ла?
- Да, а напомните, где мы с вами общались ранее? Может я заявку оставляла и писала вам в вотсап?
- Нет, я вот вам первый раз звоню, компания X
- Параллельно гуглю, сайт компании X виду первый раз. Так отлично, а откуда узнали что я интересуюсь услугами и где номер взяли?
- Ой, не подскажу. Мне маркетолог всё даёт, говорит заявки
- Бросаю трубку, а мне в догонку ещё в вотсап рекламу шлют, мол лишним не будет цены сравнить

Ну ну, давайте, парсьте и обрабатывайте данные дальше. Я уже получила выписку о звонке от оператора, подаю в ФАС заявление. Занимательно, что на юристом. Ну юрист юристу рознь...

Ничего, подожду месяцок. Зато чтоб административное наказание выставили и больше ручки к холодным базам не тянулись. Как будет успех - обязательно напишу статью, кто не глупый - вынесет урок. Но сказочное бали уже за все пределы 🤔

Мне тоже постоянно звонят, кладу трубку и не рефлексирую на этот счет, надо проще относиться к жизни