Skip to content

Upload resume AI feedback pay platform for job seekers... Created at https://coslynx.com

Notifications You must be signed in to change notification settings

coslynx/resume-ai-review-platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

29 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

resume-ai-review-platform

AI-powered platform to review resumes and get feedback.

Developed with the software and tools below.

React Frontend Node.js OpenAI
git-last-commit GitHub commit activity GitHub top language

πŸ“‘ Table of Contents

  • πŸ“ Overview
  • πŸ“¦ Features
  • πŸ“‚ Structure
  • πŸ’» Installation
  • πŸ—οΈ Usage
  • 🌐 Hosting
  • πŸ“„ License
  • πŸ‘ Authors

πŸ“ Overview

The repository contains a Minimum Viable Product (MVP) called "resume-ai-review-platform" that provides a platform for users to upload resumes, process payments, and receive AI-powered feedback. This MVP uses React for the frontend, Node.js for the backend, and integrates with the OpenAI API for AI feedback. The core technologies used are TypeScript, React, HTML, CSS, Node.js, and the OpenAI API.

πŸ“¦ Features

Feature Description
βš™οΈ Architecture The codebase follows a modular architecture with components, hooks, services, types and constants, promoting maintainability and scalability.
πŸ“„ Documentation The repository includes a README file that provides a detailed overview of the MVP, its dependencies, and usage instructions.
πŸ”— Dependencies The codebase relies on external libraries and packages such as React, axios, @stripe/stripe-js, react-dropzone, and tailwindcss, which are used for building UI components, handling API calls and styling the application.
🧩 Modularity The modular structure allows for easier maintenance and reusability of the code, with separate directories and files for components, hooks, services, utils, and pages.
πŸ§ͺ Testing Implemented unit tests using Jest to ensure the reliability of the button and input components.
⚑️ Performance The application is designed for performance using lazy loading of components and optimizing images and using memoization.
πŸ” Security Security is enhanced by using environment variables, and input sanitization techniques in the input component.
πŸ”€ Version Control Utilizes Git for version control with GitHub Actions workflow files for automated build and release processes.
πŸ”Œ Integrations Integrates with the Stripe API for payment processing and the OpenAI API for AI feedback generation.
πŸ“Ά Scalability The system is built on a cloud-native architecture with a scalable backend and a NoSQL database for handling future growth.

πŸ“‚ Structure

src
β”œβ”€β”€ components
β”‚   β”œβ”€β”€ common
β”‚   β”‚   β”œβ”€β”€ Button.tsx
β”‚   β”‚   β”œβ”€β”€ Input.tsx
β”‚   β”‚   └── Spinner.tsx
β”‚   β”œβ”€β”€ ResumeUpload.tsx
β”‚   β”œβ”€β”€ PaymentForm.tsx
β”‚   └── FeedbackDisplay.tsx
β”œβ”€β”€ pages
β”‚   β”œβ”€β”€ Home.tsx
β”‚   └── ReviewPage.tsx
β”œβ”€β”€ hooks
β”‚   β”œβ”€β”€ useResume.ts
β”‚   β”œβ”€β”€ usePayment.ts
β”‚   └── useFeedback.ts
β”œβ”€β”€ services
β”‚   β”œβ”€β”€ api.ts
β”‚   β”œβ”€β”€ openai.ts
β”‚   └── stripe.ts
β”œβ”€β”€ utils
β”‚   └── helpers.ts
β”œβ”€β”€ styles
β”‚   └── global.css
β”œβ”€β”€ types
β”‚   └── index.ts
└── constants
    └── index.ts
public
    └── assets
        β”œβ”€β”€ logo.png
        └── loading.gif
tests
    └── components
        β”œβ”€β”€ Button.test.tsx
        └── Input.test.tsx
.env
startup.sh
commands.json
package.json
README.md
tailwind.config.js
vite.config.ts

πŸ’» Installation

Warning

πŸ”§ Prerequisites

  • Node.js v18.0.0 or higher
  • npm 6 or higher
  • A valid OpenAI API key
  • A valid Stripe Publishable and Secret key
  • A MongoDB Atlas account and connection string

πŸš€ Setup Instructions

  1. Clone the repository:
    git clone https://github.com/coslynx/resume-ai-review-platform.git
    cd resume-ai-review-platform
  2. Install dependencies:
    npm install --force
  3. Create a .env file and fill in the required environment variables:
    cp .env.example .env
    # Open the .env file and fill in the following variables:
    # VITE_OPENAI_API_KEY=YOUR_OPENAI_API_KEY_HERE
    # VITE_STRIPE_PUBLISHABLE_KEY=YOUR_STRIPE_PUBLISHABLE_KEY_HERE
    # VITE_STRIPE_SECRET_KEY=YOUR_STRIPE_SECRET_KEY_HERE
    # VITE_BACKEND_URL=http://localhost:3000

πŸ—οΈ Usage

πŸƒβ€β™‚οΈ Running the MVP

  1. Start the development server:
    npm run dev
  2. Access the application:

Tip

βš™οΈ Configuration

  • The application is configured via the .env file, make sure to add your OpenAI and Stripe api keys, and also the URL for the backend.
  • All configurations can be done via the .env, tailwind.config.js and vite.config.ts files.
  • The vite.config.ts file has configurations for the alias path for the imports.

πŸ“š Examples

Provide specific examples relevant to the MVP's core features. For instance:

  • πŸ“ Uploading a Resume: Drag and drop your resume to the upload area.

  • πŸ“ Payment: Enter your card details to process the payment.

  • πŸ“ AI Feedback: Once payment is complete, the AI will provide feedback on the resume.

🌐 Hosting

πŸš€ Deployment Instructions

Deploying to Netlify

  1. Sign up or log in to Netlify.

  2. Connect your GitHub repository to Netlify.

  3. Configure your build settings:

    • Build command: npm run build
    • Publish directory: dist
  4. Add environment variables in Netlify settings:

  • VITE_OPENAI_API_KEY
  • VITE_STRIPE_PUBLISHABLE_KEY
  • VITE_STRIPE_SECRET_KEY
  • VITE_BACKEND_URL
  1. Deploy your application.

πŸ”‘ Environment Variables

Provide a comprehensive list of all required environment variables, their purposes, and example values:

  • VITE_OPENAI_API_KEY: API key for OpenAI Example: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • VITE_STRIPE_PUBLISHABLE_KEY: Publishable key for Stripe Example: pk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • VITE_STRIPE_SECRET_KEY: Secret key for Stripe Example: sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • VITE_BACKEND_URL: URL for the backend API Example: http://localhost:3000

πŸ“œ API Documentation

πŸ” Endpoints

  • POST /upload: Uploads a resume file

    • Description: Endpoint for uploading a resume file as multipart/form-data
    • Headers: 'Content-Type': 'multipart/form-data'
    • Response: { "status": "success", "message": "File uploaded successfully." }
  • POST /payment_intents: Creates a payment intent using Stripe API

    • Description: Endpoint for creating a payment intent.
    • Body: {"amount": number } in cents
    • Header: Authorization: Bearer ${VITE_STRIPE_SECRET_KEY}
    • Response: { "id": string, "client_secret": string, "amount": number }
  • POST https://api.openai.com/v1/chat/completions: Gets the AI feedback based on the resume.

    • Description: Endpoint for generating feedback using OpenAI.
    • Body: {"model": "gpt-3.5-turbo", "messages": [ { "role": "user", "content": string} ] }
    • Header: Authorization: Bearer ${VITE_OPENAI_API_KEY}
    • Response: AI generated feedback with a score and details.

πŸ”’ Authentication

This MVP does not require Authentication for the API, as the OpenAI and Stripe api keys are being used.

πŸ“ Examples

# Upload a resume file
curl -X POST http://localhost:3000/upload \
    -H "Content-Type: multipart/form-data" \
    -F "resume=@/path/to/your/resume.pdf"

# Create a Stripe Payment Intent
curl -X POST  https://api.stripe.com/v1/payment_intents  \
   -H "Authorization: Bearer sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"amount": 1000}'

# Response
{
    "id": "pi_3N9H532eZvKYlo2C1p6z5rP2",
    "client_secret": "pi_3N9H532eZvKYlo2C1p6z5rP2_secret_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "amount": 1000
}

# Get AI feedback from OpenAI
curl -X POST https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
  "model": "gpt-3.5-turbo",
  "messages": [
    {
      "role": "user",
      "content": "Analyze the following resume and provide detailed feedback with a score from 0 to 100, focusing on areas like formatting, clarity, impact and overall effectiveness. Provide details for each area including clear and actionable advice, also provide a summary of the strengths and weakness of the resume.\n\nResume:\n{resumeText}\n\nFeedback:"
    }
  ]
}'

# Response:
{
  "id": "chatcmpl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "object": "chat.completion",
  "created": 1717910040,
  "model": "gpt-3.5-turbo-0613",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Summary: The resume presents a comprehensive overview of the candidate's skills and experience, but has some formatting issues that could be improved.\n\nDetails:\n- The formatting of the skills section could be cleaner and better organized for readability.\n- Some sections of the resume could benefit from stronger action verbs to highlight achievements.\n- Consider adding measurable results or metrics in the work experience section to showcase the impact of your work.\n\nScore: 80"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 228,
    "completion_tokens": 115,
    "total_tokens": 343
  }
}

Note

πŸ“œ License & Attribution

πŸ“„ License

This Minimum Viable Product (MVP) is licensed under the GNU AGPLv3 license.

πŸ€– AI-Generated MVP

This MVP was entirely generated using artificial intelligence through CosLynx.com.

No human was directly involved in the coding process of the repository: resume-ai-review-platform

πŸ“ž Contact

For any questions or concerns regarding this AI-generated MVP, please contact CosLynx at:

🌐 CosLynx.com

Create Your Custom MVP in Minutes With CosLynxAI!