This repository demonstrates three different approaches to building AI-powered HR resume evaluation systems using AWS services. All implementations provide comprehensive candidate assessment including resume parsing, skills analysis, gap identification, candidate rating, and interview preparation.
A workflow-based approach using AWS Step Functions to orchestrate multiple specialized Lambda functions, each handling a specific aspect of resume evaluation.
A multi-agent AI approach using Amazon Bedrock Agents with collaborative AI agents that work together to provide comprehensive resume evaluations.
A natural collaboration approach using Strands Agents SDK where specialized agents communicate in natural language to provide adaptive, comprehensive resume evaluations.
An enterprise-grade approach using Amazon Bedrock AgentCore Runtime to host Strands agents with enhanced security, observability, and scalability features.
- Automated Resume Processing - Upload resumes to S3 and get automatic evaluations
- Comprehensive Analysis - Skills assessment, experience evaluation, and education review
- Gap Identification - Identifies missing skills and experience gaps
- Candidate Rating - Numerical scoring (1-5 scale) with detailed justification
- Interview Preparation - Generates structured interview questions and talking points
- Structured Data Storage - All results stored in DynamoDB with consistent schema
All implementations provide:
- Resume Parsing - Extract structured information from resume text
- Skills Analysis - Identify technical and soft skills
- Experience Assessment - Evaluate relevant work experience
- Education Review - Assess educational background and certifications
- Job Matching - Compare candidate profile against job requirements
- Gap Analysis - Identify areas where candidate may need development
- Candidate Rating - Numerical score with strengths and weaknesses
- Interview Notes - Structured questions and areas to explore
- Amazon Bedrock - AI/ML models for natural language processing
- AWS Lambda - Serverless compute for processing logic
- Amazon S3 - Document storage and event triggers
- Amazon DynamoDB - NoSQL database for evaluation results
- AWS IAM - Identity and access management
- AWS Step Functions - Workflow orchestration
- Multiple Lambda Functions - Specialized processing steps
- Amazon Bedrock Agents - Multi-agent AI collaboration
- Agent Collaboration - Supervisor-collaborator pattern
- Strands Agents SDK - Natural language agent collaboration
- Multi-Agent Swarm - Dynamic agent coordination
- Custom Tools - Specialized HR evaluation tools
- 15-Minute Processing - Extended timeout for comprehensive evaluations
- Structured JSON Output - Consistent data format across implementations
hr-agents/
βββ README.md # This file
βββ stepfunctions-agent/ # Step Functions implementation
β βββ README.md # Step Functions specific documentation
β βββ template.yaml # SAM template
β βββ deploy.sh # Automated deployment script
β βββ functions/ # Lambda function code
β βββ statemachine/ # Step Functions definition
βββ bedrock-agent/ # Bedrock Agent implementation
β βββ README.md # Bedrock Agent specific documentation
β βββ template-agents-phase1.yaml # Bedrock Agents template
β βββ template-lambda.yaml # Lambda functions template
β βββ deploy.sh # Automated deployment script
β βββ functions/ # Lambda function code
βββ strands-lambda-agent/ # Strands Agent implementation
β βββ README.md # Strands Agent specific documentation
β βββ template-infrastructure.yaml # Infrastructure resources (S3, DynamoDB)
β βββ template-lambda.yaml # Lambda functions and layer template
β βββ deploy.sh # Automated deployment script
β βββ create_lambda_package.py # Lambda packaging with proper layer structure
β βββ functions/ # Lambda function code
βββ strands-agentcore-agent/ # Strands AgentCore implementation
β βββ README.md # Strands AgentCore specific documentation
β βββ template-infrastructure.yaml # Infrastructure resources
β βββ hr_agent.py # Main AgentCore agent code
β βββ s3_processor.py # S3 event processor Lambda
β βββ deploy.sh # Automated deployment script
β βββ requirements.txt # Python dependencies
βββ samples/ # Sample data for testing
βββ jobs/ # Sample job descriptions
βββ resumes/ # Sample resumes
cd stepfunctions-agent
./deploy.sh
python upload_samples.py
cd bedrock-agent
./deploy.sh
cd strands-lambda-agent
./deploy.sh
cd strands-agentcore-agent
./deploy.sh
- AWS CLI configured with appropriate permissions
- AWS SAM CLI installed
- Python 3.11 or later
- Access to Amazon Bedrock models in your AWS region
- Deploy your chosen implementation
- Upload job descriptions to the S3 bucket under
jobs/
prefix - Upload resumes to the S3 bucket under
resumes/
prefix - Monitor processing through CloudWatch logs
- View results in the DynamoDB candidates table
All four implementations produce structured evaluation data including:
- Candidate Information - Name, contact details, resume summary
- Skills Assessment - Programming languages, frameworks, tools
- Experience Analysis - Years of experience, relevant roles, achievements
- Education Evaluation - Degrees, institutions, alignment with role
- Rating & Recommendation - Numerical score and hiring recommendation
- Interview Preparation - Suggested questions and areas to explore
- CloudWatch Logs - Detailed execution logs for all components
- DynamoDB Console - View processed candidate evaluations
- Step Functions Console - Visual workflow execution (Step Functions implementation)
- Bedrock Console - Agent invocation traces (Bedrock Agent implementation)
- Resume data contains PII - ensure proper encryption and access controls
- Use IAM roles with least-privilege access
- Enable CloudTrail for audit logging
- Consider VPC endpoints for private communication
- Monitor Bedrock token usage and optimize prompts
- Use appropriate Lambda memory settings
- Consider reserved capacity for high-volume DynamoDB usage
- Implement lifecycle policies for S3 storage
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License
Choose Your Implementation:
- Step Functions for complex workflows with detailed monitoring
- Bedrock Agents for AI-native multi-agent collaboration
- Strands Lambda for natural language agent collaboration with maximum flexibility
- Strands AgentCore for enterprise-grade agent hosting with enhanced security and observability
All four approaches provide identical functionality with different architectural patterns! Read my full article here