job-ai-extractor
v1.0.0
Published
AI-powered job posting analyzer for extracting skills, domain, experience level, and required years
Maintainers
Readme
Job AI Extractor
A browser-compatible NPM package for extracting structured information from job postings using OpenAI's API.
Features
- 🤖 AI-Powered: Uses OpenAI GPT models for intelligent extraction
- 🌐 Browser Compatible: Works in Chrome extensions and web applications
- 🔒 Secure: API keys stay in the browser, never sent to third-party servers
- 📊 Structured Output: Returns typed, validated data using Zod schemas
- ⚡ Fast: Parallel processing for multiple extractions
Installation
npm install job-ai-extractor openaiUsage
Basic Usage
import { createJobExtractor } from "job-ai-extractor";
// Create extractor with your OpenAI API key
const extractor = createJobExtractor("your-openai-api-key");
// Extract all information at once
const result = await extractor.extractAll(
"Senior Full Stack Developer",
"We are looking for a Senior Full Stack Developer with 5+ years of experience..."
);
console.log(result);
// {
// skills: { skills: ['JavaScript', 'React', 'Node.js', ...] },
// domain: { domain: 'Full Stack' },
// years: { requestYears: 5 },
// level: { level: 'Senior' }
// }Individual Extractions
import { JobExtractor } from "job-ai-extractor";
const extractor = new JobExtractor({
apiKey: "your-openai-api-key",
model: "gpt-4", // Optional: defaults to gpt-3.5-turbo
temperature: 0, // Optional: defaults to 0
});
// Extract skills
const skills = await extractor.extractSkills(jobDescription);
// Extract domain
const domain = await extractor.extractDomain(jobDescription);
// Extract experience years
const years = await extractor.extractYears(jobDescription);
// Extract seniority level
const level = await extractor.extractLevel(jobTitle);Chrome Extension Usage
// In your Chrome extension content script
import { createJobExtractor } from "job-ai-extractor";
// Get API key from extension storage
const apiKey = await chrome.storage.sync.get(["openaiApiKey"]);
const extractor = createJobExtractor(apiKey.openaiApiKey);
// Extract job information
const jobData = await extractor.extractAll(jobTitle, jobDescription);API Reference
JobExtractor
Main class for job data extraction.
Constructor
new JobExtractor({
apiKey: string; // Your OpenAI API key
model?: string; // OpenAI model (default: 'gpt-3.5-turbo')
temperature?: number; // Temperature for AI responses (default: 0)
})Methods
extractSkills(jobText: string): Promise<Skills>- Extract technical skillsextractDomain(jobText: string): Promise<Domain>- Extract job domainextractYears(jobText: string): Promise<Years>- Extract experience yearsextractLevel(jobTitle: string): Promise<Level>- Extract seniority levelextractAll(jobTitle: string, jobDescription: string): Promise<JobExtraction>- Extract all data
Types
type Skills = {
skills: string[];
};
type Domain = {
domain:
| "Backend"
| "Frontend"
| "Full Stack"
| "Mobile"
| "DevOps"
| "Embedded"
| "ML"
| "Data Science"
| "QA"
| "Security"
| "Finance"
| "E-commerce"
| "Gaming"
| "Hardware"
| null;
};
type Years = {
requestYears: number; // 0-20
};
type Level = {
level:
| "Intern"
| "Entry"
| "Junior"
| "Mid"
| "Senior"
| "Lead"
| "Manager"
| "Director"
| "Executive"
| null;
};Security
This package is designed with security in mind:
- ✅ API keys are used directly in the browser
- ✅ No data is sent to third-party servers
- ✅ All communication is directly with OpenAI's API
- ✅ Perfect for Chrome extensions and client-side applications
Error Handling
The package includes comprehensive error handling:
try {
const result = await extractor.extractAll(title, description);
} catch (error) {
if (error.message.includes("API key")) {
console.error("Invalid API key");
} else if (error.message.includes("parse")) {
console.error("Failed to parse AI response");
} else {
console.error("Extraction failed:", error);
}
}Requirements
- OpenAI API key
- Modern browser or Node.js environment
- Internet connection for API calls
License
MIT
