Job Listings Platform
Job search site aggregating listings from 15+ sources on a single platform. Turkish and English support.
Customer Need
Job seekers had to check dozens of sites like Kariyer.net, LinkedIn, Indeed separately. No single point of access to current listings. Separate membership and different interfaces on each site.
Our Solution
Developed a modern platform that automatically collects listings from different job sites, analyzes job categories with AI, and serves in 3 languages. Added smart salary detection, location matching and real-time notification system.
Technical Details
Integrations
Challenges & Solutions
1Scraping Cloudflare-Protected Sites
Major sites like Kariyer.net use Cloudflare protection. Normal requests are blocked.
Cloudflare bypass with Scrape.do API integration. Turkey-located proxies, user-agent rotation and rate limiting.
2Smart Salary Detection
Every site writes salary in different format: '40,000 TL', '35K-45K', '40 thousand TL'. No standard format.
Regex-based smart salary detection algorithm. Parser that recognizes Turkish money formats in 15K-500K TL range.
3Job Category Matching
Need to assign thousands of different job titles to correct category. 'Software Developer' = 'Yazılım Geliştirici' = 'Programcı'
50+ predefined job mappings + Claude AI fallback. Automatic indexing when search count >=5.
4Multi-Source Data Normalization
Each site has different HTML structure, different fields, different encoding.
Config-driven parser for each source. Dynamic field mapping, Turkish character normalization, centralized data model.
Behind The Scenes
- 40,552+ lines code: Vue 24,618, TypeScript 10,927, PHP 5,007
- 99 Vue components, 71 API endpoints, 20 database tables
- Category scan every 2 minutes, job fetch every 1 minute
- Cloudflare bypass with Scrape.do API (Kariyer.net, Yenibiris, SecretCV)
- Regex-based salary detection: 15K-500K TL Turkish formats
- 50+ job mappings + Claude AI fallback
- Turkish character normalization (İ→i, Ğ→ğ, Ş→ş)
- File lock for concurrent execution prevention
- 3 retry attempts + exponential backoff
- JSON-LD schema: Organization, WebSite, JobPosting
Project Features
- Automatic listing collection from 6+ sources
- AI-powered job categorization
- Smart salary detection (15K-500K TL)
- City/district based location matching
- Turkish, English, German interface
- Job favoriting and job alerts
- Company following and reviews
- Google/LinkedIn login
- Employer panel and direct posting
- Comprehensive admin dashboard
Achieved Results
New listings collected every minute from 6+ sources. AI job analysis works with 95%+ accuracy. Full SEO optimization in 3 languages (TR/EN/DE).
Project Information
Tech Stack
Architecture
Modern architecture with SSR support using Nuxt 4 + Vue 3. Two-stage scraping: CategoryScraper collects URLs, JobScraper fetches details. Type-safe database with Drizzle ORM. New listings every minute with cron jobs. AI services abstracted with Factory pattern.
