DEV Community

Cover image for 🎯 AI Resume Ranking System
Vivek V. Subscriber for AWS Community Builders

Posted on • Originally published at vivek-aws.Medium

🎯 AI Resume Ranking System

Revolutionizing Hiring with Postmark and Amazon Bedrock Nova Premier Model

This is a submission for the Postmark Challenge: Inbox Innovators.

What I Built

I've created an enterprise-grade AI-powered resume analysis system that automatically processes resume attachments from email using Postmark's inbound email parsing capabilities. The system analyzes resumes using Amazon Bedrock's Nova Premier AI model and provides detailed insights through a beautiful web dashboard with advanced search and filtering capabilities.

The system transforms the hiring process by:

  • Automatically extracting and analyzing resumes from email attachments
  • Providing AI-powered scoring and categorization of candidates
  • Offering a comprehensive dashboard with powerful search and filtering
  • Sending email notifications with analysis results via Postmark

(Note: The resumes and names shown in the demo and images are fictional)

AI Resume Ranking - Key Benefits

Live Demo

🔑 Login Credentials:

• URL: http://postmark-demo.viaan.tech
• Username: postmark-demo
• Email: [email protected]
• Password: DemoUser123

For a limited time, you can explore my live, fully functional serverless AWS application at the above URL, by sending an email with a resume attachment to [email protected] (Remember to replace with your Postmark-configured email when testing it on your own AWS infrastructure).

Testing Instructions

  1. Email Testing: Send an email with a resume PDF attachment to the configured Postmark email address
  2. Sample Resumes: Use the provided sample fictional resumes in the /samples directory
  3. Receive Notifications: You'll receive an email notification with the analysis results. You will not be able to receive the Postmark's rich HTML email when using my demo site, since the email is configured to my .tech domain. However, in the section below, I have provided an email screenshot how this AI analysis email looks like.
  4. Dashboard Access: View all analyzed resumes at https://your-amplify-url.amplifyapp.com

Screenshots

UI1

UI2

UI3

Enterprise-grade serverless architecture with AI-powered resume analysis and email notifications

Code Repository

GitHub Repository Link

How I Built It

Tech Stack

  • Frontend: HTML5, Tailwind CSS, Alpine.js (responsive dashboard hosted on AWS Amplify)
  • Backend: AWS Serverless (Lambda, API Gateway, AWS AppSync)
  • API: GraphQL with AWS AppSync
  • Authentication: AWS Cognito
  • Database: Amazon DynamoDB
  • Storage: Amazon S3
  • AI/ML: Amazon Bedrock Nova Premier
  • Email Processing: Postmark for inbound parsing and outbound notifications
  • Infrastructure as Code: AWS CDK (TypeScript)

Postmark Integration

Postmark works seamlessly with corporate email systems, making it an ideal solution for businesses of all sizes, but it didn't work with my gmail account. After reaching out to the DEV team about this challenge, they were kind enough to provide me with a complimentary DEV++ membership for one year that includes 2 free domains (.tech and .fun), which helped me test this integration thoroughly for this blog post.

Note: While your Postmark account is in test mode, you can only send and process 100 emails, which is sufficient for testing but requires an upgrade for production use.

The system leverages Postmark in two powerful ways:

1. Inbound Email Processing

I configured Postmark's inbound webhook to trigger my AWS API Gateway endpoint whenever an email with a resume attachment arrives. The webhook payload is processed by a Lambda function that:

  • Extracts the resume attachment
  • Stores it in Amazon S3
  • Triggers the AI analysis process

https://your-api-gateway-id.execute-api.us-east-1.amazonaws.com/prod/webhook

Domain Configuration

Configuration of Inbound Domain Forwarding for mail.viaan.tech

I configured Postmark as my email server for the subdomain mail.viaan.tech by adding the appropriate MX records as per Postmark documentation.

Ading MX record

This setup allows the system to receive emails at addresses like [email protected] and process them automatically through the Postmark webhook.

2. Outbound Notifications

After the AI analyzes each resume, the system sends a beautifully formatted email notification using Postmark's API:

Automated email notification with AI resume analysis received within seconds of sending a resume to the configured email address

Automated email notification


