Задача
Нужно было собрать рынок между двумя сторонами, которые по отдельности друг друга не находят: малым бизнесом с кассовым разрывом и частными инвесторами, готовыми дать деньги под короткий процент.
Счета должны попадать на площадку без ручного ввода — малый бизнес не станет перебивать реквизиты, и после первого раза просто не вернётся. Инвестор должен видеть риск до того, как поставит деньги: не «компания хорошая», а рейтинг, лимит, платёжная дисциплина, состояние дебиторки. Торги должны идти часами, а не днями, и закрываться несколькими участниками сразу. Деньги не должны проходить мимо контроля площадки. Продавца нужно проверить как личность: уступка права требования — юридический акт. И всё это в шести валютах, по британскому регулированию.
Решение
Синхронизация с бухгалтерией. Самый объёмный блок работ: подключения к ClearBooks, FreshBooks, KashFlow, QuickBooks, Sage, Xero, Exact, FreeAgent и Reeleezee плюс ручная загрузка для остальных. Пользователь выбирает систему из плитки логотипов, авторизуется на её стороне и через несколько минут видит свои счета на площадке. У каждой системы своя модель счёта, свои коды валют, налогов и статусов — всё приводится к единой внутренней модели. Синхронизация повторяемая, а не разовая: новые счета подхватываются, изменённые обновляются, оплаченные закрываются, дубли не появляются. У одной из систем политика запрещает автоматическое подтверждение счетов, и её пользователи идут по отдельной ветке логики.
Обратный аукцион. До старта счёт проходит проверки: возраст, лимит на продавца, рейтинг и страховое покрытие должника, подтверждённое право уступки. Инвесторы видят карточку с суммой, сроком, рейтингом должника и страховкой и ставят предложения — какую часть суммы готовы дать и под какую ставку. Предложение бывает «только целиком» или «частями»: второе позволяет закрывать крупные счета вскладчину. Аукцион идёт на понижение, перебитые инвесторы видят это и могут улучшить условия.
Комбинация предложений. Продавец не обязан брать одно предложение. Счёт на 21 600 фунтов закрывается, например, четырьмя инвесторами: восемь тысяч под 3,90%, шесть с половиной под 4,05%, четыре двести под 4,20% и две девятьсот под 4,45%. Отмечая предложения, продавец сразу видит собранную долю, взвешенную среднюю ставку, проценты инвесторам за срок, комиссию площадки, страховую премию и сумму, которая придёт на счёт сегодня. Можно закрыть сделку досрочно или дать аукциону доработать; невыбранные предложения остаются живыми до конца торгов.
Робот инвестора. Аукционы идут постоянно, и сидеть в интерфейсе инвестору неудобно. Робот ставит и корректирует предложения сам внутри заданных границ: максимум на один счёт, максимум на одного должника, минимальная ставка, максимальный срок, минимальный рейтинг должника, обязательность страховки, валюты, шаг снижения при перебитой ставке и неснижаемый остаток свободных денег. Ручная ставка всегда имеет приоритет, а лента активности показывает, где робот поставил, где повысил и почему пропустил счёт.
Скоринг. Анализ компании собирается из трёх источников: госреестры, кредитные агентства и бухгалтерия продавца, полученная синхронизацией. Поверх строятся тренды и прогнозы — денежный поток по месяцам, старение дебиторки, доля счетов, пригодных для финансирования. Прогнозная часть и скоринговая модель — это Python-слой проекта. Из скоринга выводится кредитный лимит продавца, который пересчитывается ночью. Отдельно считается концентрация дебиторки: если восемьдесят процентов выручки приходится на одного покупателя, риск принципиально другой, даже когда остальные показатели в норме.
Верификация по NFC. iOS-приложение решает одну задачу — подтвердить, что счёт продаёт тот, кто имеет на это право. Компания сопоставляется с записью в госреестре, человек — с должностью директора, затем телефон читает чип паспорта по NFC, проверяет подпись чипа и сверяет фотографию из чипа с селфи. Дальше — подтверждение условий уступки по конкретному счёту и подпись пальцем с фиксацией времени и места. Только после этого счёт уходит в аукцион. Если чип не читается, остаётся ручной путь, но он идёт на проверку человеком.
Деньги. Должник платит не продавцу, а на счёт факторинговой компании; поступление сопоставляется со сделкой по референсу, нераспознанные платежи уходят оператору в отдельную очередь. По сделке считается разбивка: возврат основной суммы каждому инвестору по его доле, проценты по его ставке за фактический срок, комиссия, страховая премия, остаток продавцу. Если у инвестора не пройдена проверка, его доля становится на удержание, а не улетает вместе с пакетом выплат. Сверху работает фонд внешних инвесторов на двух моделях — фиксированный годовой процент и доля дохода от факторинга.
Граничные случаи. Счёт, уже профинансированный в другом месте. Аукцион, собравший часть суммы. Должник, заплативший напрямую продавцу. Частичная оплата, которая распределяется пропорционально долям инвесторов. Смена платёжных реквизитов после подтверждённой сделки — классический признак мошенничества, вызывающий повторную проверку и удержание выплат. Протухший токен бухгалтерской системы, из-за которого синхронизация встаёт тихо. Валютная сделка, где курс фиксируется на момент закрытия аукциона.
Результат
Продавец получает деньги в день торгов и по ставке, которую не дал бы ему ни один участник в одиночку. Инвестор видит риск в цифрах и работает роботом, а не вручную. Площадка держит деньги под контролем: платёж приходит на её счёт, распределение считается по долям и ставкам, а собственный фонд закрывает счета, на которые не хватило частных инвесторов.
На интерфейсе площадки стоял знак отличия Европейской комиссии — его получил сам проект.