---
Введення в проблему розрахунку match score
Нещодавно в одному з обговорень у Slack команда матчинга підняла питання про якість рекомендацій, які ми надаємо користувачам. Один з наших колег зауважив, що багато користувачів не отримують результати, які відповідають їхнім очікуванням. Це стало для нас сигналом до дії. Ми розуміли, що від точності розрахунку match score залежить не лише користувацький досвід, але й ефективність роботи всієї платформи.
Чому це важливо
Проблема з match score стосувалася не лише команди розробників, але й наших користувачів. Коли користувачі не знаходять підходящі вакансії або кандидатів, вони втрачають інтерес до нашого продукту. Ми почали отримувати негативні відгуки і помітили зниження залученості на сторінках /jobs і /for-candidates. Це стало серйозною перешкодою для зростання нашого сервісу та його популярності на ринку.
Подробиці проблеми
В ході аналізу ми виявили, що поточний алгоритм розрахунку match score не враховує всі необхідні параметри. Наприклад, він не враховував специфічні навички, які користувачі шукали в кандидатах. Один з користувачів надав нам конкретний приклад: він шукав інженера з досвідом у машинному навчанні, але отримував результати, які не відповідали його запиту. Це створювало враження, що система не розуміє потреби користувачів.
Перші спроби вирішення
Ми почали з спроби доопрацювати існуючий алгоритм, додавши кілька нових параметрів. Однак це не дало значного покращення. Ми зіткнулися з тим, що алгоритм став занадто складним і непередбачуваним. Врешті-решт, після кількох ітерацій, ми прийшли до висновку, що потрібно повністю переосмислити підхід до розрахунку match score.
Технічний підхід
Ми вирішили використовувати більш просту і прозору модель, основану на вагах для різних параметрів. Кожному критерію ми присвоїли певну вагу, і розраховували підсумковий score як суму добутків ваг на значення параметрів. Ось приклад коду:
def calculate_match_score(candidate, job):
score = 0
score += candidate.skills * job.required_skills_weight
score += candidate.experience * job.experience_weight
return score
Ця модель дозволила нам гнучко налаштовувати ваги і швидко тестувати різні комбінації, що призвело до значного покращення якості рекомендацій.
Зміни в продукті
Після впровадження нового алгоритму ми помітили помітне покращення в відгуках користувачів. Кількість позитивних відгуків про відповідні пропозиції на сторінках /jobs зросла на 25%. Кандидати почали частіше отримувати підходящі вакансії, і, в свою чергу, компанії стали більш активно використовувати нашу платформу для пошуку талантів. Це позитивно позначилося на показниках залученості користувачів.
Чому ми навчилися
В процесі роботи над проектом ми зробили кілька важливих висновків:
- Простота часто краща за складність. Складні алгоритми можуть призвести до непередбачуваності і труднощів у підтримці.
- Гнучкість у налаштуванні ваг параметрів дозволяє швидко адаптуватися до змін на ринку.
- Важливість зворотного зв'язку від користувачів. Приклади з реального життя допомагають краще зрозуміти, що саме потрібно покращити.
- Тестування різних підходів важливе для знаходження оптимального рішення.
Що це означає для кандидатів
Для кандидатів це означає, що вони отримуватимуть більш релевантні вакансії, які краще відповідають їхнім навичкам і досвіду. Це підвищує шанси на успішне працевлаштування і зменшує кількість часу, витраченого на пошук.
Що це означає для рекрутерів
Рекрутери зможуть знаходити більш підходящих кандидатів, що підвищить ефективність їхньої роботи. Завдяки покращеним рекомендаціям вони зможуть швидше закривати вакансії, що, в свою чергу, позитивно позначиться на їхніх показниках роботи.
Наступні кроки
Хоча ми досягли значних успіхів, ми продовжуємо слідкувати за продуктивністю нового алгоритму. Одна з задач, яку ми хочемо вирішити в найближчому майбутньому, — це інтеграція додаткових даних про користувачів для покращення точності розрахунку. Якби ми могли повернутися назад, ми б приділили більше уваги тестуванню на ранніх етапах розробки, щоб уникнути передчасних висновків. ---