← На главную

1,2 млн сообщений из соцсетей через Claude Opus — получил CRM дружбы

27.05.2026 23:31 · hackernews

В 2014 году Тим Урбан из WaitButWhy опубликовал那张 знаменитую сетку «Твоя жизнь в неделях» — каждый квадратик одна неделя, и почти вся сетка уже закрашена. Эта картинка годами не давала покоя автору, и он начал собирать данные о своей жизни. Но биометрия и даты переездов не показывали главного — как ему на самом деле было в эти недели с близкими людьми.

Он попробовал вести дневник: сначала бумажный, потом текстовые файлы, заметки в Obsidian. Дневник фиксировал то, что казалось важным в момент записи, — и упускал разговоры, которые забыл записать, и медленные паттерны, невидимые в моменте. Тогда автор решил построить личную CRM на основе цифрового следа: архивов из ICQ, IRC, DC++ (нулевые), VK, Twitter, Facebook (2010-е), Instagram и Telegram.

С помощью GDPR он выкачал архивы переписок, распарсил JSON и HTML (Instagram, кстати, двойным кодированием ломает кириллицу через latin-1), и получил около 1,2 миллиона сообщений за десять лет. Очистка от шума оказалась нетривиальной: в длиннейшей переписке с партнёром (486 000 сообщений) 41% — шум: ссылки, медиа, эмодзи, слова-паразиты. Отфильтровать короткие фразы вроде «he died» нельзя — они важны. Пришлось вручную собирать денлист и защищённый набор для жизненных событий.

Дальше встала проблема имён: один и тот же Александр может быть Al, Alex, Xander, Sandy, Alec(k) или Sasha, а Sasha в славянских языках ещё и гендерно-нейтральное. Классические NER-модели и эвристики не справлялись с тысячами имён в групповых чатах. То же с классификацией событий: «I moved» маме — переезд, друзьям — дизайн интерьера, после расставания — эмоциональная веха.

Автор перепробовал keyword matching, BERT и в итоге остановился на LLM. Он прогнал 200+ сессий (около 15-20 миллиардов токенов) на Claude Opus — вышло ~$15k. Альтернатива: локальный Qwen3-30B-A3B на M5 Pro — 10-15 недель непрерывного инференса. LLM не пишет напрямую в хранилище, а выдаёт структурированный JSON: bullet-заметки с датами и тональностью, факты о людях, события, места. Всё детерминированное (парсинг, фильтрация, дедупликация) остаётся в Python с SQLite provenance store — можно откатить любую плохую сессию.

Для анализа тональности автор сначала попросил LLM размечать каждый «conversation-day» свободным текстом — получил 5700+ уникальных значений вроде «WWDC-binge-mode». Пришлось переделывать на 18 тегов с тремя направленными префиксами (моё состояние, собеседника и взаимное). Выяснилось, что 66% дней — «M:warm», но 12,9% разговоров каждый месяц — чисто транзакционные, а в марте (налоговый год UK) — 17%.

Данные выявили неочевидные паттерны. Дружба не умирает, когда падает количество сообщений — она может перейти в редкие, но длинные диалоги. Словарный запас с некоторыми друзьями разошёлся с 69,5% общих топ-слов до 8,7% — они просто перестали говорить об одном и том же. Автор проверил теорию Эммы Пирсон о том, что в зрелых отношениях меньше вопросов: с партнёром вопросы действительно упали с 8,8% до 8,3%, но с мамой и близким другом, наоборот, выросли — когда видишься редко, больше спрашиваешь.

Круги Данбара тоже легли на данные: ближний круг и активная сеть сужаются с годами, но общее количество «conversation-days» в год остаётся ~360 — автор просто перераспределяет одни и те же дни между меньшим числом людей. В поездках все разговоры становятся теплее (69,8% «M:warm» против 65,9% дома) и менее транзакционными (9,3% против 13,2%).

Автор выяснил, что он — «советчик», а не только «поддерживающий друг»: mentoring (50 асимметричных дней) почти догоняет supportive (59). Когда на часах был полуночный пик сообщений, в его жизни было ~300 активных контактов; когда перешёл на дневной график — осталось ~60.

В итоге всё поместилось в 70 МБ — меньше одного iPhone photo burst. Сетка Урбана больше не пустая: вместо «переехал в Лондон» там «первое сообщение от человека, ставшего лучшим другом» и «ночь, когда групповой чат не давал уснуть». Жизнь не была пустой — просто память была избирательной. Автор не стал лучше общаться — но теперь знает, как выглядит со стороны. Чтобы ответить на вопрос «плохой ли я друг?», понадобилось не 400 человек, а всего десять.

«Я сделал всё это, чтобы помнить дни рождения друзей. Представьте, что бы я сделал с вашей кодовой базой».

Читать оригинал →