Skip to content

azizowaisi/Job-applications-tracker

Repository files navigation

Job Applications Tracker

A serverless web application that automates job searching, resume tailoring, and job application submission using AI and headless browser automation.

Features

  • Automated Job Searching: Scrapes job boards and company career pages
  • AI-Powered Resume Tailoring: Automatically customizes resumes for each job application
  • Automated Applications: Submits job applications using Playwright automation
  • Application Tracking: Tracks application status and maintains audit trails
  • REST API: Exposes APIs for frontend and CLI operations
  • Serverless Architecture: Built entirely on AWS serverless services

Architecture

The application is built using:

  • API Gateway - HTTP API endpoints
  • AWS Lambda - Serverless functions (Node.js 22)
  • DynamoDB - Primary data store for users, jobs, and applications
  • S3 - File storage for resumes and generated documents
  • SQS - Queue system for background tasks
  • EventBridge - Scheduled job scraping
  • Secrets Manager - Secure storage for API keys
  • CloudWatch - Logging and monitoring

Project Structure

.
├── infra/                 # Serverless Framework configuration
├── services/
│   ├── api/              # REST API Lambda handlers
│   ├── worker/           # Background worker (scraping & automation)
│   ├── ai/               # AI service for resume tailoring
│   └── common/           # Shared utilities
├── web/                  # Next.js frontend
├── tests/                # Unit and integration tests
└── .github/workflows/    # CI/CD pipelines

Prerequisites

  • Node.js 18+ and npm
  • AWS CLI configured with appropriate credentials
  • AWS account with permissions to create Lambda, DynamoDB, S3, SQS, etc.
  • OpenAI API key (for resume tailoring)

Installation

  1. Clone the repository:
git clone <repository-url>
cd Job-applications-tracker
  1. Install dependencies:
npm install
npm run install:all
  1. Build all services:
npm run build

Configuration

AWS Secrets Manager

Before deployment, create the required secrets:

# Set your AWS region
export AWS_REGION=us-east-1
export STAGE=dev

# Create OpenAI API key secret
aws secretsmanager create-secret \
  --name job-applications-tracker-openai-api-key-${STAGE} \
  --secret-string "your-openai-api-key-here"

# Create JWT secret
aws secretsmanager create-secret \
  --name job-applications-tracker-jwt-secret-${STAGE} \
  --secret-string "your-secure-random-jwt-secret"

Environment Variables

The application uses AWS Secrets Manager for sensitive configuration. Ensure the following are configured:

  • OPENAI_API_KEY_SECRET_ID - Name of the OpenAI API key secret
  • JWT_SECRET - JWT secret for authentication (also in Secrets Manager)

Deployment

Using Serverless Framework

cd infra
npm install

# Deploy to dev
npx serverless deploy --stage dev

# Deploy to prod
npx serverless deploy --stage prod

Environment Setup

export AWS_PROFILE=your-profile
export STAGE=dev

Deploy All Services

# From project root
npm run deploy:dev
# or
npm run deploy:prod

API Endpoints

After deployment, the API Gateway URL will be displayed. Example endpoints:

  • POST /signup - Create user account
  • GET /jobs - List jobs for user
  • POST /jobs/search - Trigger job search
  • POST /applications - Create application (triggers tailor+apply)
  • GET /applications/{id} - Get application status
  • POST /upload/resume - Get presigned URL for resume upload

Frontend

The Next.js frontend can be run locally:

cd web
npm install
npm run dev

Set the API URL in .env.local:

NEXT_PUBLIC_API_URL=https://your-api-gateway-url.execute-api.region.amazonaws.com/dev

Testing

Run all tests:

npm run test

Run with coverage:

npm run test:coverage

Legal & Ethical Considerations

⚠️ IMPORTANT:

  • Terms of Service: Automated scraping and application submission may violate the Terms of Service of job boards (LinkedIn, Indeed, etc.). Always check and comply with ToS.
  • Robots.txt: Respect robots.txt files and scraping policies
  • CAPTCHA: The system will mark applications requiring CAPTCHA as needs_human_intervention - manual completion required
  • Rate Limiting: Be respectful of job board rate limits
  • Privacy: The system handles PII - ensure compliance with GDPR, CCPA, etc.

For production use:

  • Prefer official APIs when available
  • Obtain explicit user permission
  • Implement proper rate limiting
  • Consider using user credentials for authenticated access

Monitoring

  • CloudWatch Logs: All Lambda functions log to CloudWatch
  • CloudWatch Metrics: Monitor function invocations, errors, and duration
  • DynamoDB Metrics: Track read/write capacity and throttles

View logs:

cd infra
npx serverless logs -f api -t

Cost Considerations

This application uses serverless services with pay-per-use pricing. Estimated costs for moderate usage:

  • Lambda: ~$5-20/month
  • DynamoDB: ~$5-15/month
  • S3: ~$1-5/month
  • SQS: ~$1-3/month
  • API Gateway: ~$3-10/month

Total: ~$15-53/month for moderate usage

Troubleshooting

Deployment Issues

  1. Check AWS credentials are configured
  2. Verify Secrets Manager secrets exist
  3. Check IAM permissions for the deployment role

Runtime Issues

  1. Check CloudWatch Logs for errors
  2. Verify environment variables are set correctly
  3. Check DynamoDB table permissions
  4. Verify S3 bucket exists and has correct permissions

Contributing

  1. Create a feature branch
  2. Make changes and add tests
  3. Ensure all tests pass
  4. Submit a pull request

License

[Add your license here]

Support

For issues and questions, please open an issue on GitHub.

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published