# HireMike

Haris Muhibić wrote the stack decision and the first version of HireMike, an AI voice-interview platform for small businesses, built for InProd.

- Role: Founding architect and engineer (contract)
- When: March – August 2026
- Status: Live
- Stack: Python, FastAPI, LiveKit Agents, Deepgram, OpenAI, Cartesia, Next.js, Postgres, Celery, Kubernetes
- Link: [hiremike.cc](https://www.hiremike.cc)

## The problem

Small businesses that hire one to five people a year can't afford enterprise interview tools, and they don't have time to run first-round interviews themselves. HireMike runs a live, spoken first interview, then screens and scores candidates against criteria the employer sets.

## Choosing the stack

Before writing code I compared four voice-agent approaches: a self-hosted video and voice bridge, LiveKit Agents, Daily with Pipecat, and an all-in-one speech-to-speech API. I scored them on cost per interview minute at small-business volumes, delivery risk, latency, data residency, operations and lock-in. The cascaded pipeline (speech-to-text, then LLM, then text-to-speech) cost well under half as much per minute as speech-to-speech.

## What I built

- **The first commit and the core:** session orchestration, the real-time voice gateway, artifact storage and post-processing.
- **The candidate interview front end.**
- **In one long day, five phases:** Postgres and auth, the employer dashboard, job management, the candidate portal, CV screening, assessment, billing events and scheduling.
- **CV screening:** structured extraction, then per-criterion scoring, with the reasoning shown for each score.
- **Later:** an interviewer whose persona, voice and avatar the employer configures. Settings are snapshotted per interview so they stay consistent across reconnects. Also company-wide 2FA policies and passkeys.

## Hardening

I treated CVs, transcripts and model output as untrusted input:

- Untrusted input is clearly fenced off, and control tokens are removed from candidate speech.
- Criterion scores are clamped, and totals are recomputed from the employer's configuration, never trusted from the model.
- Interviews can be resumed after a disconnect, with a cap on attempts.
- Background jobs are replay-safe, so a retry never bills twice or sends a duplicate invite.

## Credit

The evaluation and simulation harness, the conduct policy and the animated avatar were built by other engineers on the team.

---
Haris Muhibić · chern0.dev · haris@chern0.dev · Book a call: https://calendar.app.google/qiN9zJrS5gSqQPky8
