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 = True activates development features.
  • DEVELOPMENT_MODE = False enables 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_*.json and cache/githubcache_*.json.
  • Appends evaluation rows to resume_evaluations.csv after 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:

  1. Edit config.py directly:

    # config.py
    
    DEVELOPMENT_MODE = False  # disables caching and CSV export
    
  2. 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_MODE flag in config.py to toggle between environments.
  • Production mode (False) disables caching, CSV exports, and verbose logging for stateless operation.
  • Development mode (True) enables cache/ folder usage, resume_evaluations.csv logging, and debug prints.
  • Configure via environment variable DEVELOPMENT_MODE=False for containerized deployments.
  • Key files consuming the flag include score.py, pdf.py, github.py, and evaluator.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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →