Идея от опытного предпринимателя
Начать придется с условностей и формальностей: мы подписали NDA и исправно его соблюдаем, поэтому не можем раскрыть имя заказчика и реальное название проекта. Договоримся называть его e-Signature project. С заказчиком мы работаем давно: вместе сделали уже несколько проектов. Вы можете помнить его по этому кейсу👇
Проект начался примерно 1,5 года назад. Заказчик пришел к нам с идеей сделать такой сервис, в который можно было бы загружать документы, указывать место для будущей подписи и отправлять документ на почту подписанту. Конечно, без «визирования» такая подпись недействительна,поэтому нам предстояло решить вопрос с легитимизацией этого процесса.
Мы знали заказчика, заказчик — нас. Без долгих вступлений мы приступили к работе.
Почему копировать конкурента выгодно
В качестве основного референса мы ориентировались на HelloSign. Основной отстройкой от конкурента стала стоимость — заказчик был готов давать доступ к сервису по цене ниже, чем HelloSign. В остальном наш сервис очень похож: легален более чем в 60 странах, также можно сохранять подписи и получать уведомления.
Кому-то демпинг может показаться не очень «благородной» стратегией. Но она работает и дает результат. Например, Uber, чтобы захватить долю рынка на старте, сильно снижал стоимость поездки и доплачивал водителям за издержки. У нашего заказчика похожий план: занять долю рынка в 2-3%, чтобы проект вышел на самоокупаемость. Вряд ли крупный конкурент, который оброс издержками и получает стабильный доход от большой базы существующих пользователей, будет играть в демпинг и менять свою стратегию.
Подход заказчика показался нам рациональным: не придумывать годами идею того, чего еще нет, а взять готовую и придумать, как перетянуть несколько процентов рынка. Поэтому отстраивались мы только стоимостью сервиса.
Копировать тоже непросто
Вы скорее всего представляете, как устроен процесс подписания электронных документов: загрузил → отправил → подписали → получил. Я расскажу о том, как это было устроено у нас и почему внутри сложнее, чем снаружи.
Сделать интерфейс, в котором можно переставлять поля курсором — для фронтендера легко. Но реализовать такую возможность с учетом размера экрана и ориентации подписываемого документа — задача для фронта нетривиальная.
На бэкенде тоже пришлось потрудиться: например, при загрузке документа мы должны были разбивать его на множество картинок в формате PNG. Вот как все это работало и почему было так сложно:
- Документ в произвольном формате загружается в сервис.
- Open Office (опенсорс-проект офисных приложений) конвертирует полученный документ в PDF и возвращает в сервис.
- Но документ загрузили в произвольном формате, значит, нам нужно учитывать самые разные варианты: какая ориентация документа (книжная или альбомная?), на каком языке написан документ? Сколько страниц в документе? Все это нужно было предусмотреть.
- Затем мы дробим документ из PDF в PNG (обычные картинки). Это нужно для работы библиотеки Interact: она позволяет точно задавать координаты для будущих подписей в документе.
- Пользователь может вставить в документ нужные поля. Это:
- текстовое поле;
- дата;
- чекбокс;
- подпись: выбрать шрифт и написать/загрузить картинку/нарисовать от руки.
Также мы предусмотрели возможность подписывать документы в произвольном порядке — так, как нужно пользователю. Либо все подписывают по порядку (CEO, CTO и так далее), при этом каждый следующий участник видит подпись предыдущего. Либо одновременно: все получают документ на подпись и не знают о подписании другими людьми.
Как придать электронной подписи юридический вес
Как вы понимаете, просто добавить свою подпись на документ недостаточно. Ему нужна юридическая сила. Правда, это запрещенная вне Хогвартса магия, поэтому работает только в некоторых странах. Например, в России такой сервис не будет иметь юридической силы, а вот в США, Канаде, Великобритании, Китае, Индии, Германии, Франции, Испании, Италии, Японии, Южной Корее, Турции, Швейцарии и Бразилии с таким можно хоть куда: в суд по наследству, или на сделку в миллион долларов.
Мы интегрировались с сервисом Notarius. Но это произошло не легко и не сразу. Мы делали прототип под гипотетический сервис для легализации подписи, предполагая, что купим сертификат и сами соберем движок для подписания документов. И мы даже дошли до покупки, но, конечно, все оказалось чуть сложнее.
Время шло, поддержка сервиса, в котором мы купили сертификат, не отвечала на вопросы. Мы до последнего не понимали, сможем адаптировать купленный сертификат под потребности нашего проекта или нет. Тогда мы начали искать готовые решения.
Начали с анализа конкурентов, смотрели, чем они пользуются для легализации подписей. Присмотрелись к четырем сервисам:
Чтобы принять взвешенное решение, провели переговоры с представителями всех сервисов. На всех переговорах рассказывали о цели нашего проекта и уточняли, сможет ли их продукт решить наши задачи: какие подводные камни встретятся, есть ли поддержка, спецификация и т.д.
По всем пунктам выигрывал Notarius: комплексный подход, поддержка, понятность спецификации, легкая интеграция. Ну и по деньгам он был привлекательнее, а это немаловажно в стратегии заказчика.
Чужая проблема на нашей территории
Мы заложили достаточно времени на интеграцию и немного на переговоры. Но все сложилось наоборот: интегрировались мы быстрее, чем планировали — за неделю. Но вот по переговорам и оформлению все дедлайны успели выйти.
Все потому, что периодически нам приходилось срочно чинить буквально все. Notarius — сторонний сервис, и иногда он вел себя не так, как нам бы хотелось. Дело в том, что сервис дает свое приложение-прослойку, которое нужно было развернуть на наших серверах. Бэкенд этого приложения взаимодействует с бэкендом нашего сервиса, так обеспечивается конфиденциальность данных и легитимность подписей. И именно в этой части работа иногда сбоила. Помогла смена конфигураций их приложения на нашем сервере. С этого момента сервис стал работать так, как нам хотелось.
В итоге интеграция работает так:
- Мы получаем приложение-прослойку от Notarius и размещаем его у себя на хостинге.
- В момент подписания документа наш бэкэнд отправляет запрос в прослойку от Notarius для визирования подписи.
- Приложение-прослойка переправляет этот документ в зашифрованном виде на сервера Notarius и получает визированную подпись в ответ.
- Приложение-прослойка возвращает уже легитимно подписанный документ в наш сервис E-Signature
Первые пользователи и важное API
В феврале 2021 года проект выкатили на прод. Сегодня им пользуется около 20 000 зарегистрированных пользователей, это очень хороший показатель для MVP.
Сейчас мы поддерживаем сервис и добавляем новые фичи: первые пользователи почти сразу выдвинули ряд хотелок. Мы сформировали роадмап, выделили команду и летим по плану.
Недавно мы добавили возможность загружать за один раз несколько документов, которые при загрузке “склеиваются” друг с другом. Это удобно: можно отправить на подпись сразу пакет документов: договор и приложения к нему. Такой функционал есть у Hellosign. Кроме того, это позволяет сэкономить на интеграции с Notarius. Сервис берет комиссию за каждый подписанный документ, поэтому объединение документов в один позволяло бы экономить на комиссии.
В теории все это звучит просто, но на деле реализация заняла у нас несколько месяцев:
- Нам пришлось внести серьезные архитектурные изменения во флоу проекта и отделить сущность документа от самих файлов, чтобы мы смогли отправлять один Signing Request на все файлы разом. Это потребовало кропотливой работы над кодом, чтобы исключить малейшую вероятность багов при подписании.
- Так как сервис Notarius зарабатывает на подписи каждого документа, в теории они могли быть против того, чтобы мы объединяли документы в один запрос. Чтобы убедить техподдержку Notarius в легальности этой затеи, нам пришлось плотно с ними пообщаться и даже записать видео того, как мы хотим это сделать.
Для пользователей с бизнес-подпиской мы добавили возможность ставить на документы логотипы компании. Последняя на сейчас доработка — API с Zapier. С ним наш сервис можно использовать без входа в приложение, к примеру можно настроить автоматический перенос клиента вперед по воронке в CRM сразу после подписания договора. Ждем первых пользователей интеграции 🙂