AAYMA
RU
Войти

Граф денег (MoneyGraph)

AML-инструмент, который по графу переводов 2 248 клиентов назначает роли с числовым обоснованием, выделяет 72 кластера и строит очередь проверки.

Доведённый продукт
Команда «A-lN» 12💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: A-lN
Кейс HackAlem.ai: Финансы — Freedom
Стадия: Доведённый продукт

Задача кейса: «Граф денег»: восстановить структуру организованной группы по сети транзакций (AML)

Суть

AML-инструмент, который по графу переводов 2 248 клиентов назначает роли с числовым обоснованием, выделяет 72 кластера и строит очередь проверки. Интерфейс — офлайн-экран на sigma.js и AI-ассистент.

Как устроено

Команда uv run moneygraph за ~10 секунд проходит путь от трёх Parquet-файлов до выгрузок: проверки, граф, метрики потоков, связей и времени. Роли назначаются правилами с порогами из config.py (с колонками rule_fired и evidence), а отдельное правило учитывает обрыв обхода на 4-м колене. Кластеры строятся Louvain, приоритет складывается из пяти прозрачных слагаемых. Дополнительно выгружаются маршруты, циклы, устойчивость сети и 380 рекомендованных запросов данных. AI-ассистент работает через OpenAI tool-calling поверх рассчитанного графа и ссылается на конкретные gid.

Ключевые решения

  • Louvain
  • rule-based roles with thresholds
  • betweenness
  • AML typologies (funnel, pass-through, fan-out, rapid movement)
  • resilience analysis
  • OpenAI tool-calling
  • sigma.js WebGL
  • igraph layout
  • vis-network

Метрики

72 кластера; роли: 17 координаторов, 85 консолидаторов, 44 распределителя, 419 транзитов, 978 конечных, 705 периферия; изъятие топ-50 отрезает 74% оборота от seed против 5% при случайном; 17 из топ-20 не входят в исходные seed

Особенности

Качество приоритета проверено экспериментом: удаление топ-50 узлов отрезает 74% оборота, удаление 50 случайных — 5%. К ролям добавлены стандартные AML-типологии, ловушки данных (обрыв на 4-м колене, заниженные входящие у seed) учтены явно. Есть выгрузка рекомендованных запросов данных и презентация на 16 слайдов.

Стек

Python 3.12 · uv · pandas · NetworkX/igraph · sigma.js · HTML · pytest

Модели

OpenAI


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-7ab49ed7-a-ln.

README

README.md

Граф денег — HackAlem AI (команда A-lN)

Инструмент для AML-аналитика. Он восстанавливает структуру финансовой сети по графу банковских переводов и отвечает на главный вопрос кейса: «кого из 2 248 клиентов проверять первым и почему».

Полный пересчёт на ноутбуке занимает около 10 секунд одной командой. Технические подробности (формулы, алгоритмы, схемы данных, проверка качества) вынесены в TECH_DETAILS.md. Этот файл описывает проект целиком без погружения в них.


1. Что требовалось

Проблема

AML-аналитик банка получает от правоохранительных органов список из 81 клиента, связанных с незаконным оборотом наркотиков. Это нижний уровень цепочки, «курьеры». Кто собирает их деньги, через кого их прогоняют и кто ими распоряжается, приходится восстанавливать вручную: на один узел уходят часы, большая часть сети остаётся невидимой, а решение, кого проверять первым, принимается интуитивно.

Данные

Банк выгрузил исходящие переводы этих 81 клиента (seed) и дальше по цепочке на 4 колена: кому они платили, кому платили те и так далее.

Периодиюль 2026
Переводытолько внутрибанковские, от 5 000 ₸
Объём2 248 клиентов, 3 119 связей «плательщик → получатель», 4 840 переводов, 365,9 млн ₸
Атрибуты клиентовнет: данные обезличены, есть только структура переводов и суммы
Файлы3 parquet в data/ (nodes, edges, transactions)

Что нужно было построить

Инструмент, который по графу:

  1. присваивает каждому из 2 248 узлов роль, уверенность в ней (0–1) и понятное обоснование с числами (например, «получает от 11 разных плательщиков, отдаёт дальше 3% полученного»). Роли из словаря ТЗ:

    РольСмысл
    консолидатораккумулирует средства от нескольких участников
    транзитпропускает деньги дальше, не удерживая
    распределительвеерно раздаёт средства многим получателям
    конечный получательденьги приходят и остаются
    координаторкоординирующий узел, кандидат в организаторы
    периферияпризнаков роли не выявлено
  2. разбивает сеть на кластеры и выдвигает гипотезу о назначении каждого;

  3. ранжирует узлы по приоритету проверки (топ-лист не короче 20 узлов с обоснованием);

  4. показывает схему сети: направление потоков, подсветка ролей и кластеров, поиск по gid.

Обязательные требования и ограничения

  • Воспроизводимость: одна команда от сырых parquet до трёх выгрузок, не дольше 5 минут, локально.
  • Выгрузки фиксированной схемы, которую жюри проверяет механически: nodes_roles.csv (ровно 2 248 строк), clusters.csv, top_nodes.csv.
  • Объяснимость: жюри называет любой gid, и команда за минуту объясняет его роль по своим метрикам. «Чёрный ящик» не засчитывается.
  • Нельзя захардкодить ответы, обогащать данные внешними источниками или требовать облако, GPU или платные сервисы.
  • Выводы формулируются как гипотезы для проверки («признаки консолидации»), а не как утверждения о виновности.
  • Организаторы заранее назвали ловушки данных: обрыв обхода на 4-м колене, заниженные входящие у seed, разница между суммой и числом переводов, направленность графа.

2. Что мы сделали

flowchart LR
    A["Данные<br/>3 parquet"] --> B["Проверки<br/>и граф"]
    B --> C["Метрики узлов<br/>потоки, связи, время"]
    C --> D["Роли<br/>правила с порогами"]
    C --> E["Кластеры<br/>Louvain"]
    D & E --> F["Приоритет<br/>прозрачная формула"]
    F --> G["Выгрузки<br/>3 CSV + доп. файлы"]
    G --> H["Интерфейс<br/>экран · AI-ассистент · карточка"]

Слайд со схемой: docs/solution_diagram.svg. Презентация результатов — docs/presentation/graph_money.pdf (и .pptx рядом).

Коротко:

  • Роли назначаются формальными правилами с порогами, без обучаемой модели. У каждого узла записано, какое правило сработало (rule_fired), и есть обоснование с числами (evidence).
  • Ловушки данных учтены явно. Узлы 4-го колена никогда не называются «конечными» без оговорки, входящий баланс seed не используется для решений, сумма и число переводов учитываются вместе.
  • Приоритет — сумма пяти понятных слагаемых: роль, оборот, центральность, связь с seed, подозрительные сигналы. Каждое слагаемое видно отдельно.
  • Экран просмотра — один HTML-файл без интернета: вся сеть сразу, очередь проверки, карточка клиента, подсветка цепочек «откуда пришли / куда ушли деньги».
  • AI-ассистент отвечает на вопросы аналитика по графу. Он опирается только на наши расчёты и ссылается на конкретные gid.
  • Сверх обязательного: временные паттерны, повторяющиеся маршруты и циклы, аномалии, оценка устойчивости сети, список данных, которые стоит запросить дальше.

3. Как запустить

Нужен только uv: Python 3.12 и все зависимости он поставит сам. Установка одной командой — ./install.sh (Linux, macOS); подробная инструкция для любой ОС, включая Windows, и решение типичных проблем — в INSTALL.md.

uv sync                  # один раз: окружение и зависимости
uv run moneygraph        # полный пересчёт: data/*.parquet → out/  (~10 секунд)
ЧтоКоманда
Экран просмотраоткрыть out/viewer.html двойным кликом (работает офлайн)
Экран + AI-ассистентuv run moneygraph serve → http://127.0.0.1:8765
Карточка узла в терминалеuv run moneygraph explain 8165763100 (полный gid или его последние цифры)
Проверка выгрузокuv run pytest

Для AI-ассистента скопируйте .env.example в .env и впишите OPENAI_API_KEY. Файл .env в репозиторий не попадает. Без ключа всё остальное работает, а ассистент просто показывает карточки узлов.


4. Что получается на выходе

Все файлы пишутся в out/ и лежат в репозитории, поэтому результат можно посмотреть без запуска.

