Where Are the Jinja Templates for Section Parsing in the Hiring Agent?

The Jinja templates for resume section parsing are located in the prompts/templates directory, loaded at runtime by the TemplateManager class.

The interviewstreet/hiring-agent repository uses a centralized template system to manage LLM prompts for parsing specific resume sections. Each section of a candidate's resume—such as work history, education, and skills—has a dedicated Jinja template that defines the extraction logic. Understanding the location and structure of these Jinja templates for section parsing is essential for customizing the hiring agent's behavior or debugging prompt issues.

Template Directory Structure

All section-specific prompt templates reside in the prompts/templates directory at the repository root. This location is hardcoded as the source directory for the Jinja Environment configured in the template manager.

The repository includes the following template files:

  • basics.jinja – Prompt for extracting contact information and personal details
  • work.jinja – Prompt for parsing employment history and job descriptions
  • education.jinja – Prompt for academic background and qualifications
  • skills.jinja – Prompt for technical and soft skills extraction
  • projects.jinja – Prompt for personal or professional project details
  • awards.jinja – Prompt for honors and recognition entries
  • system_message.jinja – System-level instruction template
  • github_project_selection.jinja – Template for selecting relevant GitHub projects
  • resume_evaluation_criteria.jinja – Evaluation criteria template
  • resume_evaluation_system_message.jinja – System message for resume evaluation

How TemplateManager Loads the Templates

The TemplateManager class in prompts/template_manager.py handles the runtime loading and rendering of these templates. According to the source code, it initializes a Jinja Environment using FileSystemLoader("prompts/templates") to point to the templates directory.

During initialization (lines 21-33 and 38-55 in the source), the manager maps each logical section name to its corresponding filename and pre-loads the templates into memory. This design centralizes all section-specific prompts, making them easy to retrieve programmatically without filesystem lookups during rendering.

Rendering Templates Programmatically

To render a specific section template, instantiate the TemplateManager and call the render_template() method with the section name and required variables.

from prompts.template_manager import TemplateManager

# Initialize the manager (defaults to prompts/templates)

tm = TemplateManager()

# Render the "work" section with resume text

rendered_prompt = tm.render_template(
    "work",
    text_content="John Doe worked at Acme Corp from 2015-2020 as Senior Engineer..."
)

print(rendered_prompt)

To discover available sections without hardcoding names, use the get_available_sections() method:


# List all supported section templates

available = tm.get_available_sections()
print("Supported sections:", available)

Summary

  • Location: All Jinja templates for section parsing reside in prompts/templates/
  • Loader: The TemplateManager class in prompts/template_manager.py initializes a Jinja Environment with a FileSystemLoader pointing to this directory
  • Sections: Ten templates cover resume sections including basics, work, education, skills, projects, and awards, plus system and evaluation templates
  • Runtime: Templates are pre-loaded during TemplateManager initialization (lines 21-55) and rendered via the render_template() method

Frequently Asked Questions

Where are the Jinja templates stored in the hiring-agent repository?

The templates are stored in the prompts/templates directory at the repository root. This path is configured as the source for the FileSystemLoader in the TemplateManager class.

How does TemplateManager load the section templates?

The TemplateManager initializes a Jinja Environment using FileSystemLoader("prompts/templates") and pre-loads all section templates during instantiation. It maintains an internal mapping between logical section names like "work" or "education" and their corresponding .jinja files.

What sections have dedicated Jinja templates?

The repository provides templates for: basics, work, education, skills, projects, awards, system_message, github_project_selection, resume_evaluation_criteria, and resume_evaluation_system_message.

How do I render a specific section template programmatically?

Import the TemplateManager from prompts.template_manager, instantiate it, and call render_template(section_name, **kwargs) with the section identifier and any variables required by the template, such as text_content for the raw resume text.

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 →