def send_postmark_email(analysis):
    """Send email notification via Postmark API"""
    try:
        candidate_name = analysis.get('candidate_name', 'Unknown Candidate')
        overall_score = analysis.get('overall_score', 0)

        html_body = create_html_email_body(analysis)

        email_data = {
            "From": FROM_EMAIL,
            "To": NOTIFICATION_EMAIL,
            "Subject": f"🎯 Resume Analysis Complete: {candidate_name} (Score: {overall_score})",
            "HtmlBody": html_body,
            "TextBody": f"Resume analysis complete for {candidate_name}. Overall Score: {overall_score}. View full analysis in your dashboard.",
            "MessageStream": "outbound"
        }

        headers = {
            "Accept": "application/json",
            "Content-Type": "application/json",
            "X-Postmark-Server-Token": POSTMARK_SERVER_TOKEN
        }

        response = requests.post(POSTMARK_API_URL, json=email_data, headers=headers)
    except Exception as e:
        logger.error(f"Error sending email: {str(e)}")
        return False

Enter fullscreen mode Exit fullscreen mode

Processing Flow

  1. Email with resume attachment sent to monitored Postmark address
  2. Postmark processes email and triggers webhook to API Gateway
  3. AWS Lambda extracts attachment and stores in S3
  4. S3 processor detects new file and triggers analysis
  5. Amazon Bedrock (Nova Premier) analyzes resume content
  6. Results stored in DynamoDB and displayed in dashboard
  7. Notification email sent via Postmark with analysis summary

Key Features

AI Analysis Capabilities

  • Contact Information: Name, email extraction
  • Technical Skills: Comprehensive skill identification
  • Experience Assessment: Level and years calculation
  • Fit Analysis: High/Medium/Low fit assessment
  • Scoring: 0-100 overall candidate score
  • Strengths: Top 3-5 candidate strengths
  • Recommendations: Improvement suggestions

Dashboard Features

  • Real-time Search: Search across names, skills, experience
  • Score Range: Filter by AI score (0-100)
  • Experience Level: Entry, Junior, Mid, Senior, Lead
  • Years of Experience: Min/Max range filtering
  • Skills Matching: Comma-separated skill requirements
  • Multiple Views: Grid and table formats with sorting options
  • Export: CSV download of filtered results

Challenges and Solutions

The biggest challenge was creating a seamless flow from email receipt to AI analysis. Postmark's webhook reliability and comprehensive payload made this possible, allowing me to extract attachments and trigger the analysis pipeline without any manual intervention.

Another challenge was cost management at scale. I implemented several optimizations:

  • S3 Intelligent Tiering for storage
  • DynamoDB On-Demand pricing
  • Lambda memory optimization
  • CloudWatch monitoring for unused resources

Cost Considerations

For small to medium businesses (~5,000 MAU):

  • Amazon Bedrock: ~$20.00 (1,000 resumes)
  • Lambda: ~$1.25 (10,000 invocations)
  • S3: ~$0.50 (5GB storage)
  • DynamoDB: ~$2.50 (on-demand)
  • AppSync: ~$4.00 (1 million requests)
  • Amplify: ~$3.00 (moderate traffic)
  • Cognito: ~$2.75 (5,000 MAU)
  • CloudWatch: ~$2.00 (moderate logging)
  • Total: ~$33.00/month

For enterprise scale (~50,000 MAU), costs scale to approximately $300/month with higher usage across all services.

Conclusion

This project demonstrates the power of combining Postmark's email processing capabilities with Amazon Bedrock Nova Model to create a seamless, automated workflow that transforms the hiring process. By leveraging Postmark's inbound email parsing, I was able to create a system that eliminates manual resume processing and provides instant, AI-powered insights to hiring managers.

The serverless architecture ensures the system can scale from small businesses to enterprise needs while maintaining cost efficiency and high performance.


Transform your hiring process with AI-powered automation, advanced analytics, and infinite scalability

Top comments (3)

Collapse
 
onlyfave profile image
Fave😌✨

This is brilliant! 🙌
The Postmark + Bedrock Nova Premier combo is innovative, and the way you tied it all together with serverless and real-time AI is chef’s kiss.

As someone aspiring to be an AWS Community Builder, this definitely pushes me to level up. Bookmarked for inspo and learning! 💻⚡

Collapse
 
webgamma profile image
Webgamma

This is seriously impressive. You tackled every stage of the resume pipeline from email ingestion to AI analysis to clean dashboard delivery. Love how you used Postmark’s inbound parsing with AWS’s full serverless stack. It’s a smart, scalable setup. The way you tied in Bedrock’s Nova model for scoring and insights makes this feel like something real companies could plug into tomorrow.

Also appreciate the transparency around cost and the fallback you mentioned with Gmail. Super thoughtful build all around. Definitely bookmarking this to dissect later.

Collapse
 
nathan_tarbert profile image
Nathan Tarbert

growth like this is always nice to see, but sometimes i wonder if more ai in hiring could miss out on the real vibe a person brings you think tech can ever really capture that or nah

Some comments may only be visible to logged-in visitors. Sign in to view all comments.