ФайлЧто внутри
nodes_roles.csvвсе 2 248 узлов: роль, уверенность, кластер, приоритет, обоснование с числами, а также типология AML, сработавшее правило и метрики
clusters.csv72 кластера: размер, число seed, оборот внутри кластера, главные узлы, гипотеза о назначении
top_nodes.csvтоп-50 узлов по приоритету с развёрнутым объяснением «почему»
viewer.htmlэкран просмотра сети
data_requests.csvкакие данные и по каким узлам запросить дальше (380 запросов)
routes.csv, cycles.csvустойчивые маршруты A→B→C и возвратные потоки
resilience.csvчто будет с сетью, если изъять ключевые узлы

Главные результаты

РольУзлов
Координатор17
Консолидатор85
Распределитель44
Транзит419
Конечный получатель978
Периферия705
  • 17 из топ-20 приоритетных узлов — новые, их не было в исходном списке из 81 клиента. Это ровно то, что нужно аналитику: инструмент смещает фокус с «курьеров» на точки сбора и управления.
  • Сеть делится на 72 кластера. В 9 из них больше одного seed: это группы, где сходятся деньги нескольких известных участников.
  • Если изъять 50 самых приоритетных узлов, от seed отрезается 74% оборота. Изъятие 50 случайных отрезает 5%. Значит, приоритет действительно находит несущие узлы сети.

Пример — топ-1 узел 100000008165763100, консолидатор:

Получает от 15 плательщиков: 1,17 млн ₸, 26 переводов (в среднем 45 тыс ₸); seed среди плательщиков: 1; дальше ушло 109% полученного 17 получателям; 4 плательщика за один день (12.07)


5. Как определяются роли

Правила проверяются сверху вниз: роль узла определяет первое сработавшее правило. Все пороги собраны в одном файле src/moneygraph/config.py.

РольТипология AMLПравилоПочему так
Координатор—собирает от ≥8 и раздаёт ≥20 разным клиентам; или платит ≥3 разным seed; или служит мостом между ≥4 кластерами с seed (топ-1% по посредничеству)узел, который управляет потоками: и собирает, и раздаёт, «кормит» известных участников или связывает подгруппы
Распределительfan-out payouts≥10 получателей, и получателей минимум втрое больше, чем плательщиковвеерная раздача: выплаты участникам или обналичивание
Консолидаторfunnel account (воронка)≥4 разных плательщика или ≥2 seed среди плательщиковточка сбора денег от нескольких участников; отвечает на вопрос ТЗ «кто собирает деньги нескольких seed»
Транзитpass-through / money mule layeringденьги приходят и уходят дальше: отправлено не меньше половины полученного или ≥80% ушло в течение 2 днейсчёт, через который деньги прогоняют
Конечный получатель—дальше ушло не больше 10%, сумма заметная (≥30 тыс ₸ или ≥2 перевода), исходящие известны полностьюденьги осели
Периферия—всё остальное: разовый мелкий перевод, смешанный профиль, клиенты без данныхпризнаков роли нет

Типологии — общепринятые в AML названия схем. Они записаны в колонке typology рядом с ролью. Колонка role сохраняет значения из словаря ТЗ, потому что жюри проверяет их механически. Если ≥80% полученного ушло дальше в течение 2 дней, к типологии добавляется rapid movement of funds (независимо от роли).

Для узлов 4-го колена, у которых исходящие не выгружены, есть отдельное правило (см. раздел 6).

Уверенность (role_score) — насколько ярко выражены признаки роли; это не подозрительность и не приоритет. Она равна 0,5, когда узел ровно на пороге, и растёт до 1,0 при многократном превышении. Например, консолидатор с 4 плательщиками получает 0,5, с 15 и больше — 1,0.

Пороги подобраны по данным: ≥8 плательщиков есть у 0,8% узлов, ≥4 — у 4%, ≥10 получателей — у 2,8%. Окно «отправлено 80–120% полученного» даёт ровно 72 узла, как указано в ТЗ.


6. Особенности данных и как мы их учли

