Генератор данных резюме создаёт профессиональные профили, которые выглядят как настоящие резюме: имя, контакты, последовательность мест работы, должности, образование, навыки и ожидания по вознаграждению. Такие образцы нужны командам, которые разрабатывают системы отбора кандидатов, парсеры документов и кадровые порталы, и не могут использовать в тестах резюме реальных людей. Сложность здесь не в том, чтобы придумать должность, а в том, чтобы профиль был внутренне непротиворечив: даты не пересекались бессмысленно, уровень соответствовал опыту, а навыки — отрасли. Дальше разберём, какие образцы нужны парсеру, как устроена временная шкала опыта и что стоит проверить в форме кандидата. В конце вы сможете собрать набор, на котором проверки перестанут зависеть от случайно подвернувшегося файла.
Какие образцы нужны системе отбора кандидатов?
Первое, с чем работает система, — разбор входящего документа. Резюме приходят в разных форматах и с разной структурой: где-то разделы названы явно, где-то порядок произвольный, где-то часть сведений вынесена в колонтитул или в таблицу. Парсер должен извлечь из этого набора текста поля и не потерять смысл, и проверять его нужно на разнообразных образцах, а не на одном аккуратном файле.
Второе — сопоставление с вакансией. Система сравнивает навыки, опыт и образование кандидата с требованиями и выдаёт оценку. Если тестовые профили все одинаковы, оценивать нечего: непонятно, различает ли система сильного и слабого кандидата или просто возвращает среднее.
Третье — отображение. Кадровый портал показывает профиль в сокращённом виде, поэтому длинные названия должностей, составные фамилии и нелатинские символы ломают вёрстку. Такие образцы обязательно должны быть в наборе.
Четвёртое — выгрузка и отчётность. Данные кандидата попадают в сводки, где важны корректные категории: отрасль, уровень, регион. Если профиль неполон, отчёт получится бессмысленным, и это тоже проверяется на подготовленных данных. Общий разбор подготовки таких файлов есть в статье про образцы для проверки разбора резюме.
Как устроена временная шкала опыта
Каждое место работы описывается промежутком времени: месяц и год начала, месяц и год окончания, а для текущего места — признак того, что оно продолжается. Месяц обязателен, потому что год без месяца не позволяет посчитать длительность и увидеть пересечения. Форма, которая просит только годы, теряет информацию и делает проверку менее точной.
Вторая часть правила — непрерывность. Между двумя местами работы может быть перерыв, и он бывает законным: человек учился, занимался семьёй, искал работу. Система не должна считать любой перерыв признаком проблемы, но должна уметь его посчитать и показать. Ошибка здесь обходится дорого, потому что влияет на решение о человеке.
Третья часть — пересечения. В одном месяце человек может завершать прежнее место и начинать новое, и это нормально. Полное совпадение двух продолжительных периодов тоже возможно, если речь о совместительстве, но выглядит подозрительно и стоит отдельного случая в наборе.
Четвёртая часть — пределы. Дата начала не может быть раньше разумного возраста начала карьеры, а дата окончания не может лежать в будущем или предшествовать началу. Проверка таких границ ловит как ошибки ввода, так и дефекты разбора, когда парсер путает месяц и год местами. Подробный разбор правил приведён в статье про временную шкалу опыта работы.
Почему должности должны соответствовать отрасли?
Должность не существует сама по себе: у неё есть отрасль, уровень и типичный набор обязанностей. Если в профиле указана техническая должность, а навыки относятся к бухгалтерии, система сопоставления сделает неверный вывод, и тест это не заметит, потому что проверяет формат, а не смысл.
Второй момент — уровень. Одно и то же название в разных компаниях означает разный объём ответственности, поэтому полезно задавать уровень явно: начинающий, средний, старший, руководящий. Тогда сравнение становится осмысленным, а профиль — правдоподобным.
Третий — последовательность. Карьера развивается: должности сменяются в сторону роста или смены направления, но не хаотично. Профиль, где за руководящей позицией следует стажёрская, выглядит неправдоподобно и может запутать правила оценки. Это полезный негативный случай, но он должен быть помечен как намеренный. О соответствии должностей и отраслей рассказано в материале про должности по отраслям.
Четвёртый — перевод должности. При разборе резюме на другом языке система может хранить как исходное название, так и нормализованное. Оба значения полезны, и тестовый набор должен содержать случаи, когда они различаются.
Как описывать образование и квалификацию
Запись об образовании содержит учебное заведение, уровень программы, направление и годы обучения. Уровни отличаются в разных странах: то, что называется бакалавриатом в одной системе, может называться иначе в другой, и жёсткое сопоставление по названию приводит к ошибкам.
Второе, что стоит учесть, — незавершённое образование. Человек может учиться сейчас или прервать обучение, и это тоже допустимое состояние. Форма должна различать завершённую и незавершённую программу, иначе она либо отсечёт корректные записи, либо запишет неверный статус.
Третье — дополнительные свидетельства: профессиональные сертификаты, лицензии, курсы. У них есть срок действия, орган выдачи и номер, и они ведут себя как обычные документы с ограниченным сроком. Истечение срока не делает запись неверной, но меняет её статус. О типах таких записей рассказывает статья про образование и учёные степени.
Четвёртое — годы обучения и годы работы пересекаются законно, когда человек учился и работал одновременно. Проверка, которая считает любое пересечение ошибкой, будет отвергать корректные профили, и в наборе такой случай обязателен.
Что делать с навыками, уровнями и зарплатой
Навык описывается названием и уровнем владения. Простое перечисление без уровня делает профиль плоским: непонятно, владеет человек инструментом поверхностно или профессионально. Уровни полезно задавать по одной шкале для всего набора, иначе сравнение кандидатов превращается в угадывание.
Второе — группировка. Навыки относятся к категориям: языки программирования, инструменты, языки общения, отраслевые умения. Категории нужны для поиска и отчётов, и генератор должен их заполнять. Разбор схемы приведён в статье про классификацию навыков.
Третье — ожидания по вознаграждению. Здесь важны три части: сумма, валюта и период. Сумма без валюты бессмысленна, а без указания периода непонятно, речь о месяце или о годе. Форма должна хранить все три значения и не додумывать их по умолчанию, потому что в международном наборе умолчание почти всегда неверно. Об этом подробно говорится в материале про зарплату, валюту и период.
Четвёртое — разумность диапазона. Сумма, не соответствующая уровню и отрасли, выглядит неправдоподобно, но как тестовый случай полезна: она проверяет, есть ли у системы проверка на границы и предупреждения.
Какие случаи стоит проверить в форме кандидата?
Начните с полноты: профиль с заполненными всеми разделами и профиль, где заполнена только часть. Форма должна корректно показывать оба и не требовать обязательных полей там, где они необязательны.
Затем проверьте временную шкалу. Добавьте случай с перерывом в несколько месяцев, случай с пересечением двух мест работы, случай с текущим местом без даты окончания и случай, где дата окончания предшествует началу. Каждый из них проверяет отдельную ветку логики.
Дальше проверьте текст. Длинная фамилия, составная фамилия, дефис, апостроф, диакритика и нелатинские символы — всё это ломает отображение и поиск. Отдельно проверьте названия учебных заведений и организаций с длинными официальными формами.
После этого проверьте поиск и фильтры. Отбор по навыку, по отрасли, по уровню и по региону должен возвращать ожидаемое подмножество. Если тестовые профили различаются, это видно сразу, а на однотипных данных ошибка фильтра останется незамеченной.
И последнее — проверьте выгрузку. Данные кандидата уходят в отчёты и в интеграции, и там важно, чтобы значения не обрезались и не теряли знаки. Список типовых случаев для кадровой формы собран в статье про проверки формы найма.
Как проверять разбор файлов в разных форматах?
Резюме приходят не в одном виде, и разбор должен справляться с каждым. Самый простой случай — структурированный документ с явными заголовками разделов. Он разбирается почти всегда, и проверять на нём что-либо бессмысленно: успех ничего не доказывает.
Сложнее дело с документами, где структура задана оформлением, а не текстом. Раздел может быть выделен жирным шрифтом, размером или отступом, а заголовка как такового нет. Такой файл нужно готовить отдельно, потому что ошибки разбора проявляются именно на нём, а не на аккуратном образце.
Ещё сложнее с двухколоночной вёрсткой. Разбор, который читает текст линейно, склеит левую и правую колонки и получит бессмысленный набор строк. Проверка должна показать, распознаны ли разделы правильно и не перемешались ли они между собой.
Отдельный случай — таблицы внутри документа. Навыки, языки и периоды работы часто оформлены таблицей, и текст из неё извлекается в порядке, который не совпадает с визуальным. Это классическая причина, по которой опыт кандидата оказывается в разделе об образовании, а годы работы теряют привязку к месту.
Наконец, текст без оформления, скопированный в поле ввода или пришедший в теле письма. Здесь нет ни структуры, ни подсказок, и всё держится на распознавании по содержанию. Такой случай тоже должен быть в наборе, потому что именно он показывает, насколько разбор устойчив к реальной работе.
Практический вывод — набор файлов важнее набора полей. Один и тот же профиль стоит сохранить в нескольких видах и прогнать через разбор целиком, сравнивая результат с ожидаемым. Любое изменение в разборе документов должно сопровождаться полным прогоном этого набора: регрессии здесь появляются незаметно, потому что результат выглядит правдоподобно даже при частично потерянных данных.
Границы: синтетическое резюме и настоящие люди
Профили, которые выдаёт генератор данных о карьере, синтетические. Имена, места работы, учебные заведения, навыки и суммы построены по правилам и согласованы между собой, но за ними не стоит ни один реальный человек.
Из этого следуют границы. Такое резюме нельзя предъявлять как свои сведения о себе, нельзя использовать, чтобы получить работу или пройти отбор вместо другого человека, и нельзя выдавать за документ реального специалиста. Проверка по внешним источникам такую запись не подтвердит, потому что подтверждать нечего.
Отдельно стоит помнить о сроках хранения. Даже синтетические профили не стоит держать в тестовом окружении дольше нужного, а сведения реальных кандидатов не должны попадать в тесты ни под каким видом. О том, как с этим обстоят дела в кадровых системах, рассказано в материале про хранение кадровых данных.
Что делать дальше
Возьмите один сценарий отбора и соберите под него набор: несколько сильных и несколько слабых профилей, случай с перерывом в стаже, случай с совместительством, профиль с неполными данными и профиль с длинными нелатинскими названиями. Затем проверьте, что система действительно различает кандидатов, а не возвращает одинаковую оценку всем. После этого переведите остальные сценарии на тот же набор и зафиксируйте его в репозитории вместе с пометкой, что все записи синтетические и не относятся ни к одному реальному человеку.