Что болело до

Направление новое. Доверия к нему нет. Фраза «мы делаем софт» ничего не доказывает и никого не убеждает.

Боль клиента при этом описывается очень конкретно. Мы собрали её в пять пар «было → стало» и вынесли в отдельную секцию страницы.

Классическая разработка закрывает такое за 3-6 месяцев и бюджет от 300 000 ₽. Для компании с выручкой 3-50 млн ₽ в месяц это неподъёмно. Странице надо было доказать сразу две вещи: что мы умеем делать сервисы и что делаем их быстро.

  • 7 Google-таблиц, которые никто не заполняет
  • менеджер 4 часа в день собирает данные руками
  • отчёт по выручке собирается 2 дня из 5 источников
  • клиентская база лежит в общей таблице, доступ есть у всех
  • платежи и отгрузки сверяются вручную

Оффер, который считает сам себя

Первый экран держат три цифры: 5 дней до запуска MVP, от 80 000 ₽ фиксом в договоре, 2 проекта в месяц. Дальше 12 секций от боли до формы заявки.

Ядро страницы это калькулятор сметы. Пять типов задачи, слайдер экранов от 3 до 24, семь интеграций, пять дополнительных опций. Цена и срок пересчитываются мгновенно на клиенте, без запроса на сервер, с разбивкой по строкам. Срок жёстко ограничен снизу пятью днями, поэтому калькулятор физически не может пообещать меньше, чем сказано в оффере.

Метод объяснили сравнением двух колонок. Слева классическая команда из пяти человек, от 3 до 6 месяцев, бюджет от 300 000 ₽. Справа один инженер, ИИ-инструменты, старший разработчик на ревью каждого изменения, 5 дней и от 80 000 ₽. Условия вынесли отдельно: 2 проекта в месяц, аванс 50%, исходный код у клиента с первого дня, багфиксы первого месяца бесплатно.

!
Почему обошлись без Next.js

Для одностраничника с нулевым бэкендом фреймворк был бы лишним весом. Получилась статика без сборщика: ни package.json, ни node_modules в репозитории. Секции разложены по 10 JSX-файлам, в dev-режиме страница компилирует JSX прямо в браузере: правишь файл и жмёшь F5. В работу уходит склеенный и минифицированный бандл, деплой обычный git push.

Витрина вместо обещаний

Витрину собрали из 10 сервисов, которые уже работают в продакшене: Пульсар7, МП Приборка, ФП, Орг.Структура, Контент-завод и другие. Каждый идёт карточкой в формате «Боль → Решение → две цифры результата», со скриншотом в рамке браузера и ссылкой на живой адрес. Первые шесть видны сразу, остальные открываются кнопкой.

Секцию «что мы делаем» собрали из шести живых мокапов: таблица, дашборд, лента алертов, кабинет с ролями, финотчёт, маршрутизатор. Их можно кликать и переключать вкладки. В каждом спрятана подсказка, которая по клику объясняет пользу простыми словами.

В первом экране печатает код IDE-панель: три сцены, каждая заканчивается строкой результата вроде «✓ отчёт за 3 секунды вместо 2 дней». FAQ написали на 11 вопросов и включили туда неудобные: что будет, если не успеете за 5 дней, кто конкретно работает над проектом, можно ли посмотреть демо до оплаты.

Чтобы страницу читали и поисковики, и языковые модели

Попадание в ответы ChatGPT, Claude и Perplexity было отдельной целью. Для B2B-услуги это живой источник заявок, поэтому GEO-контур закрывали осознанно.

Отдельно закрыли 152-ФЗ: реквизиты оператора в футере, страница политики конфиденциальности, cookie-баннер с сохранением согласия.

  • SSR-фолбэк: полная текстовая копия страницы лежит в HTML внутри #root, React заменяет её при загрузке. Краулеры видят содержимое без выполнения JS, а пользователь с отключённым JavaScript получает рабочую страницу.
  • 6 блоков JSON-LD: Organization, ProfessionalService с каталогом офферов и ценами, FAQPage на 11 вопросов, BreadcrumbList, WebSite и WebPage со speakable.
  • robots.txt с явным Allow для 18 краулеров, среди них GPTBot, ClaudeBot, PerplexityBot и Google-Extended.
  • llms.txt и llms-full.txt: машиночитаемый дамп лендинга специально под языковые модели.

Грабли

Главная грабля: один и тот же текст живёт в трёх местах и со временем разъехался. Контент продублирован в React-компонентах, в SSR-фолбэке внутри HTML и в llms-файлах. Правки вносили только в React, до двух других копий они не доехали.

Расхождения видно невооружённым глазом. По одному из кейсов в React стоит уже сниженная цифра по клиентам, а в SSR-фолбэке и в обоих llms-файлах лежит старая. В React шесть форматов работы, в SSR четыре. В React 11 вопросов FAQ, в SSR семь. Блок про гарантию результата есть только в React.

Неприятно тут вот что: модели охотнее всего цитируют именно машиночитаемые копии, поэтому устаревшая версия расходится дальше актуальной. Вывод простой. Если делаешь SSR-фолбэк руками, сразу пиши скрипт-сверку, который сравнивает копии и ругается на расхождения.

Вторая грабля из той же серии: скрипта сборки нет вообще. Бандл и минифицированный CSS собираются руками, защиты от «забыл пересобрать» никакой.

Частые вопросы

Сколько времени заняла сборка лендинга?

Пять дней: с 19 по 23 мая 2026 года, по датам файлов в репозитории. За это время собрали 12 секций от боли клиента до формы заявки. Внутрь поместились калькулятор сметы, витрина из 10 сервисов и шесть кликабельных мокапов.

Зачем лендингу калькулятор сметы?

Он снимает главный вопрос до звонка: сколько стоит и когда будет готово. В калькуляторе пять типов задачи, слайдер экранов от 3 до 24, семь интеграций и пять дополнительных опций. Цена и срок считаются прямо в браузере, без запроса на сервер, с разбивкой по строкам. Срок ограничен снизу пятью днями, поэтому калькулятор не может пообещать меньше, чем сказано в оффере.

Как сделать, чтобы страницу цитировали ChatGPT, Claude и Perplexity?

Нужен текст, который виден без выполнения JavaScript. Полная текстовая копия страницы лежит в HTML внутри #root, React заменяет её при загрузке. Сверху шесть блоков JSON-LD: Organization, ProfessionalService с ценами, FAQPage на 11 вопросов, BreadcrumbList, WebSite и WebPage. В robots.txt прописан явный Allow для 18 краулеров, среди них GPTBot, ClaudeBot и Google-Extended, плюс выложены llms.txt и llms-full.txt.

Почему обошлись без Next.js?

Одностраничнику с нулевым бэкендом фреймворк добавил бы только вес. Получилась статика без сборщика: ни package.json, ни node_modules в репозитории. Секции разложены по 10 JSX-файлам, в dev-режиме страница компилирует JSX прямо в браузере. В работу уходит склеенный и минифицированный бандл, деплой обычный git push.

Какая ошибка вылезла на этом проекте?

Один и тот же текст жил в трёх местах: в React-компонентах, в SSR-фолбэке внутри HTML и в llms-файлах. Правки вносили только в React, две другие копии отстали. В React 11 вопросов FAQ, в SSR-фолбэке семь; форматов работы шесть против четырёх. Модели охотнее цитируют машиночитаемые копии, поэтому расхождение надо ловить скриптом-сверкой на сборке.