ОсобенностьЧто это значитКак учтено
Обрыв на 4-м коленеу 444 узлов 4-го колена исходящие просто не выгружались: «нет исходящих» здесь ≠ «деньги осели»Ни один такой узел не назван подтверждённым стоком. Роль ставится по поведению похожих узлов колен 1–3, у которых исходящие известны: из похожих дальше пересылают X% (обоснование пишет эту долю). Если X < 50%, узел — вероятный конечный получатель, иначе вероятный транзит. Узел попадает в список «запросить выписку».
Входящие видны не полностьювидно только, кто платил изнутри выборки. Это касается всех узлов, не только seed«Отдал больше, чем получил» не считаем аномалией и пишем в обосновании: «есть невидимые входящие». Входящий баланс seed ни в каком решении не участвует.
Сумма ≠ количествоодин перевод на 4 млн и 40 по 100 тыс. дают одинаковую сумму, но это разное поведениеПравила и обоснования используют и число контрагентов, и число переводов, и сумму, и средний перевод.
Граф направленныйнаправление движения денег — суть кейсаРоли и метрики считаются с учётом направления. Единственное исключение — кластеризация, она явно оговорена.
Обрыв по времени (найден нами)деньги, пришедшие 30–31 июля, могли уйти дальше в августеУверенность в роли «конечный получатель» у таких узлов снижена, узел попадает в запрос «операции за август».
Порог 5 000 ₸дробление ниже порога не видноСигналом дробления считаем повторяющиеся одинаковые суммы от разных плательщиков.
19 seed без переводовв выгрузке у них нет ни одной связиВыделены в отдельный кластер 0 с запросом наличных и межбанковских операций.

7. Приоритет проверки

Приоритет — число от 0 до 1, сумма пяти слагаемых:

СлагаемоеВесЧто означает
Роль35%насколько важна роль (координатор > консолидатор > распределитель > транзит > конечный > периферия) и насколько уверенно она определена
Оборот25%сколько денег прошло через узел по сравнению с остальными
Центральность20%насколько узел важен для связности сети
Связь с seed10%сколько известных участников среди его контрагентов
Сигналы10%rapid movement of funds (дальше за ≤2 дня), всплески, циклы, повторяющиеся маршруты и одинаковые суммы, аномалии

Для seed приоритет умножается на 0,9: эти клиенты уже известны, и инструмент должен поднимать новые узлы. Каждое слагаемое видно в выгрузке и в карточке узла, поэтому на вопрос «почему он выше» есть точный ответ. Проверка устойчивости: если изменить любой вес на ±20%, топ-20 почти не меняется (совпадение не ниже 85%).


8. Кластеры

Сеть разбивается на сообщества алгоритмом Louvain: это группы клиентов, которые переводят деньги в основном друг другу. Для кластеризации направление переводов не учитывается, это оговорено явно. Для каждого кластера указаны размер, число seed, оборот внутри и связи с другими кластерами, главные узлы, устойчивость (насколько кластер воспроизводится при повторных запусках) и гипотеза о назначении. Гипотеза складывается из ролей узлов кластера, например:

Признаки управляющего ядра: координатор …3684369100 (от 24 плательщиков, 62 получателей, 12,44 млн ₸); признаки funnel account (воронка): …8165763100 собирает от 15 плательщиков (1,17 млн ₸), в кластере 3 seed.


9. Экран просмотра и AI-ассистент

Экран (out/viewer.html) — один файл, работает без интернета:

  • вся сеть сразу: 2 248 клиентов и все 3 119 связей на одной схеме (WebGL, отрисовка без задержек). Цвет точки — роль, размер — приоритет, толщина связи — сумма, тёмное кольцо — seed, бледная точка — 4-е колено;
  • очередь проверки слева: топ-50 с ролью, типологией и приоритетом; при наведении клиент подсвечивается на схеме. Вкладка «Кластеры» — гипотезы кластеров, клик выделяет кластер на схеме;
  • выбор клиента приглушает остальную сеть и показывает его связи: входящие синим, исходящие оранжевым, на 1 или 2 шага. Кнопки «Откуда пришли деньги» и «Куда ушли деньги» подсвечивают цепочки на 4 шага и считают, сколько seed в них встречается;
  • карточка клиента: роль и уверенность, типология AML, обоснование, сработавшее правило, потоки, разложение приоритета, сигналы, кластер, плательщики и получатели с суммами и датами;
  • поиск по номеру или любым его цифрам (клавиша «/»). Все gid заканчиваются на …100, поэтому удобнее вводить 8–10 последних цифр;
  • фильтры: скрыть роль (клик по легенде), скрыть периферию, только топ-N и их связи, минимальная сумма перевода;
  • две оценки, которые не путаются: приоритет проверки показан местом в очереди и уровнем (высокий — №1–50, средний — №51–200, низкий — остальные), уверенность в роли — словами (сильно — от 0,8, умеренно — 0,6–0,8, слабо — ниже 0,6). Шкалы подписаны в карточке, легенде и «Методике»; числа 0–1 остаются в CSV и в разборе «почему такое место»;
  • страницы-объяснения — кнопки в шапке «Как считается приоритет», «Как считается уверенность» и «Методика». На них разобраны формулы на живых примерах из данных: вклад пяти слагаемых у №1 в очереди и у выбранного клиента, график уверенности консолидаторов, сколько клиентов на каждом уровне. Из карточки клиента туда ведут ссылки «как считается».

