У меня есть проекты, на который я привлекаю инвестиции. Потому что эти инвестиции помогут проектам масштабироваться, привлечь больше юзеров, выполнять задачи большего масштаба и тд и тп - в общем все, что будет приносить этим проектам больше денег. Соответственно, инвесторы с этого получат хороший процент прибыли.
Я автоматизировал почти всю цепочку действий по фандрейзингу: сбор инвесторов из источников, отбор, отправку им сообщений через свою CRM, отслеживание ответов и вывод на звонок.
Чуть ниже описываю, как делал и какие цифры получились. Ну и где не получилось так, как мне бы хотелось.
Из чего складывается воронка
У меня пять ступеней, и на каждой стоит свой счётчик:
1.источники инвесторов
2.единая база + граф связей
3.скоринг и шорт-лист
4.отправка через CRM (лимиты, пауза, проверка доставки)
5.ответ → ссылка на звонок → звонок
На каждую ступень я ставлю счетчики. Просто иначе я не знаю, где теряю людей.
Откуда брать инвесторов
Первый источник у меня был свой. За несколько лет накопились таблицы Airtable с фондами, ангелами, экспертами и раундами. В свое время я много парсил в том числе из линкедин, раньше там было меньше мусора и данные собирались точно.
Второй источник это архив раундов: кто в какой проект заходил и с кем вместе. Фонды в архиве записаны текстом, поэтому я склеивал их с базой по нормализованному названию. По состоянию на сентябрь 2026 у меня получилось 49 056 совпадений с уже известными фондами и 1 761 новый фонд.
Третий источник это мои переписки в Telegram. По ним видно, с кем из мира фондов я уже знаком.
Почему я строил граф
Я отказался от того, чтобы делать просто списки. Список фондов отвечает на вопрос «кому писать». Мне важнее был вопрос через кого в этот фонд можно быть представленным.
Поэтому моя база стала графом. В нём 118 222 узла (фонды, люди, проекты, раунды) и 239 670 связей. Надёжными я считаю связи, подтверждённые раундом с датой, публичным анонсом или другим проверенным мной источником, - таких 60 388.
Стартовые точки графа это люди, с которыми я уже знаком. Кандидатов по совпадению имени было больше, но имена совпадают у разных людей, поэтому каждое такое совпадение в свое время я перепроверял вручную - подтвердилось 3 564.
Я беру фонды, где соинвесторов менее 100, так как иначе это не фонд, а сообщество инвесторов.
from collections import deque HUB_DEG = 100 # фонд с сотней соинвесторов не даёт тёплого интро def intro_paths(graph, warm_starts, target, max_hops=3): queue = deque([(s, [s]) for s in warm_starts]) seen = set(warm_starts) while queue: node, path = queue.popleft() if node == target: yield path continue if len(path) > max_hops: continue for nxt in graph[node]: if nxt in seen: continue # хаб можно сделать целью, но идти через него нельзя if len(graph[nxt]) > HUB_DEG and nxt != target: continue seen.add(nxt) queue.append((nxt, path + [nxt]))
Константа HUB_DEG появилась у меня позже, когда я стал видеть в данных, что у фондов бывает более 1К соинвесторов. Если не ставить ограничения, то логика была бы просить, чтобы меня представил фонду каждый из этих 1К+ соинвесторов, а, как правило, большинство из них не имеют близкой связи с фондом, и не могут сделать теплое интро. Когда соинвесторов меньше, у них теснее связи друг с другом.
На самом деле, количество можно уменьшать и до 50, но я не стал сильнее сокращать воронку.
Как выбрать, кому писать
Мой выбор строится на основании скоринга, который считается запросом к базе (модель тут не нужна):
SELECT p.id, p.name, p.handle, ( 3 * (p.role LIKE '%partner%' OR p.role LIKE '%angel%') + 2 * (p.bio LIKE '%pre-seed%' OR p.bio LIKE '%seed%') + 2 * (p.focus LIKE '%AI%' OR p.focus LIKE '%infra%') + 1 * (p.last_contact > date('now','-365 day')) ) AS fit FROM people p WHERE p.kind = 'investor' AND p.id NOT IN (SELECT person_id FROM pitched) ORDER BY fit DESC LIMIT 50;
Первая версия скоринга считала слова по всей карточке человека, результат давала нерелевантный, тк в карточке лежат и мои собственные сообщения, а в них есть «seed», «AI» и «invest». Получилось, что наверх поднимались не подходящие инвесторы, а те, кому я больше всего писал. Это неправильно, мне надо было сразу это учесть. Исправил, чтобы скоринг учитывал только профиль самого человека: роль, компанию, описание, фокус.
Как отправлять сообщения и не получить бан
Отправку делает моя CRM, которая знает только ограничения канала:
def send_pitch(person, text): if not budget.can_send(account): # общий лимит на аккаунт в день return "LIMIT_REACHED" if already_pitched(person): # журнал отправленных return "DUPLICATE" live = resolve_username(person.handle) if live.name_mismatch(person.name): # хендл ведёт на другого человека return "IDENTITY_MISMATCH" result = send_with_jitter(text, pause=(40, 110)) # FloodWait → ждать и повторить log(person, "SENT" if result.message_id else "ATTEMPT")
Лимит у меня 5 холодных сообщений (то есть первых сообщений тем людям, с которыми у меня нет переписки) в день на аккаунт. У меня стоит проверка имени лида, тк иначе есть риск, что лиды получили бы письмо с чужим именем в первой строке.
Сколько ответили
У меня достаточно высокая конверсия: 12% ответов на холодный питч. Надо учитывать, что я много внимания уделял формулировкам текста, делал A/B тесты и уже знаю, как лучше привлечь внимание к своим сообщениям.
Какая база дала точные контакты
Самые хорошие результаты ожидаемо дает мой нетворк, те лиды, которых я сам копил в свою CRM почти 10 лет. По хендлу Telegram из моих собственных переписок - очень высокая точность.
С email из купленных и открытых датасетов всё намного хуже, много писем возвращаются с формулировкой “адресат не найден”. Да и к email-рассылке я сам отношусь плохо.
Но эти данные мне помогают устанавливать связи и предполагать, кто с кем знаком и кто к кому может в дальнейшем меня представить.
Я также различаю статусы при отправке сообщений, тк часто отправка прошла, а доставки не было.
ATTEMPT → система попробовала отправить SENT → почтовый сервер принял DELIVERED → за сутки не пришёл отказ (bounce)
Ответ ждём только от DELIVERED. Фоллоуап на SENT без DELIVERED не планируется.
Где автоматизация не пошла нормально
Я неправильно вел журнал отправленных. Теперь сделал так, чтобы волна записывалась в журнал сразу после отправки, а перед следующей отправкой каждая переписка перечитывалась.
У меня были наложения действий. То есть лиду писалось сообщение с просьбой посмотреть питч. И другим процессом питчился поверх - новый проект.
Неверно проставлялись статусы. Я писал об этом в предыдущей своей статье про CRM - тут тоже самое. Если лиду я когда-то писал - у него проставлялся статус NEW и этот статус сохранялся за ним, даже когда я возвращался к нему позже и у нас с ним уже была история диалога.
Конечно были лиды, которые меня сразу банили.
Но тем не менее
Итого
Если собрать всю систему в одну картинку:
База пополняется сама, каждый день. У меня есть агент, который держит нетворк в актуальном состоянии. Каждый день часть лидов, независимо от того, насколько давно я с ними знаком, получает автоматическое сообщение вида «чем я могу быть тебе сейчас полезен». Если лиду нужен человек, который есть у меня в базе - и оба согласны - агент делает между ними интро. У меня это называется matchmaking, что-то вроде клуба знакомств по интересам. В ответ я прошу человека, которого свёл, познакомить меня с тем, кто нужен мне или может быть мне полезен. Такие обратные интро приходят каждый день и расширяют базу без моего участия в переписке. Всего таким образом было создано 5 928 групп между людьми, которых я представил друг другу. Лиды сами потом взаимодействуют друг с другом. Кто-то более успешно, кто-то менее.

Публичные источники парсятся непрерывно. Отдельно у меня постоянно пополняются базы из открытых источников - Pitchbook, AngelList, Signal и похожих.
Фильтрация, скоринг и рассылка делаются автоматически. Лиды фильтруются и скорятся так, как описано выше. Рассылки уходят с учётом температуры общения, предмета разговора и того, чем мы можем быть друг другу полезны.
Звонки сами попадают в календарь. Если лид готов - звонок автоматически планируется и ставится мне в календарь.
Когда живой разговор состоялся, дальше идут автоматизированные фоллоуапы, отправка обещанных материалов, доотправка данных, которые нужны инвестору по проекту. Агент подключает меня только в двух случаях: когда ответа на вопрос нет в его базе, или - чаще - когда разговор доходит до конкретных денег.
Что я буду менять
Буду делать живой дашборд учета конверсий и буду масштабировать только те шаги, которые в моменте дают результат. То есть если мне на проекты дают деньги лиды с определенной конференции, значит я в момент, когда дашборд показывает мне эту конверсию, уменьшаю действия по питчингу других лидов и отправляю сообщения и питчи в первую очередь только лидам, с кем были касания именно на этой конференции.