/* ============== Калькулятор лидов и инфографика (08.09.2026) ============== */ const ROI_NICHES = [ { key: 'goods', name: 'Товары, стройматериалы, сыпучие', lo: 115, hi: 250, note: 'кейс «Вся Доставка»: 115 ₽ за контакт' }, { key: 'auto', name: 'Автосервис, ремонт, услуги', lo: 200, hi: 300, note: 'кейс Slav Motors: 254 ₽ за контакт' }, { key: 'b2b', name: 'B2B, геодезия, спецтехника', lo: 300, hi: 390, note: 'кейс «Геоникс»: 389,6 ₽ за контакт' }, { key: 'other', name: 'Другая ниша', lo: 200, hi: 350, note: 'средний диапазон по проектам' }, ]; const ROI_TARIFFS = [{ name: 'Начальный', price: 50000 }, { name: 'Стандарт', price: 85000 }, { name: 'Профессиональный', price: 150000 }]; const roiFmt = (n) => Math.round(n).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' '); function RoiCalc() { const [budget, setBudget] = useState(300000); const [niche, setNiche] = useState('goods'); const [tariff, setTariff] = useState(1); const n = ROI_NICHES.find(x => x.key === niche); const t = ROI_TARIFFS[tariff]; const leadsLo = Math.round(budget / n.hi), leadsHi = Math.round(budget / n.lo); const total = budget + t.price; const cplLo = total / leadsHi, cplHi = total / leadsLo; const frLeads = Math.round(leadsLo / 4); const frCpl = (budget + 25000) / Math.max(frLeads, 1); const summary = `Калькулятор: бюджет ${roiFmt(budget)} ₽, ниша «${n.name}», тариф «${t.name}» → ${leadsLo}–${leadsHi} лидов/мес, ${roiFmt(cplLo)}–${roiFmt(cplHi)} ₽ за лид`; const go = () => { window.FormulaCalc = summary; const me = document.getElementById('roi'); const forms = [...document.querySelectorAll('form.lead-form')]; const below = forms.find(f => f.getBoundingClientRect().top > (me ? me.getBoundingClientRect().top : 0)); const f = below || forms[forms.length - 1]; if (f) window.scrollTo({ top: f.getBoundingClientRect().top + window.scrollY - 120, behavior: 'smooth' }); }; return (
Калькулятор

Сколько лидов даст ваш бюджет на Авито

Прогноз по стоимости контакта из наших кейсов. Точный расчёт под вашу категорию и город — в бесплатном аудите ниши.

setBudget(+e.target.value)} className="roi__range" />
{ROI_NICHES.map(x => )}
{ROI_TARIFFS.map((x, i) => )}

{n.note}. Бюджет площадки оплачивается напрямую в кабинет Авито.

{leadsLo}–{leadsHi}целевых контактов в месяц
Стоимость лида с учётом тарифа{roiFmt(cplLo)}–{roiFmt(cplHi)} ₽
Всего в месяц: бюджет + ведение{roiFmt(total)} ₽
Фрилансер за 25 000 ₽ при том же бюджете~{frLeads} лидов по {roiFmt(frCpl)} ₽

Считаем от диапазона CPL в кейсах и пропорции «фрилансер : система = 1 : 4» из нашей экономики при бюджете 300 000 ₽.

); } const INFO_IMGS = { cikl: ['cikl-5-etapov', 'Цикл работы: анализ, упаковка, масштабирование, удержание, контроль', 'Пять этапов от диагностики до отчётности'], tarify: ['tarify-avito', 'Три тарифа ведения аккаунта на Авито: 50 000, 85 000 и 150 000 ₽ в месяц', 'Состав тарифов'], roi: ['roi-300k-frilanser-vs-my', 'Бюджет 300 000 ₽: 200 лидов у фрилансера против 800 у системы', 'Экономика при одинаковом бюджете'], cpl: ['keysy-cpl', 'Стоимость контакта в кейсах: 115, 254 и 390 ₽', 'Цена лида в трёх нишах'], vs: ['frilanser-konveyer-butik', 'Сравнение: фрилансер, конвейер и бутик', 'Чем отличается системный подход'], problems: ['problemy-kotorye-reshaem', 'Какие проблемы на Авито решаем', 'Боли и решения'], garantii: ['garantii-v-dogovore', 'Гарантии в договоре', 'Что фиксируем юридически'], }; function InfoStrip({ keys, title }) { return (
{title ?

{title}

: null}
{keys.map(k => { const [f, alt, cap] = INFO_IMGS[k]; return (
{alt}
{cap}
); })}
); }