Ассистент (вкладка «AI-ассистент» справа; она мягко подсвечивается раз в несколько секунд, пока её не откроют). Вопросы о путях и источниках денег считаются прямо по графу, без сети: «откуда деньги у …», «куда ушли деньги …», «путь от … к …», «кто собирает деньги с …, …», «кластер N». Ответ сразу подсвечивается на схеме. При запуске через uv run moneygraph serve остальные вопросы разбирает языковая модель (OpenAI) по результатам расчёта: она отвечает со ссылками на конкретные gid и формулирует выводы как гипотезы. Подключить другую модель, например Claude, можно без переделки остального.

Карточка в терминале: uv run moneygraph explain <gid> — запасной вариант для демо.


10. Что сделано сверх обязательного

Возможность из списка ТЗРеализация
Учёт обрыва графаоценка «пересылает ли дальше» для 444 узлов 4-го колена, проверенная на известных коленах
Временные паттерныrapid movement of funds (пришло и ушло дальше за 1–2 дня), синхронные поступления от нескольких плательщиков в один день, веерная рассылка за день
Повторяющиеся маршруты и циклы478 устойчивых маршрутов A→B→C, 468 возвратных циклов
Детекция аномалийаномальный профиль относительно узлов того же колена, повторяющиеся одинаковые суммы
Оценка устойчивости сетиизъятие топ-N узлов в сравнении с изъятием N случайных
AI-ассистент аналитикавопросы на естественном языке, ответы по графу со ссылками на узлы
Автогенерация карточки узлана экране и в терминале
Оценка полнотыdata_requests.csv: что запросить, по какому узлу и почему

11. Демо-сценарий (5 минут)

  1. uv run moneygraph: живой пересчёт за ~10 секунд, проверка схемы ТЗ проходит.
  2. Экран, топ-1 …8165763100 — консолидатор: получает от 15 плательщиков 1,17 млн ₸, из них 4 заплатили в один день (12.07), и почти всё уходит дальше.
  3. …8603629100 — координатор: собирает от 19 плательщиков 1,82 млн ₸ и раздаёт 61 получателю 4,99 млн ₸.
  4. …5075949100 — 4-е колено: исходящие не выгружены. Получил 2,23 млн ₸ за 7 переводов, а похожие узлы в 57% случаев пересылают дальше, поэтому роль «вероятный транзит» с умеренной уверенностью и запрос выписки. Так решена главная ловушка данных.
  5. AI-ассистент: «кто собирает деньги от нескольких seed?» → ответ со ссылками на узлы.
  6. data_requests.csv: какие данные запросить следующими.

12. Ограничения

  • Видны только внутрибанковские переводы от 5 000 ₸ за июль 2026. Наличные, другие банки, мелкие суммы и август не видны.
  • Входящие известны частично, исходящие обрезаны на 4-м колене. Оценка для 4-го колена — слабый, хотя и честно измеренный сигнал.
  • Пороги и веса заданы экспертно и проверены на чувствительность. Размеченных ролей нет, поэтому качество оценивается обоснованностью, а не точностью.
  • Кластеризация не учитывает направление переводов.
  • Нет атрибутов клиентов: все выводы — гипотезы для проверки аналитиком.

13. Масштабирование до ~1 млн узлов

  • Хранение и признаки переходят на колоночные движки (DuckDB, Polars): суммы, степени и временные признаки считаются group-by-запросами за секунды.
  • Графовые алгоритмы переходят на igraph или graph-tool. Точное посредничество заменяется приближённым по выборке узлов, Louvain — на Leiden. Слабосвязные компоненты обрабатываются параллельно.
  • Пересчёт становится инкрементальным: новая выгрузка затрагивает только изменившиеся компоненты. Пороги задаются перцентилями, а не абсолютными числами.
  • Весь граф в браузере не рисуется: сервер отдаёт окрестность узла и сводки кластеров.
  • AI-ассистент работает через индексы базы, и в модель уходит только найденный подграф.

