HBHuseyin BozkurtContact Me
All projects

Project

AI-Powered Resume & Job Matching Platform

An AI-powered resume and job matching platform using Next.js, NestJS, PostgreSQL, TypeScript, LLM workflows, AWS ECS, RDS, Docker, ALB, Terraform, Amplify, and GitHub Actions.

ProductIn ProgressInternal OnlySolo BuilderEnd-to-End OwnerAnonymizedMay 2026

Motivation

After experiencing the repetitive nature of job applications firsthand, I wanted to build a tool that could reduce friction, provide clearer insights, and help applicants make better decisions.

Problem

Traditional job application workflows are manual, time-consuming, and heavily dependent on guesswork, making it difficult to evaluate job fit and tailor resumes efficiently without sacrificing privacy.

Constraints

  • High LLM operating costs, requiring careful orchestration and selective use of AI-generated analysis.
  • A crowded market with well-established competitors, making differentiation and clear user value essential.
  • Privacy concerns around sensitive career data, limiting reliance on third-party AI providers and motivating support for local models.
  • Variable quality and structure of job descriptions and resumes, making consistent matching difficult.
  • Long-running AI tasks and unpredictable response times, requiring queue-based processing and failure handling mechanisms.
  • Balancing analysis depth with user experience, ensuring useful insights without excessive latency or cost.

Contributions

Product

Defined the product vision and identified the problem space through firsthand experience.

Architecture

Designed the overall system architecture and technical approach.

Frontend

Built both the frontend and backend applications end-to-end.

Backend

Designed and developed the PostgreSQL database schema and APIs.

Infrastructure

Implemented CI/CD pipelines using GitHub Actions.

Testing

Established logging, error handling, and monitoring strategies for AI workflows.

Delivery

Managed testing, deployment, iteration, and ongoing product improvements independently.

Key Decisions

Where the project shows engineering judgment: alternatives, selected approach, and rationale.

Local-First AI Processing

Context

The platform required repeated resume analyses and job matching iterations, especially during active job searches. Frequent AI usage risked becoming expensive and involved handling sensitive career data.

Selected Approach

Adopted a local-first LLM strategy during development and routine usage.

Rationale

Reduced per-request AI costs, enabled unrestricted experimentation, and kept sensitive resume data under direct control rather than relying exclusively on third-party providers.

Asynchronous AI Workflows

Context

Resume reviews and report generation could take a significant amount of time depending on model performance and workload.

Selected Approach

Implemented queue-based background processing for long-running AI tasks.

Rationale

Improved reliability, supported retries and failure handling, and prevented the user interface from being blocked by slow AI operations.

Explainable Matching Instead of Score-Only Results

Context

A single match percentage provided limited value and gave users little insight into why a role was considered a good or poor fit.

Selected Approach

Generated structured feedback and recommendations alongside compatibility assessments.

Rationale

Provided actionable guidance that users could use to improve resumes and make better application decisions.

Cloud-Enabled Execution

Context

Local infrastructure was not always available or suitable for processing queued workloads continuously.

Selected Approach

Deployed supporting services and background processing infrastructure on AWS.

Rationale

Improved availability and operational flexibility while allowing workloads to continue independently of a single development machine.

Trade-offs

  • Chose local LLMs to improve privacy and minimize AI operating costs during development, trading off some performance, model capability, and response speed.
  • Adopted a local-first AI approach to preserve privacy and control costs, while introducing asynchronous processing and queue-based workflows to accommodate slower and less predictable inference times.

Outcomes

Business

Reduced friction in the job application process. Validated a real-world problem through personal use.

Engineering

Built and deployed the platform end-to-end. Established reliable patterns for AI task execution.

Operational

Reduced AI costs through local-first processing. Improved reliability with asynchronous workflows.

Learning

AI products require balancing competing constraints. User value matters more than model sophistication.

Metrics

Reduced resume tailoring time
30-60 minutes to under 10 minutes per application.

Engineering Maturity

Supporting delivery signals represented in this project.

CI/CD

Strong

Testing

Strong

Security

Strong

AI Integration

Strong

Documentation

Basic

Observability

Strong

Infrastructure

Strong

Project Signal Profile

Project signal indicators, not external validation.

Ambiguity

4/5

Ownership

5/5

Complexity

4/5

Innovation

3/5

Cross-Functionality

4/5

Operational Responsibility

5/5

Architecture / Existing Stack Sections

The AI-Powered Resume & Job Matching Platform is designed as a modular, cloud-native system focused on privacy, scalability, and maintainability. The platform helps candidates tailor resumes to job opportunities while providing transparent AI-assisted insights rather than fully automated decision-making.

The architecture separates public-facing experiences, administrative capabilities, and asynchronous AI workloads into independent components. Time-intensive operations such as resume analysis, profile enrichment, and job matching are processed through queue-based workflows to improve reliability and responsiveness. The system is designed to support multiple AI providers, including self-hosted models, enabling flexibility in deployment strategies while keeping user data security as a core principle.

  • reusable components
  • automated validation
  • Automated testing frameworks
  • mocking utilities
  • cost
  • and performance requirements.
  • job description interpretation
  • skill extraction

Development Tech Stack

The application is built primarily with TypeScript across both frontend and backend environments to maintain consistency throughout the development lifecycle. The frontend leverages Next.js and React to deliver modern, responsive user experiences with server-side capabilities where appropriate. Backend services are implemented using NestJS, providing a structured and scalable foundation for business logic and API development. PostgreSQL serves as the primary data store, with ORM-based data access and strong typing to improve maintainability and developer productivity.

The development approach emphasizes modular design, reusable components, automated validation, and clean separation of concerns to support long-term evolution of the platform.

