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.
| 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 |
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).
- 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.
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.EntityFrameworkCorePomelo.EntityFrameworkCore.MySqlMicrosoft.AspNetCore.Identity.EntityFrameworkCoreRedis.OMiTextSharpDocumentFormat.OpenXml
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_trainedmodels)
- 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)
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.
Below are the primary endpoints exposed by ai-apis/api.py with example request/response shapes (inferred from code).
- 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" }
- 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=" }
- 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)
- GET /get-company-names
- Purpose: Return a list of company names used by the salary model/helpers.
- Response: { "company_list": ["Company A", "Company B", ...] }
- POST /get-other-data
- Purpose: Return auxiliary data for a given company name.
- Request body: { "company_name": "ACME" }
- Response: { "data": } β shape depends on
getOtherDataimplementation inhelpers/salary_prediciton.py.- 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)
- 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.
- POST /test
- Purpose: Echo the ResumeGenRequest payload for testing/validation.
- Request body: ResumeGenRequest
- Response: { "candidate": , "job": <job_description>, "links": }
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
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;
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
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.OpenXmlRun 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
- Devan Chauhan (https://github.com/Devan019)
- .net REST Apis
- ML prediction model/data analysis
- Redis caching
- GenAI integration
- LaTeX template design
- UI/UX design
- Moksh Desai (https://github.com/MokshDesai)
- External package Resume parsing (iTextSharp/OpenXML)
- MVC controllers and views
- SharpAPI for ATS Score calculation
- Nishant Dholakia (https://github.com/Nishant-Dholakia)
- Database (MySQL) Design
- Glassdoor API
- Identity framework
- EF Core integration
- The README API docs are derived from
ai-apis/api.pyand helper names; exact response structures from helpers (e.g.,getOtherData,getGraphData) depend on their implementations underai-apis/helpers. - The project uses
latexonline.ccfor 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.