Подробнее — в TECH_DETAILS.md.


14. Структура репозитория

data/                исходные данные (3 parquet) и их описание
src/moneygraph/      код: загрузка, метрики, роли, кластеры, приоритет, выгрузки,
                     экран просмотра, AI-ассистент, CLI
out/                 готовые выгрузки и экран просмотра
docs/                слайд со схемой решения, контракт данных экрана
tests/               автоматическая проверка выгрузок
README.md            этот файл — всё, что нужно для понимания проекта
INSTALL.md           установка и запуск: скрипт, ручные шаги для любой ОС, частые проблемы
install.sh           установка одной командой (Linux, macOS)
docs/presentation/   презентация результатов: graph_money.pptx и graph_money.pdf
TECH_DETAILS.md      формулы, алгоритмы, схемы данных, проверки качества
Звёзды
⭐ 0
Форки
0
Язык
HTML
Последний push
в прошлом месяце
Коммиты
36
Авторы
3
Файлы
70
Ветки
5

Авторы коммитов

Alikhan 23yelnur-nazarbayev 9SpyLn 4

История коммитов

  • 2026-09-23 17:55Move presentation PDF to repo root as PRESENTATION_GRAPH_MONEY.pdf; link it at the top of READMEAlikhan
  • 2026-09-23 17:48Merge Alikhan-branch: final solution «Граф денег»Alikhan
  • 2026-09-23 17:46Results presentation (16 slides, RU): graph_money.pptx + .pdf with app screenshots, native charts and speaker notes; generator script; card confidence line tidiedAlikhan
  • 2026-09-23 17:44Clean main: remove all files except README.mdAlikhan
  • 2026-09-23 17:42Add files via uploadyelnur-nazarbayev
  • 2026-09-23 17:41Add files via uploadyelnur-nazarbayev
  • 2026-09-23 17:31Add install.sh (one-command setup: uv, Python 3.12, deps from uv.lock, .env, recompute, optional tests/serve) and INSTALL.md manual for Linux/macOS/Windows with troubleshootingAlikhan
  • 2026-09-23 17:28Viewer: AI assistant tab gets an 'ИИ' badge and a periodic glow until first opened (static outline with reduced motion)Alikhan
Все коммиты (36)
  • 2026-09-23 17:14Explanation pages in the viewer: how priority is calculated, how role confidence is calculated, methodology (header navigation + 'как считается' links); page texts generated from pipeline config, examAlikhan
  • 2026-09-23 16:56Queue and card: labelled role-strength pill (dots + word) instead of bare bars; typology spans the rowAlikhan
  • 2026-09-23 16:52Viewer, CLI card and assistant: priority shown as queue place + level (high/medium/low), role confidence in words (strong/moderate/weak) with visible scales; scales defined once in config and passed vAlikhan
  • 2026-09-23 16:37Add files via uploadyelnur-nazarbayev
  • 2026-09-23 15:58Viewer: cluster view shows money entering/leaving/inside the cluster in different colours, faded external partners, flow totals on the cluster card; focus bar reports how many highlighted clients filtAlikhan
  • 2026-09-23 15:50Delete run.pySpyLn
  • 2026-09-23 15:50Add files via uploadSpyLn
  • 2026-09-23 15:42Redesigned analyst workstation: full network in WebGL (sigma.js), review queue, clusters, client card, flow tracing, local graph queries + LLM assistant, methodology dialog, Golos Text; packed igraph Alikhan
  • 2026-09-23 15:32Add files via uploadyelnur-nazarbayev
  • 2026-09-23 15:13Add files via uploadSpyLn
  • 2026-09-23 15:13AML typology names: typology column (funnel account, pass-through / money mule layering, fan-out payouts, rapid movement of funds) in CSVs, why texts, cluster hypotheses, node card, assistant; docs upAlikhan
  • 2026-09-23 15:13Delete moneygraph.zipyelnur-nazarbayev
  • 2026-09-23 15:04Merge pull request #1 from BAITC-Hacks/Yelnuryelnur-nazarbayev
  • 2026-09-23 14:56Add files via uploadyelnur-nazarbayev
  • 2026-09-23 14:55Add files via uploadSpyLn
  • 2026-09-23 14:51Delete moneygraph.zipyelnur-nazarbayev
  • 2026-09-23 14:50Add files via uploadyelnur-nazarbayev
  • 2026-09-23 14:14Docs: self-contained README (task → solution → run → results → roles → traps → demo) and TECH_DETAILS.md with formulas, algorithms, schemas and parametersAlikhan
  • 2026-09-23 14:03README: AI assistant model selection noteAlikhan
  • 2026-09-23 14:02Offline network viewer (vis-network inlined): neighbourhood/full graph, gid search, node card, top-50, clusters, AI chat panel; packed community layout; 10-digit gid labels; reasoning_effort fallback Alikhan
  • 2026-09-23 13:57Solution diagram slide (data → metrics → roles → interface)Alikhan
  • 2026-09-23 13:56README (RU): run, role rules and thresholds, data traps, priority, clusters, extras, demo, limits, scaling; pytest schema checksAlikhan
  • 2026-09-23 13:53AI assistant (OpenAI tool-calling over graph), local server, node cards + explain CLI; tighter coordinator bridge rule, cleaner evidenceAlikhan
  • 2026-09-23 13:52Pipeline: features, truncation model, roles with evidence, clusters, priority; all 3 CSVs pass schema checksAlikhan
  • 2026-09-23 13:45Scaffold uv project, dataset, ported starter loader and CLIAlikhan
  • 2026-09-23 17:53Restore the first demo's graph look in "Сеть переводов"Alikhan Nassyrov
  • 2026-09-23 17:41Add MoneyGraph web product with one-click launchAlikhan Nassyrov
  • 2026-09-23 08:46ijijAlikhan
