Разработка трёхъязычного справочника по ВНЖ за инвестиции, где каждая цифра проверена по закону
Собственный проект: Next.js, Sanity, три языка и метод, при котором цифра не выходит на сайт, пока не прочитан акт, который её устанавливает.
Клиент
Отрасль
Услуги
Веб-сайт

Проблема
В нише резидентства за инвестиции почти весь контент пишут те, кто продаёт услугу. Из-за этого по рынку расходятся цифры, которых уже нет в законе: пороги, отменённые несколько лет назад, сроки, изменившиеся прошлой весной, и целые маршруты, закрытые решением суда, но всё ещё выставленные с ценами. Человек, который читает пять сайтов подряд, получает пять разных ответов и ни одной ссылки на норму.
Мне нужен был собственный лид-генерационный актив в этой нише, и заходить в неё привычным способом — контентом, который повторяет то же самое, — бессмысленно: у домена нет ни возраста, ни ссылок, ни бюджета на них. Единственное свободное место на этом рынке — точность. Отсюда правило, из которого выросло всё остальное: цифра не публикуется, пока не прочитан акт, который её устанавливает, и рядом с ней стоит дата, когда этот акт был прочитан.
Задача
- Построить справочник по пяти юрисдикциям — Португалия, Греция, Мальта, ОАЭ, Кипр — на трёх языках, где каждое числовое утверждение прослеживается до первоисточника
- Сделать так, чтобы правило проверяемости держалось технически, а не на дисциплине автора
- Собрать страницы, которых в нише нет вообще, а не ещё одну версию существующих
- Уложиться без платных шрифтов, стоковых фотографий и бюджета на иллюстрации
- Оставить квалификацию заявки внутри сайта, а не отдавать её чужой форме
- Довести первый экран и внутренние страницы до состояния, в котором скорость и разметка не мешают ни поиску, ни агентам
Результаты
- PageSpeed на живой сборке: производительность 95, доступность 97, проверенные методы 100, SEO 100
- Проверка агентного просмотра пройдена полностью — 2 из 2: структура страниц читается ассистентами, а не только браузером
- За первые две недели работы Search Console показывает сотни запросов, по которым сайт уже ранжируется
- Первый содержательный визит пришёл из ChatGPT — на страницу, которую Google к тому моменту ещё не обошёл
- Две страницы, которых нет ни у одного из двадцати разобранных доменов ниши: сквозная страница источников с вердиктами и журнал правовых изменений с датами вступления и номерами актов
- Журнал изменений выгружен машиночитаемыми данными по стабильному адресу — свободно к использованию со ссылкой на источник
- Разбор рынка дал четыре проверяемые находки, каждая из которых стала содержанием страницы: отменённый маршрут Мальты, снятое требование Португалии, неверная датировка греческого маршрута и норма, лежащая в основе кипрского ПМЖ
- Сайт целиком собран без платных шрифтов, стоковых фотографий и покупных иллюстраций
Проделанная работа
- Next.js на App Router с React и TypeScript, Sanity как CMS, деплой на Vercel
- Мультиязычность на собственных адресах для каждого языка, а не префиксами к английским URL
- Страница источников: у каждого утверждения первоисточник, вердикт и дата чтения; каждая ссылка помечена как официальная публикация или как воспроизведение
- Журнал правовых изменений с фильтром по юрисдикциям, якорем на каждой записи и машиночитаемой выгрузкой
- Калькулятор стоимости: построчный расчёт того, что платится сверх порога, с основанием и ссылкой на источник у каждой строки
- Подбор маршрута по трём вопросам, где бюджет проверяется против реального итога, а не против рекламного порога
- Схемы собираются кодом и уходят на сайт самодостаточными файлами со встроенными шрифтами
- Дизайн-система на измеренных цветовых парах: коэффициент контраста записан рядом со значением, менять цвет без пересчёта нельзя
- Форма заявки с квалификацией внутри сайта: юрисдикция, бюджет, срок, цель
- Проверки на сборке: битая ссылка на якорь источника роняет публикацию, отдельная проверка не даёт двум страницам целиться в один запрос, цифра не меняется в тексте без изменения файла верификации
- Русская и польская версии написаны под собственный спрос каждого языка, а не переведены с английского
Ключевые моменты проекта
Описание проекта
Почему в справочнике по ВНЖ за инвестиции нельзя публиковать цифру, не прочитав закон
Правило проекта звучит скучно: цифра не выходит на сайт, пока не прочитан акт, который её устанавливает. Практическое следствие у него неудобное. Там, где первоисточник недоступен, не публикуется ничего, и об этом сказано прямо.
Именно поэтому Кипр стоит в сравнительной таблице с прочерками. Государственный портал отвечает отказом, у другого ведомства истёк сертификат, у третьего документ закрыт от индексации. Порог ПМЖ, опубликованный без чтения закона, — ровно то утверждение, которое расходится по интернету и потом уже не отзывается. Прочерк в таблице стоит дешевле, чем строчка, за которую нечем ответить.
Что это даёт на выходе: пороги, сроки и суммы на сайте те, что действуют сегодня, а не те, что разошлись по рынку. Греческий порог менялся в сентябре 2024 года, мальтийский — в январе 2025, португальский срок до гражданства — в мае 2026, и на большинстве отраслевых страниц до сих пор стоят прежние значения. Проверка по первоисточнику здесь не редакционная добродетель, а единственный способ не оказаться среди них.
Как устроена страница источников справочника: вердикт, первоисточник и дата чтения
Страница источников — не список литературы в конце. Это отдельная страница, где каждое утверждение стоит рядом с первоисточником, вердиктом и датой, когда источник был прочитан. Вердиктов несколько: подтверждено, добавлено, отозвано, исправлено.
У каждого акта собственный якорь, поэтому статья ссылается на норму, а не на страницу целиком. Каждая ссылка помечена как официальная публикация или как воспроизведение — и это различение поймало реальную проблему: часть греческих ссылок вела на коммерческую правовую базу, а не в государственную газету. Ссылки остались, потому что текст там действительно можно прочитать, но помечены тем, чем являются.
В подвале две даты, а не одна: когда норма сверялась и когда менялся текст самой страницы. Одна дата обязана соврать про одно из двух.
Собственные ошибки проекта опубликованы на этой же странице, наравне с рыночными. Сайт писал, что греческого маршрута за 250 000 евро через стартап не существует — он существует, статья 100Α, добавленная в конце 2024 года. И писал, что в мальтийских правилах нет требования к доходу — конкретной цифры действительно нет, а требование есть. Страница, разбирающая чужие утверждения и умалчивающая о двух своих худших, не работает как аргумент.
Журнал правовых изменений, которого нет ни у одного из двадцати разобранных конкурентов
Второй элемент, которого в нише нет: сквозной журнал изменений. Что изменилось, с какого числа, каким актом и какая собственная цифра сайта с этим переехала. Фильтр по юрисдикции, якорь на каждой записи, названный по смыслу изменения, и вся таблица выгружена машиночитаемыми данными по стабильному адресу — свободно к использованию со ссылкой на источник.
Отдельная колонка отведена под случаи, где акта нет вовсе. Дубай в феврале 2026 года перестал требовать, чтобы половина стоимости объекта была оплачена до подачи, — требования никогда не было в федеральном приложении, это была ведомственная практика, и для её отмены не нужен был документ. Такие записи помечены как «нет опубликованного акта», а не переписаны так, будто акт нашёлся.
Проверено это утверждение узко и именно так и сформулировано: такого журнала нет ни у одного из двадцати доменов, которые я разобрал по их картам сайта. Это не то же самое, что «единственный в мире».
Что показал разбор рынка резидентства за инвестиции: отменённый маршрут, который до сих пор продают
Разбор двадцати доменов отрасли дал четыре находки, и каждая проверяема по первоисточнику.
Мальта. Решение Суда ЕС по делу C-181/23 от 29 апреля 2025 года прекратило гражданство за инвестиции. Дальше цепочка: закон от 24 июля 2025 года и подзаконный акт от 29 июля, удаливший из регламента целую часть вместе с двумя приложениями. На номер дела не сослался никто из двадцати. Часть рынка продолжает продавать отменённое с ценами, а страница государственного агентства и через шестнадцать месяцев после решения публикует суммы удалённого маршрута под свежими датами.
Португалия. Статья 90-A закона об иностранцах снимает для инвестиционного ВНЖ ровно один пункт общих требований — визу. Требование средств к существованию остаётся. На двух крупнейших страницах из топа выдачи этих слов нет вообще, а крупнейший сайт отрасли вдобавок не упоминает переход с пяти лет на десять до гражданства — через шестнадцать месяцев после закона.
Греция. Маршрут за 250 000 евро через стартап рынок приписывает февральскому закону 2026 года. Он старше на четырнадцать месяцев и введён другим законом, в конце 2024 года.
Кипр. Ускоренное ПМЖ продают или описывают семеро конкурентов из двадцати. Норму, на которой оно стоит, называют двое.
Каждая находка стала содержанием страницы. Это и есть разница между контентом, написанным по конкурентам, и контентом, написанным по источникам: второй вариант даёт то, чего в выдаче нет.
Калькулятор стоимости ВНЖ считает не порог, а то, что сверх него
Порог входа публикуют все. Что платится сверх него — налоги на переход права, юридические и регистрационные сборы, государственные взносы, первое продление — не публикует почти никто, хотя платят это все и каждый раз.
Калькулятор считает именно вторую часть, построчно. У каждой строки основание, ставка и ссылка на акт. Там, где акта нет и есть только рыночная практика — а это гонорар юриста и агента, — строка так и помечена: это единственное место, где цифра не выведена из нормы, и об этом сказано, а не замолчано.
Подбор маршрута рядом устроен как обычный квиз ниши, с одной разницей: бюджет проверяется против реального итога, а не против рекламного порога. Бюджет в 500 000 евро проходит в две программы из четырёх и до третьей не дотягивает тысячу — вывод, которого рекламная таблица не даёт никогда.
Три языка справочника — не перевод: русский, английский и польский спрос выражены по-разному
Русская и польская версии не переведены с английской, и это принципиально.
Английская статья о жизни в Греции ведёт от стоимости жизни, потому что английский спрос так и выражен. Русская ведёт от переезда: запросов про «стоимость жизни в Греции» по-русски практически нет, интент выражается словом «переезд». Польская версия статьи о доходах и расходах построена иначе обеих, потому что польский спрос лежит в стоимости жизни, а не в порогах дохода.
Каждое такое решение принято по выгрузке спроса, а не по удобству перевода. Технически это поддержано мультиязычностью на собственных адресах для каждого языка: у греческого гайда по-русски свой адрес, по-польски свой — а не префикс к английскому.
Почему справочник по резидентству за инвестиции выглядит как редакция данных, а не как витрина
Визуальное решение здесь не оформление, а следствие того, что это за сайт. Направление внутри проекта названо «Data desk / Oxblood» — редакция данных.
Белая страница и чёрная плоскость, и ни одного серого фона. Первая версия имела холодно-серый фон, и именно он делал сайт дешёвым на вид: страница, где половина поверхностей — чуть другой оттенок серого, читается как шаблон. Серый цвет текста остался, серые подложки запрещены. Контраст даёт не заливка, а чёрная плоскость против белой: верх каждой страницы тёмный, шапка живёт внутри него, на главной он продолжается в первый экран. Это весь приём — сайт читается дорого без единой платной картинки, без градиентов и без эффектов. Для проекта без бюджета это не эстетический выбор, а инженерный.
Один акцентный цвет, оксблад, с жёсткой нормой расхода: около пяти процентов экрана. Дальше этой доли акцент перестаёт читаться как редакционный и начинает читаться как предупреждение. На белом он даёт контраст уровня AAA; на чёрной плоскости тот же цвет непригоден как текстовый, поэтому у него есть отдельная светлая пара — тоже проверенная. Коэффициент контраста записан рядом со значением прямо в системе токенов, и правило проекта запрещает менять цвет, не пересчитав его. Та же дисциплина, что и с юридическими цифрами, просто применённая к другому материалу.
Почти нет скруглений: скруглённые углы — то, что превращает таблицу данных обратно в маркетинговую карточку. У главной сравнительной таблицы нет контейнера вообще, она отделена от страницы волосяными линейками, а не рамкой и тенью.
Три шрифта на три роли, а не для красоты. Серифный дисплейный — заголовки, гротеск — текст, моноширинный — номера статей, газет и даты. Моноширинный здесь не украшение: он визуально отделяет ссылку на норму от прозы и делает цитату опознаваемой с одного взгляда. Один дисплейный шрифт на все три языка, с кириллицей в подгружаемом наборе.
Цвет в схемах справочника несёт только статус, и каждый статус дополнительно несёт слово
Правило выглядит мелочью, но оно вышло из проверки, а не из вкуса. Направленный перебор наборов оттенков в цветовом пространстве OKLCH показал, что набор из пяти цветов не проходит порог различимости при нарушениях цветовосприятия: лучший результат — 4,5 при необходимом минимуме 8, а исходный набор давал 1,1. Это свойство самого пространства, а не неудачный подбор.
Отсюда правило для всех схем сайта: цвет несёт только статус или величину, и каждый статус дополнительно несёт слово. Кипр в карточках юрисдикций не просто выделен серым — под ним стоит «не проверено». Отменённый маршрут в схеме не убран, а вычеркнут и подписан. Схема, которая держится на одном цвете, разваливается в чёрно-белой печати и для человека, не различающего цвета.
Сами схемы собираются кодом, а не рисуются руками, и уходят на сайт самодостаточными файлами со встроенными шрифтами. Ни одного эмодзи, ни одной стоковой фотографии, ни одной иконки-заглушки: иллюстрации на сайте — только собственные схемы, собранные из проверенных данных.
Вёрстка справочника: ширина страницы, точка переключения шапки и таблицы, которые остаются таблицами
Ширина задана полями, а не колонкой текста. Поля растут вместе с экраном, максимальная ширина — только потолок, поэтому на широком мониторе получается широкая страница, а не колонка в 1200 пикселей, потерянная посреди пустоты. При этом текст не расползается: каждый блок прозы несёт собственную меру строки.
Точка переключения шапки измерена, а не выбрана. С шестью пунктами навигации русские подписи требуют 1072 пикселя ширины содержимого — на стандартной точке в 1024 ряд переполнялся. Шапка переключается на одной ширине для всех трёх языков: навигация, появляющаяся на разной ширине в зависимости от языка, — это навигация, о которой невозможно рассуждать.
Таблицы на узком экране становятся карточками, не переставая быть таблицами. Строки раскладываются вертикально, но в разметке остаются настоящей таблицей: человек, который идёт по колонкам с экранным диктором, получает те же колонки. Это стоило больше работы, чем сетка из блоков, и это ровно тот случай, когда доступность и семантика важнее скорости сборки.
Проверки, которые не дают методу справочника сломаться при следующей публикации
Метод, который держится на дисциплине автора, ломается на третьем месяце. Поэтому он вынесен в проверки, которые проходят при сборке.
Публикация статьи падает, если ссылка ведёт на несуществующий якорь страницы источников. Отдельная проверка не даёт двум страницам целиться в один и тот же запрос. Цифра не может измениться в тексте статьи без изменения файла верификации.
Это скучная часть работы, и она же — разница между «мы стараемся быть точными» и «неточность технически не проходит».
Скорость, разметка и первый визит из ChatGPT: что показал справочник за первые две недели
На живой сборке PageSpeed даёт 95 за производительность, 97 за доступность, 100 за проверенные методы и 100 за SEO, а проверка агентного просмотра проходит полностью, 2 из 2. Последнее для этого проекта важнее первого: структура страниц читается ассистентами, а не только браузером.
За первые две недели Search Console показывает сотни запросов, по которым сайт уже ранжируется. Для домена без единой внешней ссылки это ранняя картина, а не результат, и выводов о позициях из неё делать нельзя — но она показывает, что индексация идёт по широкому фронту, а не по одной странице.
Отдельно стоит первый содержательный визит: он пришёл из ChatGPT, на страницу, которую Google к тому моменту ещё не обошёл. Порядок обратный обычному. Я не берусь утверждать, что он вызван методом — это наблюдение, а не измеренная зависимость. Но то, что делает страницу цитируемой языковой моделью — цифра с номером статьи закона, дата прочтения, отдельная страница источников, машиночитаемый журнал изменений, — это ровно то, что в проекте построено намеренно.
Тезис кейса в одну строку: машина цитирует то, что можно проверить.
Что в проекте про ВНЖ за инвестиции честно ещё не сделано
Список стоит держать в кейсе, потому что он усиливает, а не ослабляет.
Внешних ссылок у домена нет, и это главное ограничение всей поисковой работы. Половина воронки не построена: недвижимость как платящий пол ещё впереди. Кипр отложен намеренно — первоисточники не читаются, и пока они не читаются, страницы не будет. Адреса подписки на изменения собираются, а рассылать их пока нечем. Контент-план составлен и выполнен в небольшой части.
Сайту две недели. Это стоит сказать прямо, а не обходить: кейс про то, что построено и по какому методу, а не про то, что успело сработать.













