Розробка портала знайомств
Платформа для знайомств — це додаток для пошуку однодумців з алгоритмом підбору пар, чатом і системою безпеки. Технічно: обробка медіа, real-time комунікація, рекомендаційний двигун. Бізнес-модель: freemium з платними функціями (супер-лайки, підвищення профілю, розширені фільтри).
Профіль та медіа
Профіль містить: фотографії (до 9 штук), короткий опис (біо), базові параметри (вік, зріст, освіта, інтереси). Верифікація фото — обов'язкова функція:
- Selfie-verification: користувач робить фото у вказаній позі → ML-модель порівнює з фотографіями профілю (DeepFace, FaceNet)
- Синя галочка «верифіковано» підвищує довіру
Обробка фото: автоматичне визначення обличчя (OpenCV або Cloud Vision API), попередження, якщо немає чіткого обличчя, кроп + конвертація WebP.
Алгоритм підбору
Два підходи:
Свайп (Tinder-модель): користувач бачить профілі по одному, свайпає вправо (лайк) або вліво (пропуск). Матч — обидва лайкнули один одного → чат відкривається.
Рекомендаційна стрічка (Hinge-модель): щоденні кандидати, вибрані алгоритмом. Менше гейміфікації, вища якість.
Фактори ранжування:
- Географічна близькість (PostGIS radius query)
- Сумісність параметрів (вік, інтереси)
- Активність користувача (ELO-подібний рейтинг, враховуючи, хто лайкує)
- Недавня активність (останньо в мережі → вищий рейтинг)
ELO-рейтинг: кожен користувач має внутрішній рейтинг «привабливості». Лайк від користувача з високим рейтингом підвищує твій рейтинг більше, ніж від користувача з низьким (як у шахах).
def update_elo(liker_elo: float, liked_elo: float, mutual: bool) -> tuple:
k = 32
expected_liker = 1 / (1 + 10 ** ((liked_elo - liker_elo) / 400))
delta = k * ((1 if mutual else 0) - expected_liker)
return liker_elo + delta, liked_elo - delta
Real-time чат
Чат відкривається лише при матчі. WebSocket (Socket.io) для real-time доставки повідомлень. Функції:
- Текст, емодзі, GIF
- Прочитано/доставлено (read receipts)
- Індикатор друкування
- Фото (з модерацією перед відображенням)
Безпека та модерація
Платформи знайомств особливо схильні до шахрайства (catfishing, scam):
- Автоматичне виявлення «шахрайських» закономірностей у тексті (посилання на зовнішні сайти, прохання грошей)
- Блокування надсилання зовнішніх посилань у перших N повідомленнях
- Скарги + швидка блокування
- AI-модерація фото (NSFW-детектор)
- Верифікація віку для неповнолітніх
Геолокація та фільтри
Основний фільтр — відстань. PostGIS:
SELECT p.*, ST_Distance(p.location::geography, $user_location::geography) AS dist
FROM profiles p
WHERE p.id != $user_id
AND NOT EXISTS (SELECT 1 FROM swipes WHERE swiper_id = $user_id AND swiped_id = p.id)
AND ST_DWithin(p.location::geography, $user_location::geography, $radius_meters)
AND p.age BETWEEN $min_age AND $max_age
ORDER BY RANDOM() -- + ELO-weighting
LIMIT 20;
Монетизація
- Супер-лайк — виділений сигнал інтересу (N безплатно, більше — за монети)
- Boost — профіль показується більше людям протягом 30 хвилин
- Rewind — повернути останній лівий свайп
- Розширені фільтри — за освітою, зростом, шкідливими звичками
- Unlimited likes (за замовчуванням діє добове обмеження)
- Бачити, хто лайкнув (без матчу)
Stripe Billing для підписок + покупки в додатку через App Store/Google Play (комісія платформ 30%).
Терміни
MVP (профілі, свайпи, матчі, чат, базовий пошук): 4–5 місяців. Повноцінна платформа з ELO, верифікацією, відео-знайомствами, монетизацією, мобільними додатками: 8–14 місяців.