Q&A Tech Stack

Quality assurance is integrated throughout the development process rather than treated as a separate phase. Unit and integration testing strategies are used to validate business logic and critical workflows, while end-to-end testing ensures that user journeys function as expected across the platform.

Automated testing frameworks, mocking utilities, and continuous validation practices help maintain confidence during iterative development. This approach reduces regression risks and supports frequent deployments without compromising reliability.

AI Integration Tech Stack

AI capabilities are introduced through a provider-agnostic integration layer designed to accommodate multiple large language models and embedding solutions. The platform supports both externally hosted APIs and self-hosted models, enabling organizations and individuals to choose solutions aligned with their privacy, cost, and performance requirements.

AI is used to assist with resume analysis, job description interpretation, skill extraction, matching recommendations, and contextual insights. Rather than replacing user decision-making, the system focuses on augmenting it by providing explainable suggestions and actionable guidance. Asynchronous processing pipelines ensure that AI-intensive workloads do not negatively impact the overall user experience.

Deployment Tech Stack

The platform is designed for cloud deployment using containerized workloads and Infrastructure as Code practices. Docker is used to package services consistently across environments, while AWS infrastructure components provide the operational foundation for production deployments.

Core services include Amazon ECS for application hosting, Amazon RDS for managed PostgreSQL databases, Amazon ECR for container image management, and Amazon SQS for asynchronous task processing. Terraform is used to provision and manage infrastructure resources in a repeatable and auditable manner. This deployment strategy enables scalability, operational consistency, and efficient management of evolving system requirements.

Related Case Studies

Problem-to-outcome stories connected to this project.

Case story

Building a Hybrid AI Job Matcher with Local LLMs and Cloud-Based Task Processing

Built a hybrid AI-powered CV matcher that combined privacy-focused local LLM execution with cloud-based task processing. What began as a personal productivity tool evolved into designing reliable asynchronous workflows using AWS queues and distributed workers.

  1. 01

    Problem

    Running local LLMs worked well when my workstation was available, but the approach quickly exposed operational limitations:

    • Long-running AI tasks blocked the application flow.
    • Heavy local inference wasn't always practical while actively using my machine.
    • The system became unavailable whenever my computer was offline.
    • Failures were difficult to monitor and retry consistently.
    • Some workflows required asynchronous processing rather than immediate responses.

    What started as a personal productivity tool gradually evolved into a distributed task-processing problem.

  2. 02

    What I Did

    I designed the platform using a hybrid execution model.

    Local-first AI execution

    • Local LLMs handled most day-to-day CV analysis and job matching workflows.
    • Personal data remained on my own hardware whenever possible.
    • The architecture avoided unnecessary dependence on third-party AI APIs.
    • Queue-based task orchestration

    As workloads became longer and more expensive to execute synchronously, I introduced asynchronous processing:

    • AI requests were converted into jobs.
    • Jobs were pushed into Amazon SQS queues.
    • Priority-based execution separated urgent and background workloads.
    • Dead-letter queues captured failed tasks for investigation.
    • Workers consumed queued tasks independently from the user-facing application.
    • Task states were tracked throughout their lifecycle. Cloud deployment

    To make the system available beyond my local environment:

    • Containerized services were deployed to AWS.
    • Amazon ECS handled worker execution.
    • Amazon ECR managed container images.
    • Amazon SQS coordinated distributed processing.
    • PostgreSQL stored application and task metadata.
    • Infrastructure was provisioned using Terraform.
  3. 03

    Outcome

    The project evolved from a personal CV assistant into a resilient AI processing platform capable of balancing privacy, cost, and reliability.

    More importantly, it changed how I think about AI systems: LLM integration is rarely just a prompt engineering problem. In practice, it becomes an exercise in task orchestration, operational resilience, and designing around the realities of expensive and unpredictable workloads.

View full case story ↗

Case story

Integrating AI into Everyday Engineering Workflows

Adopted AI-assisted development practices to accelerate delivery, explore new product ideas, and build practical LLM-enabled applications.

  1. 01

    Problem

    The challenge was determining how to leverage AI responsibly to increase productivity without compromising engineering judgment.

  2. 02

    What I Did

    • Integrated GitHub Copilot, Claude, and Codex into development workflows.
    • Used AI to accelerate implementation and exploration.
    • Built LLM-powered applications, including a CV and ATS match analyzer.
    • Added AI insights capabilities into my portfolio administration experience.
    • Experimented with local and hosted LLM approaches.
  3. 03

    Outcome

    • Increased development efficiency.
    • Expanded experimentation capacity.
    • Delivered practical AI-enabled experiences.
    • Strengthened my ability to combine traditional engineering with emerging technologies.
View full case story ↗

Case story

Building an AI-Powered Resume and Job Matching Platform

Designed and built an AI-powered platform for resume optimization, job matching, and report generation.

  1. 01

    Problem

    The goal was to create a scalable system for resume optimization, job matching, and AI-generated reporting.

  2. 02

    What I Did

    I designed modular APIs, implemented LLM-based workflows, deployed containerized services on AWS ECS and RDS with Docker, ALB, and Terraform, and configured CI/CD using Amplify and GitHub Actions.

  3. 03

    Outcome

    The project demonstrates full-stack, cloud, infrastructure, and AI workflow experience in one cohesive platform.

View full case story ↗

Related Experience

Built during Software Engineer at Freelance.

What I Learned

  • Local LLMs can deliver meaningful value while improving privacy and reducing costs.
  • Queueing and asynchronous processing are essential for reliable AI workflows.
  • Detailed logging and observability are critical for diagnosing AI failures.
  • The best model is not always the best product choice.
  • User trust and data privacy are as important as matching accuracy.