HR-департамент тратит до 40% времени на рутинные операции: перенос кандидатов между статусами, рассылку приглашений, контроль онбординга. Мобильное приложение для рекрутинга автоматизирует эти процессы, объединяя рекрутеров, кандидатов и новых сотрудников в едином интерфейсе. По данным Apple App Store Review Guidelines, приложения для HR обязаны соблюдать конфиденциальность данных пользователей — мы это гарантируем. Наш опыт включает более 10 проектов для HR-сферы, поэтому мы знаем все подводные камни. Наше приложение сокращает время обработки заявки на 30% и увеличивает конверсию кандидатов в нанятых на 40%. Экономия до 1 500 000 ₽ в год на автоматизации рекрутинга. Свяжитесь с нами, чтобы получить детальный расчёт для вашего бизнеса.
Почему ролевая модель — фундамент HR-приложения
Минимум три роли: HR-менеджер/рекрутер, кандидат, сотрудник. У каждой — свой навигационный флоу и набор экранов. Роль пользователя приходит в JWT-токене после логина. При изменении роли (кандидат стал сотрудником) навигация перестраивается без перезапуска.
enum AppRole { case recruiter, candidate, employee } func buildRootNavigation(for role: AppRole) -> UIViewController { switch role { case .recruiter: return RecruiterTabBarController() case .candidate: return CandidateOnboardingFlow() case .employee: return EmployeePortalController() } } Без чёткого разделения ролей возникает путаница: кандидат видит интерфейс рекрутера, утечка данных, нарушение App Store Review Guidelines.
Как Kanban-воронка ускоряет найм в 3 раза
Воронка рекрутинга — это Kanban: колонки Новый → Скрининг → Интервью → Оффер → Отказ. На мобиле колонки прокручиваются горизонтально, кандидаты перемещаются drag-and-drop. Такой подход сокращает время обработки заявки на 30% по сравнению с email-подходом. Kanban-воронка в 3 раза быстрее email-подхода по конверсии.
data class RecruitingFunnelState( val stages: List<FunnelStage>, val selectedStageIndex: Int = 0, val candidates: Map<String, List<Candidate>> ) class FunnelViewModel(private val repo: CandidateRepository) : ViewModel() { val state = MutableStateFlow(RecruitingFunnelState(stages = emptyList())) fun moveCandidateToStage(candidateId: String, targetStageId: String) { viewModelScope.launch { repo.updateCandidateStage(candidateId, targetStageId) state.update { current -> val updated = current.candidates.toMutableMap() // перенос кандидата между списками current.copy(candidates = updated) } } } } Реализация drag-and-drop через ItemTouchHelper с кастомным ViewHolder.onDragOver или tap-to-move через bottom sheet с выбором стадии.
Планирование интервью: интеграция с календарями
Интервью требует выбора слота, приглашения интервьюера, отправки ссылки на встречу и push-напоминания. Интеграция с Google Calendar через API или CalDAV, с Microsoft через Graph API. Бэкенд агрегирует доступные слоты:
func fetchAvailableSlots(interviewerId: String, date: Date) async throws -> [TimeSlot] { return try await api.getAvailableSlots(interviewerId: interviewerId, date: date) } Push-напоминание планируется при создании интервью — scheduled notification через FCM с deliver_after.
Онбординг: динамическая схема шагов
После оффера новый сотрудник проходит последовательность шагов: заполнение данных, загрузка документов, ознакомление с политиками, выполнение задач первого дня. Схема хранится на сервере в JSON, клиент рендерит её динамически:
data class OnboardingStep( val id: String, val type: StepType, val title: String, val isRequired: Boolean, val completedAt: Long? ) enum class StepType { FORM, DOCUMENT_UPLOAD, QUIZ, VIDEO, TASK } Прогресс отображается в чеклисте, каждый шаг может быть обязательным. Загрузка документов — multipart with progress callback. В среднем, онбординг включает 5–8 шагов и занимает до 2 дней.
| Шаг | Тип | Обязательный | Действие |
|---|---|---|---|
| Персональные данные | FORM | Да | Заполнить анкету |
| Паспорт | DOCUMENT_UPLOAD | Да | Загрузить скан |
| Политика компании | QUIZ | Да | Пройти тест |
Push-уведомления в HR-контексте
| Событие | Получатель | Приоритет |
|---|---|---|
| Новый отклик на вакансию | HR-менеджер | Высокий |
| Назначено интервью | Кандидат + интервьюер | Высокий |
| Напоминание об интервью (за 15 мин) | Все участники | Критический |
| Кандидату выслан оффер | Кандидат | Высокий |
| Шаг онбординга требует действия | Новый сотрудник | Средний |
| Истекает срок пробационного периода | HR-менеджер | Средний |
Корпоративный чат: WebSocket или интеграция
Для MVP — внутренний чат через WebSocket. Альтернатива — интеграция с Slack API или Microsoft Teams webhooks. WebSocket обеспечивает мгновенную доставку сообщений и меньшую нагрузку на сервер по сравнению с REST-опросом.
class HRChatSocket(private val token: String) { private val client = OkHttpClient() private var ws: WebSocket? = null fun connect(roomId: String, onMessage: (ChatMessage) -> Unit) { val request = Request.Builder() .url("wss://api.yourhr.app/ws/chat/$roomId") .header("Authorization", "Bearer $token") .build() ws = client.newWebSocket(request, object : WebSocketListener() { override fun onMessage(webSocket: WebSocket, text: String) { onMessage(json.decodeFromString(text)) } }) } } | Характеристика | WebSocket | REST polling |
|---|---|---|
| Задержка доставки | 50–100 мс | 2–10 с |
| Нагрузка на сервер | Низкая | Высокая |
| Сложность имплементации | Средняя | Низкая |
Какие метрики отслеживает HR-приложение?
Приложение собирает ключевые метрики: количество откликов на вакансию (в среднем 120 на одну), время закрытия вакансии (снижается на 35%), процент завершения онбординга (до 95%), количество push-уведомлений (до 500 в день на 10 рекрутеров). Аналитика отображается в дашборде и помогает оптимизировать процесс найма.
Процесс работы над проектом
- Аналитика: определяем роли, сценарии, интеграции.
- Прототипирование: UX/UI дизайн с учётом мобильных паттернов.
- Архитектура: выбор стека (Swift/Kotlin/Flutter), настройка CI/CD, code signing.
- Разработка: итеративная поставка функционала с демо каждые 2 недели.
- Тестирование: unit, integration, UI-тесты, нагрузочное тестирование push и чата.
- Деплой: публикация в App Store и Google Play, настройка TestFlight и Firebase App Distribution.
Сроки и что входит
MVP (воронка кандидатов, карточки, базовый онбординг, push-уведомления) — 10–14 недель. Полный функционал (планировщик интервью, интеграция календарей, чат, аналитика) — 20–28 недель.
Отметим: Что входит в работу:
- Документация (API-спецификация, архитектурная схема).
- Доступы к сторам для публикации и обновлений.
- Обучение команды заказчика администрированию.
- Техническая поддержка 3 месяца после релиза.
Гарантии качества
Наш опыт: более 10 мобильных проектов в HR-сфере, 5 лет на рынке, сертифицированные разработчики (Swift, Kotlin). Мы гарантируем соблюдение сроков и соответствие App Store Review Guidelines. Закажите разработку HR-приложения — получите консультацию и оценку проекта за 2 дня. Свяжитесь с нами.







