{"slug": "building-an-open-source-ai-assisted-international-job-search-platform", "title": "Building an Open-Source AI-Assisted International Job Search Platform", "summary": "Developer Subraata Kumar has released JobSearch, an open-source AI-assisted platform for international job hunting, under the MIT License. The MVP includes Docker setup, authentication, resume import, and profile workflows, with plans for AI-powered job matching and application tracking. The project emphasizes user control and data privacy, allowing integration with various AI providers.", "body_md": "Finding a job in another country is more complicated than searching for a job title.\n\nCandidates often need to understand:\n\nI’m building an open-source project called **JobSearch** to bring these activities into one workspace.\n\nGitHub repository:\n\n[https://github.com/subraatakumar/job-search](https://github.com/subraatakumar/job-search)\n\nThe project is still in its early MVP stage, but the initial Docker setup, authentication, resume import, and profile workflow are working.\n\nJobSearch is designed for people applying internationally.\n\nFor example, a user in India might want to search for:\n\nThe long-term workflow is:\n\n```\nDiscover jobs\n    ↓\nEvaluate role and sponsorship fit\n    ↓\nPrepare a tailored application\n    ↓\nPractice for the interview\n    ↓\nTrack the application\n    ↓\nImprove based on outcomes\n```\n\nThe goal is not to automatically apply to hundreds of jobs. The goal is to help candidates make better, more informed applications while keeping the user in control.\n\nThe first version focuses on building a trustworthy foundation.\n\nCurrently implemented:\n\nPlanned features include:\n\nThere are several reasons for making this project open source.\n\nFirst, job-search data is personal and sensitive. Users should be able to understand where their data goes and how the application works.\n\nSecond, different users will want different AI providers. Some may prefer a hosted provider, while others may want to run a local model through Ollama.\n\nThird, job sources vary by country. A community can help add lawful, documented integrations for different regions without tightly coupling the core application to a single provider.\n\nThe project is released under the MIT License.\n\nThe current architecture is intentionally simple:\n\n```\nBrowser\n   ↓\nNext.js application\n   ↓\nPostgreSQL\n   ↓\nAI provider adapter\n```\n\nThe application will eventually include a background worker for scheduled searches:\n\n```\nScheduler\n   ↓\nJob source connectors\n   ↓\nNormalization and deduplication\n   ↓\nJob database\n   ↓\nUser notifications and matching\n```\n\nThe planned technology stack is:\n\nThe project uses an existing central authentication service based on Better Auth.\n\nThe authentication service provides:\n\nThe JobSearch application does not directly share authentication cookies or the authentication database.\n\nThe flow is:\n\n```\nJobSearch\n   ↓\nRedirect to central Auth service\n   ↓\nUser signs in\n   ↓\nAuth redirects back with an authorization code\n   ↓\nJobSearch exchanges the code using PKCE\n   ↓\nJobSearch creates its own local session\n```\n\nThis keeps the authentication boundary clear and allows other applications to reuse the same identity service without sharing application data.\n\nThe project is designed to be easy to run with Docker.\n\nRequirements:\n\n`curl`\n\nClone the repository:\n\n```\ngit clone https://github.com/subraatakumar/job-search.git\ncd job-search\n```\n\nCreate the local environment file:\n\n```\ncp .env.example .env\n```\n\nSet a strong session secret in `.env`\n\n, then run:\n\n```\n./re-run-local.sh\n```\n\nThe local services are available at:\n\n```\nJobSearch:  http://localhost:3020\nDashboard:  http://localhost:3020/dashboard\nProfile:    http://localhost:3020/profile\nPostgreSQL: localhost:5433\n```\n\nTo stop the services:\n\n```\ndocker compose down\n```\n\nThe normal shutdown command does not delete the PostgreSQL volume.\n\nThe project also includes a separate production-like mode:\n\n```\ncp .env.prod.example .env.prod\n```\n\nConfigure the production values and run:\n\n```\n./re-run-local.sh prod\n```\n\nThis mode uses:\n\n```\nJobSearch:  http://localhost:3021\nPostgreSQL: localhost:5434\n```\n\nA Cloudflare Tunnel can route:\n\n```\njobs.example.com → http://localhost:3021\n```\n\nLocal and production-like modes use separate Compose projects and separate database volumes.\n\nThe first version supports text-based PDF resumes.\n\nThe workflow is:\n\n```\nUpload PDF\n    ↓\nExtract text\n    ↓\nCreate draft profile\n    ↓\nUser reviews the information\n    ↓\nConfirm the master profile\n```\n\nThe application does not yet treat extracted text as confirmed truth.\n\nThis is important because resume parsing can produce errors. A parser might misunderstand:\n\nThe user must review the extracted information before it can be used to generate an application.\n\nScanned or image-only PDF files are not supported in the MVP. OCR is planned for a future version after evaluating:\n\nThe project is designed to support OpenAI-compatible endpoints.\n\nThe long-term goal is to let users configure:\n\nThis is important because users have different requirements around:\n\nThe application should never silently send a user's resume or profile data to an AI provider. Provider configuration and consent must be explicit.\n\nThe project handles sensitive information, including:\n\nImportant design principles include:\n\nThe project will not implement:\n\nJob sources should use official APIs, permitted feeds, company career pages, user-provided URLs, or other lawful methods.\n\nThe landing page explains the product workflow and includes:\n\nThe profile page includes a drag-and-drop PDF upload area and extracted resume preview.\n\nThe UI is being polished screen by screen instead of waiting for a large redesign at the end. This allows the product to remain usable while the underlying features are developed.\n\nI would especially welcome feedback on:\n\nContributions are welcome.\n\nBefore contributing, please read:\n\n`CONTRIBUTING.md`\n\n`SECURITY.md`\n\n`CODE_OF_CONDUCT.md`\n\nThe project is still early, so useful contributions may include:\n\nPlease keep pull requests focused and include testing or verification steps.\n\nInternational job searching is often fragmented across job boards, spreadsheets, documents, notes, and interview preparation tools.\n\nJobSearch is an attempt to bring those activities together while keeping the user in control of their data and AI provider.\n\nThe project is early, but the foundation is now in place:\n\nIf this problem interests you, I would love feedback, ideas, issues, and contributions.\n\nGitHub:\n\n[https://github.com/subraatakumar/job-search](https://github.com/subraatakumar/job-search)\n\n", "url": "https://wpnews.pro/news/building-an-open-source-ai-assisted-international-job-search-platform", "canonical_source": "https://dev.to/subraatakumar/building-an-open-source-ai-assisted-international-job-search-platform-39em", "published_at": "2026-08-25 07:08:17+00:00", "updated_at": "2026-08-25 07:13:46.872645+00:00", "lang": "en", "topics": ["artificial-intelligence", "developer-tools", "ai-products"], "entities": ["Subraata Kumar", "JobSearch", "GitHub", "Better Auth", "PostgreSQL", "Next.js", "Docker", "Cloudflare Tunnel"], "alternates": {"html": "https://wpnews.pro/news/building-an-open-source-ai-assisted-international-job-search-platform", "markdown": "https://wpnews.pro/news/building-an-open-source-ai-assisted-international-job-search-platform.md", "text": "https://wpnews.pro/news/building-an-open-source-ai-assisted-international-job-search-platform.txt", "jsonld": "https://wpnews.pro/news/building-an-open-source-ai-assisted-international-job-search-platform.jsonld"}}