How to Configure the Hiring Agent for Production Deployment vs Development Mode
Set DEVELOPMENT_MODE = False in config.py (or export the environment variable) to run the Hiring Agent in stateless production mode, eliminating caching and CSV logging for containerized deployments.
The interviewstreet/hiring-agent repository provides a configurable evaluation pipeline that toggles between interactive development features and optimized production behavior using a single global flag. Understanding how to configure this hiring agent for production deployment versus development mode ensures you maintain performance in serverless environments while preserving debugging capabilities during local experimentation.
The DEVELOPMENT_MODE Configuration Flag
The behavior of the Hiring Agent hinges on a boolean flag defined in [config.py](https://github.com/interviewstreet/hiring-agent/blob/main/config.py).
DEVELOPMENT_MODE = Trueactivates development features.DEVELOPMENT_MODE = Falseenables production mode.
This flag is imported at module load time by the orchestrator and supporting modules, making it essential to set before runtime.
Development vs Production Behavior
When configuring the hiring agent for production deployment versus development mode, the differences impact I/O operations, logging verbosity, and state management.
Development Mode (True):
- Writes intermediate JSON results to
cache/resumecache_*.jsonandcache/githubcache_*.json. - Appends evaluation rows to
resume_evaluations.csvafter each run. - Enables verbose logging and debug console output in
evaluator.py.
Production Mode (False):
- Eliminates caching and CSV export, creating a stateless run.
- Reduces memory footprint and I/O overhead suitable for serverless containers.
- Outputs only the final evaluation to stdout or API response.
Configuring Production Mode
To switch from development to production:
-
Edit
config.pydirectly:# config.py DEVELOPMENT_MODE = False # disables caching and CSV export -
Override via environment variable (recommended for CI/CD):
export DEVELOPMENT_MODE=False python score.py /path/to/resume.pdf
The environment variable must be exported before running any module, as the code evaluates the flag at import time.
Production Deployment Examples
Docker containerization requires the flag to be set in the image or runtime environment to prevent mutable container layers.
Dockerfile snippet:
FROM python:3.11-slim
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir -r requirements.txt
ENV DEVELOPMENT_MODE=False \
LLM_PROVIDER=ollama \
DEFAULT_MODEL=gemma3:4b
CMD ["python", "score.py"]
Docker Compose configuration:
services:
hiring-agent:
image: hiring-agent:latest
environment:
- DEVELOPMENT_MODE=False
- LLM_PROVIDER=ollama
- DEFAULT_MODEL=gemma3:4b
volumes:
- ./resumes:/data
command: ["python", "score.py", "/data/resume.pdf"]
Implementation Details in Source Files
The DEVELOPMENT_MODE flag propagates through specific modules according to the source code.
In [score.py](https://github.com/interviewstreet/hiring-agent/blob/main/score.py), the orchestrator checks the flag to decide whether to write the CSV report and persist cached JSON files.
In [pdf.py](https://github.com/interviewstreet/hiring-agent/blob/main/pdf.py) and [github.py](https://github.com/interviewstreet/hiring-agent/blob/main/github.py), both modules respect the flag when deciding to persist their intermediate data to cache/resumecache_*.json and cache/githubcache_*.json.
In [evaluator.py](https://github.com/interviewstreet/hiring-agent/blob/main/evaluator.py), while the core scoring logic remains constant, the flag controls whether extra debug information is appended to console output.
Summary
- The Hiring Agent uses a single
DEVELOPMENT_MODEflag inconfig.pyto toggle between environments. - Production mode (
False) disables caching, CSV exports, and verbose logging for stateless operation. - Development mode (
True) enablescache/folder usage,resume_evaluations.csvlogging, and debug prints. - Configure via environment variable
DEVELOPMENT_MODE=Falsefor containerized deployments. - Key files consuming the flag include
score.py,pdf.py,github.py, andevaluator.py.
Frequently Asked Questions
What is the default value of DEVELOPMENT_MODE in the hiring agent?
The default value in the repository is DEVELOPMENT_MODE = True, enabling caching and CSV logging to facilitate local experimentation and debugging. You must explicitly set it to False for production use.
Can I toggle between modes without editing config.py?
Yes, you can export the environment variable DEVELOPMENT_MODE=False before starting the application. However, because the flag is evaluated at module import time, you must set the environment variable before running score.py or any other module.
Why does production mode skip caching in pdf.py and github.py?
Production mode skips writing cache/resumecache_*.json and cache/githubcache_*.json to maintain statelessness and reduce I/O overhead, which is critical for serverless or horizontally-scaled container deployments where persistent local storage is not guaranteed.
How does the evaluator.py behavior change between modes?
While the core scoring logic remains identical, evaluator.py adds extra debug information to console output when DEVELOPMENT_MODE is True, whereas production mode suppresses these debug prints to reduce noise and logging costs.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →