Пять нейросетей строили мой PDF-сервис. Осталась одна
Осенью 2025-го я завёл аккаунт в Qwen и поставил её родной CLI себе на комп. Свободного времени было много, а идей ноль. У нейросети тогда были, по сути, бесплатные лимиты: генерируй сколько хочешь, никто не резал ни токены, ни запросы. Грех было не начать строить. Тем более строить было нечего.
Тут, уважаемые читатели, надо объяснить положение вещей. Идей у меня не было. Совсем. Я перебирал варианты с той тоской, с какой голодный человек четвёртый час смотрит в холодильник: там есть всё, кроме еды. Калькуляторы, конвертеры валют, виджеты всякие. Это всё уже сделано. Сто раз. Причём дважды. А делать двадцатый конвертер валют — это как открыть ларёк рядом с «Пятёрочкой»: покупатели рядом, а всё равно ты ларёк.
PDF-конвертеры — ниша не то чтобы денежная. Кто в ней сидит, тот знает. Мне просто хотелось слепить что-то своё. Не знаю, как объяснить. Хотелось, и всё.
Повод был бытовой. Был период, когда я работал с PDF плотно и был завсегдатаем ilovepdf. С тем самым лицом, с каким заходишь в аптеку в двадцать три сорок: виновато и молча. Подписать, дописать, отправить в банк, отправить на работу. И каждый раз танцы с файлами.
И тут закралась мысль: а чё, если сделать свой?
Дальше было самое полезное. Отдал Qwen на телефоне задачу на глубокое исследование: посмотреть рынок именно PDF-конвертеров, насколько сложно такое сделать и на чём написаны конкуренты. Вопрос был простой: реально это сделать вдвоём с нейросетью или мы оба погибнем смертью храбрых?
Реально. Начал с питона и готовых библиотек. Писать с нуля — долго и геморройно, а геморрой, в отличие от токенов, лимитами не ограничен. Qwen перебирала GitHub и находила то, что умные люди сделали до нас, а я складывал это в кучу: pypdf — склеить, разрезать, повернуть; pikepdf — вытащить и пережать; PyMuPDF — рендер и текстовый слой; pdf2image с poppler — картинки из страниц; pdf2docx — конвертация в Word; pytesseract — распознавание; reportlab — водяные знаки. Сверху Flask, celery и redis, чтобы тяжёлое не блокировало лёгкое. Лёгкое всегда виновато первым.
Сервер снял самый дешёвый на Beget: два ядра, четыре гигабайта оперативки, шестьдесят гигов диска. Мне тогда казалось, что это космос. Через полгода мне казалось, что это телефон.
Вообще я в этом ничего не понимал. Просто повторял за нейросетью, а когда не получалось — злился и шёл пить чай. Иногда помогало.
Qwen накидала базу: фронтенд, внешний облик. Выглядело так, будто страницу собирали из запчастей, найденных на обочине: всё работает, но смотреть больно. Я не расстроился. Мне нужен был функционал, а не красота. Красоту, думал, приделаю потом.
Дальше сайт стал обрастать мясом и жиром, без всякого плана. Сначала конвертация. Потом ротация. Потом слияние. Потом разделение. И по накатанной: водяной знак, пароль, распознавание, сравнение. Каждая функция была на один вечер. Только вечера эти шли месяцами, и заканчивались одинаково: то тут правка, то там баг, а иногда и оба, причём в одном месте.
А потом у Qwen появились лимиты. До миллиона токенов, и всё, дальше режь. Qwen отлетала. Начался «апокалипсис по расписанию»: сидишь такой, весь в планах, а тебе говорят, что лимит кончился. Как людям в девяносто втором говорили, что деньги кончились.
Вот тут я первый раз задумался о подписке. До этого я никогда в жизни не платил за нейросети и свято верил, что бесплатно будет всегда. Как верили все, кто потом покупал доллары по двести.
Minimax 2.7, десять долларов. Первая платная модель в моей жизни. Я заплатил и почувствовал себя инвестором. Через неделю почувствовал себя человеком, который вложился в пони, запряжённого в асфальтовый каток: возница серьёзный, каток настоящий, а пони если что и сдвинет, то только с места, на котором стояла.
Проект к тому моменту весил три с половиной гигабайта, в нём были тысячи строк, и Minimax на этом масштабе предсказуемо плыл. Галлюцинировал, терял контекст и выдумывал функции, которых нет, причём с уверенностью нотариуса, заверяющего липовую доверенность. Есть поговорка: скупой платит дважды. С Minimax я понял, что тупой платит трижды, а русский программист — до скончания лимитов.
ChatGPT Business. Купил по совету из ютуба, на площадке, где торгуют аккаунтами. Двое нищих умников, то есть я и нейросеть, тащили проект вдвоём: один пишет код, второй скармливает первому результат на валидацию, и оба уверены, что инструмент держит именно собеседник. Дело пошло веселее, затащили катку.
А потом на такие аккаунты взлетели цены: с трёхсот рублей до полутора тысяч за две недели. Экономика, как ей и положено, диктовала: нейросеть дорожала быстрее, чем я успевал задать ей вопрос.
GLM. Тут надо отдать должное, не всё же в этой жизни ругать: классная модель. Поправила кучу того, что до неё было наляпано на бэкенде. Но мы упирались в лимиты, а у неё пятичасовое ожидание. Пять часов смотреть в стену, когда в голове уже готово следующее изменение, — отдельный вид извращения, и я к нему был не готов. Как свидание с собственным нетерпением. Оно настроено серьёзно, а ты нет.
DeepSeek v4 Pro. Тогда он стоил копейки. Я полез искать, как пополнять, купил зарубежную виртуальную карту, и с тех пор мы вместе. Проект он ведёт по сей день. Тот DeepSeek и нынешний — разные люди. Фамилия одна.
Пока эта карусель крутилась, шла вторая работа, которую никто не видит. Дни на бэкенд: чтобы не было ошибок, чтобы гонять тесты, чтобы разворачиваться на любом сервере за вечер. Сервер, кстати, пришлось менять.
Beget подорожал так, что платить стало не по силам. Переехал за те же деньги на шесть ядер, двенадцать гигабайт памяти и SSD в разы толще. Сервер не подводит который месяц.
Чтобы не зависеть от одного хостера, я всё упаковал в Docker и настроил перенос так, чтобы при падении или очередном подорожании развернуться на новом месте без потерь. Работа скучная, её никто не видит и о ней не пишут. Как менять прокладку в кране: по видео пять минут, по жизни выходной и сорванная резьба, но без неё воды в доме нет.
Что в итоге. Восемнадцать инструментов: сжать, конвертировать в Word и Excel, объединить, разделить, повернуть, поставить водяной знак, закрыть паролем, снять пароль, распознать текст, сравнить два файла, починить битый. Редактор прямо в браузере на wasm, написанный на Rust, файл для правки никуда не уходит. Офисные документы считает gotenberg с LibreOffice, сжатие qpdf и ghostscript. Тот самый стек из начала, только обросший мясом, жиром и парой седых волос.
И честно про результат. Людей мало: по логам около двадцати шести человек в сутки. В Google за три месяца семьсот тридцать два показа и три клика. Три. Я сначала думал, что ошибся в выгрузке. Оказалось, не ошибся. Просто мир пока не знает, что я существую. Имеет право.
Обидно? Да не очень. Я шёл не за деньгами, хотел слепить что-то своё. Слепил. Если теперь посмотреть на код, станет ясно, что лепили руками, в спешке, в тёмном цеху, но с душой и почти без вредных привычек в виде тестов.
Сам сервис, если кому надо: gopdf.ru