Структура репозитория (70 файлов)
.env.example
.gitignore
.python-version
INSTALL.md
README.md
TECH_DETAILS.md
data/README.md
data/edges.parquet
data/nodes.parquet
data/transactions.parquet
docs/graph_json.md
docs/presentation/build_deck.js
docs/presentation/graph_money.pdf
docs/presentation/graph_money.pptx
docs/presentation/img/01_overview.png
docs/presentation/img/01b_overview_clean.png
docs/presentation/img/02_top1.png
docs/presentation/img/03_trace_up.png
docs/presentation/img/04_hub.png
docs/presentation/img/05_cluster8.png
docs/presentation/img/06_trunc.png
docs/presentation/img/07_ai.png
docs/presentation/img/08_priority_page.png
docs/presentation/img/09_confidence_page.png
docs/presentation/img/hero_network.png
docs/solution_diagram.svg
install.sh
out/clusters.csv
out/cycles.csv
out/data_requests.csv
out/graph.json
out/metrics.json
out/nodes_roles.csv
out/p_forward_table.csv
out/resilience.csv
out/routes.csv
out/top_nodes.csv
out/viewer.html
pyproject.toml
src/moneygraph/__init__.py
src/moneygraph/assistant/__init__.py
src/moneygraph/assistant/agent.py
src/moneygraph/assistant/llm.py
src/moneygraph/assistant/tools.py
src/moneygraph/cards.py
src/moneygraph/cli.py
src/moneygraph/clusters.py
src/moneygraph/config.py
src/moneygraph/export.py
src/moneygraph/extras.py
src/moneygraph/features.py
src/moneygraph/load.py
src/moneygraph/pipeline.py
src/moneygraph/priority.py
src/moneygraph/roles.py
src/moneygraph/serve.py
src/moneygraph/temporal.py
src/moneygraph/validate.py
src/moneygraph/viewer.py
src/moneygraph/web/fonts/golos-cyrillic-400.woff2
src/moneygraph/web/fonts/golos-cyrillic-500.woff2
src/moneygraph/web/fonts/golos-cyrillic-600.woff2
src/moneygraph/web/fonts/golos-cyrillic-700.woff2
src/moneygraph/web/fonts/golos-latin-400.woff2
src/moneygraph/web/fonts/golos-latin-500.woff2
src/moneygraph/web/fonts/golos-latin-600.woff2
src/moneygraph/web/fonts/golos-latin-700.woff2
src/moneygraph/web/viewer_template.html
tests/test_outputs.py
uv.lock
Ветки (5)

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.