Skip to content

Devan019/GenJob

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

24 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

GenJob β€” AI-assisted Job & Resume Toolkit

This repository contains two main components: an ai-apis microservice that provides AI-powered resume generation, salary prediction, and job analysis utilities; and GenJobMVC, an ASP.NET MVC web application that integrates those AI services into a web UI for employers and job seekers.

πŸ”— Quick Navigation

Section Description
πŸ“ Contents Project structure overview
✨ Features Key capabilities and functionality
πŸ› οΈ Tech Stack Technologies and frameworks used
πŸ“‚ Folder Structure Detailed directory organization
πŸ”„ Architecture Flow System architecture diagram
πŸ”Œ API Endpoints Available API endpoints and responses
🌐 External APIs Third-party service integrations
πŸš€ Installation & Setup Prerequisites and running instructions
πŸ‘₯ Contributors Team members and roles
πŸ“ Notes Additional information and assumptions

Contents

  • ai-apis/ β€” Python FastAPI microservice providing AI helpers (resume LaTeX generation, salary prediction, job analysis, PDF conversion helper).
  • GenJobMVC/ β€” ASP.NET MVC web app (C#) that uses the microservice and provides UI pages (Dashboard, ATS, Resume generation, Salary prediction).

Project features

  • AI-powered Resume Generation: Generate professional LaTeX-based resumes from structured candidate data and job descriptions using AI models (oss-120b).
  • PDF Conversion: Convert generated LaTeX to downloadable PDF URLs via latexonline.cc.
  • ATS Score Analysis: Extract text from PDF/DOC resumes using iTextSharp/OpenXML and calculate ATS compatibility scores.
  • Salary Prediction: ML-based salary prediction for job roles by company, location, and employment status with Redis caching.
  • Job Market Analytics: Generate graph data and visualizations for job market trends and analysis.
  • User Authentication: Secure login/signup system using ASP.NET Identity with MySQL database.
  • Job Search Integration: Search job postings by role, location, and company via Glassdoor API integration.
  • Data Caching: Redis-based caching for improved performance and data storage.
  • Resume Parsing: Extract and process resume content from various document formats.

Tech stack

Libaries/Frameworks

  • Frontend: HTML, Tailwind-CSS, JavaScript, Razor views
  • Backend: C#, .net core and it's packages
  • AI/ML : python, fastapis

ai-apis (Python Backend):

  • Python 3.10+
  • FastAPI for REST API endpoints
  • Pydantic for request/response validation
  • Redis for caching and data storage
  • scikit-learn for ML model inference
  • Pre-trained ML models (salary prediction)
  • oss-120b model for AI-powered content generation
  • latexonline.cc for LaTeX β†’ PDF compilation

GenJobMVC (C# Web Application):

  • .NET 8.0 (ASP.NET Core MVC)
  • Entity Framework Core for ORM and migrations
  • MySQL database for persistent data storage
  • ASP.NET Identity for authentication and user management
  • iTextSharp for PDF text extraction
  • OpenXML for document processing
  • Redis.OM for Redis integration in .NET
  • Razor views for server-side rendering
  • Glassdoor API integration for job search

Key .NET Packages:

  • Microsoft.EntityFrameworkCore
  • Pomelo.EntityFrameworkCore.MySql
  • Microsoft.AspNetCore.Identity.EntityFrameworkCore
  • Redis.OM
  • iTextSharp
  • DocumentFormat.OpenXml

Folder structure (short)

ai-apis/

  • .env β€” environment variables for the Python service
  • api.py β€” FastAPI application and endpoints
  • helpers/ β€” Python helper modules
    • gen_latex.py β€” LaTeX generation logic
    • job_analisys.py β€” functions to prepare graph/analytics data
    • salary_prediciton.py β€” salary prediction helpers (loads pre_trained models)
  • data/ β€” CSV datasets used for training/analysis
  • pre_trained/ β€” stored ML models and scalers (pickle files)
  • notebooks/ β€” Jupyter notebooks for analysis and experimentation
  • scripts/ β€” utility scripts (e.g. salary_model.py)

GenJobMVC/

  • GenJobMVC.sln β€” Visual Studio solution
  • GenJobMVC/Program.cs β€” app entry
  • Controllers/ β€” MVC controllers (AccountController, ATSController, DashboardController, JobPostingController, etc.)
  • Services/ β€” service classes (ATSScoringService, JobPostingService, ResumeParserService)
  • Data/ β€” AppDbContext.cs (EF Core DB context)
  • Models/ β€” C# model classes (JobPosting, CompanyPosting, AI_API, etc.)
  • Views/ β€” Razor views for pages (Dashboard, ATS, Account, JobPosting)
  • wwwroot/ β€” static assets (css, js, lib)

High-level flow

The following diagram shows the complete architecture and data flow between all system components including the web UI, ASP.NET MVC backend, FastAPI, databases, and external APIs.

Logo

ai-apis API endpoints and example return objects

Below are the primary endpoints exposed by ai-apis/api.py with example request/response shapes (inferred from code).

  1. POST /json
  • Purpose: Converts a payload containing a JSON string into an object.
  • Request body: { "data": "" }
  • Response: Parsed JSON object (dynamic)

Example Request body: { "data": "{"foo": "bar"}" }

Response: { "foo": "bar" }

  1. POST /generate_resume
  • Purpose: Generate LaTeX-based resume content and return a PDF URL.
  • Request body shape: ResumeGenRequest
    • links: { name: url, ... }
    • candidate: { name, email, phone, linkedin, github, education: [{degree, university, year, cgpa?}], skills: [...], projects: [...], experience: [...], additional?: [...] }
    • job_description: { title, company, location?, requirements: [...] }
  • Response: { "pdf_url": "https://latexonline.cc/compile?text=..." } or { "error": "Failed to generate LaTeX content" }

Example response object: { "pdf_url": "https://latexonline.cc/compile?text=" }

  1. POST /string-process
  • Purpose: Accepts raw LaTeX text and writes it to resume.tex, returning cleaned text.
  • Request body: { "data": "" }
  • Response: the cleaned LaTeX text (string)
  1. GET /get-company-names
  • Purpose: Return a list of company names used by the salary model/helpers.
  • Response: { "company_list": ["Company A", "Company B", ...] }
  1. POST /get-other-data
  • Purpose: Return auxiliary data for a given company name.
  • Request body: { "company_name": "ACME" }
  • Response: { "data": } β€” shape depends on getOtherData implementation in helpers/salary_prediciton.py.
    1. POST /predict-salary
    • Purpose: Predict salary given company, job role, location, and employment status.
    • Request body: { "company_name": "ACME", "job_role": "Data Scientist", "location": "NYC", "status": "Full-time" }
    • Response: { "predicted_salary": 85000 } (value returned from getSalaryPrediction)
    1. GET /get-graph-data
    • Purpose: Return job analysis graph data for UI visualizations.
    • Response: object returned by getGraphData() β€” likely a serializable dict with nodes/edges or chart data.
    1. POST /test
    • Purpose: Echo the ResumeGenRequest payload for testing/validation.
    • Request body: ResumeGenRequest
    • Response: { "candidate": , "job": <job_description>, "links": }

    External API integrations

    Glassdoor API (via GenJobMVC):

    • Search jobs by role and location
    • Search jobs by company name
    • Retrieve job posting data including salary ranges, company info, and requirements

    oss-120b AI Model:

    • Used for intelligent resume generation and content optimization
    • Integrated through the ai-apis service

    latexonline.cc API:

    • Converts LaTeX markup to downloadable PDF URLs
    • No authentication required, public service

    How to run

    Prerequisites

    Install Redis Stack:

    # Windows (using Chocolatey)
    choco install redis-stack-server
    
    # Or download from: https://redis.io/docs/install/install-stack/windows/
    # Start Redis Stack: redis-stack-server

    Install MySQL:

    # Windows (using Chocolatey)
    choco install mysql
    
    # Or download MySQL Community Server from: https://dev.mysql.com/downloads/mysql/
    # Create database: CREATE DATABASE genjob_db;

    ai-apis (Python Backend)

    cd "d:\C-drive mini\GenJob\ai-apis"
    python -m venv .venv
    .\.venv\Scripts\Activate.ps1
    pip install -r requirements.txt
    uvicorn api:app --reload --port 8000

    GenJobMVC (ASP.NET)

    Required NuGet Packages:

    cd "d:\C-drive mini\GenJob\GenJobMVC\GenJobMVC"
    dotnet add package Microsoft.EntityFrameworkCore
    dotnet add package Pomelo.EntityFrameworkCore.MySql
    dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore
    dotnet add package Redis.OM
    dotnet add package iTextSharp
    dotnet add package DocumentFormat.OpenXml

    Run the application:

    # Option 1: Visual Studio
    # Open GenJobMVC/GenJobMVC.sln in Visual Studio and run
    
    # Option 2: Command line
    cd "d:\C-drive mini\GenJob\GenJobMVC\GenJobMVC"
    dotnet ef database update
    dotnet run

    Individual Contributors

    Notes and assumptions

    • The README API docs are derived from ai-apis/api.py and helper names; exact response structures from helpers (e.g., getOtherData, getGraphData) depend on their implementations under ai-apis/helpers.
    • The project uses latexonline.cc for LaTeX compilation by building a URL with the encoded LaTeX content. For production usage consider a private LaTeX build service or a server-side container to compile PDFs more securely.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •