Inspiration
Job hunting in Malaysia is frustrating. You spend hours scrolling through Hiredly, copying job descriptions into ChatGPT, manually comparing requirements against your resume, and rewriting the same cover letter over and over. We thought: what if AI could handle all of that in one seamless flow?
What it does
KerjaFlow is an AI-powered job application assistant that:
- Scrapes job listings from Hiredly using Apify cloud actors
- Ranks jobs by fit using Claude AI to analyze how well each job matches your resume (0-100% score)
- Generates tailored resumes that highlight relevant experience for each specific job
- Writes custom cover letters based on job requirements
- Exports professional PDFs ready to submit
How we built it
- Next.js 16 with App Router for the frontend
- Convex for real-time backend subscriptions (jobs update live as they're scraped and ranked)
- Apify cloud actors for web scraping Hiredly job listings
- Claude AI with structured outputs for:
- Parsing unstructured job HTML into clean JSON (100% valid output)
- Calculating fit scores with detailed reasoning
- Tailoring resumes and writing cover letters
- Clerk for Google OAuth authentication
- pdf-lib for PDF generation
The key technical innovation is using Claude's structured outputs feature - we define a JSON schema, and Claude returns 100% valid data every time. No retries, no parsing errors.
Challenges we ran into
- Web scraping reliability - Hiredly's HTML structure is inconsistent. We solved this by using Claude to intelligently parse job details rather than rigid selectors.
- Real-time progress tracking - Showing scraping progress from a cloud actor to the browser was tricky. We used Convex webhooks to update job counts as they're saved.
- Parallel job ranking - Ranking 10+ jobs sequentially took too long. We implemented parallel API calls with proper error handling so one failed ranking doesn't break the whole batch.
- PDF generation - Building professional resumes programmatically with proper word wrapping, pagination, and formatting required careful coordinate math with pdf-lib.
What we learned
- Claude's structured outputs are a game-changer for AI-powered data extraction
- Real-time databases like Convex dramatically simplify live progress tracking
- Web scraping is unpredictable - AI parsing is more robust than brittle CSS selectors
- PDF generation from scratch is surprisingly complex
What's next for Kerja Flow
- JobStreet integration - Expand beyond Hiredly to Malaysia's largest job portal
- LinkedIn integration - Import profile data and apply directly
- Interview prep - AI-generated interview questions based on job requirements
- Application tracking - Dashboard to track submitted applications and follow-ups
- Red flag detector - Detect suspicious characters from the job description for an unhealthy work environment
- Chrome extension - One-click apply from any job listing page
Built With
- anthropic
- apify
- clerk
- convex
- nextjs
- pdf-lib
- react
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.