HR-департамент тратит до 40% времени на рутинные операции: перенос кандидатов между статусами, рассылку приглашений, контроль онбординга. Мобильное приложение для рекрутинга автоматизирует эти процессы, объединяя рекрутеров, кандидатов и новых сотрудников в едином интерфейсе. По данным Apple App Store Review Guidelines, приложения для HR обязаны соблюдать конфиденциальность данных пользователей — мы это гарантируем. Наш опыт включает более 10 проектов для HR-сферы, поэтому мы знаем все подводные камни. Наше приложение сокращает время обработки заявки на 30% и увеличивает конверсию кандидатов в нанятых на 40%. Экономия до $14k–20k в год на автоматизации рекрутинга. Свяжитесь с нами, чтобы получить детальный расчёт для вашего бизнеса.
Почему ролевая модель — фундамент 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 дня. Свяжитесь с нами.







