My friend was lost in the internship hunt, so I built him Get A Job.
DEV Community

My friend was lost in the internship hunt, so I built him Get A Job.

This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend What I Built I wanted to build something a friend could actually use beyond this weekend. My friend is a third-year Computer Science student looking for summer and software internships. He wants opportunities at good companies, but finding them means going through different career pages, checking locations and requirements, and figuring out which roles fit his resume. Then comes entering the same information into another application form. So I built Get A Job, an internship discovery and application assistant that keeps those steps in one place. Demo Check out the GitHub Repo: Get A Job An internship discovery and application assistant built for a real third-year Computer Science student looking for summer and software internships. Upload a resume, review your profile, and find opportunities in your current country. Each search adds new listings to the dashboard, with locations source links, matched skills and missing requirements. Application assistance fills supported forms and asks you to review everything before submitting. Stack - Frontend: Next.js, TypeScript, Tailwind CSS - Backend: FastAPI, SQLAlchemy, PostgreSQL, Alembic - AI: Ollama with Qwen3 8B - Discovery: Firecrawl and public Greenhouse/Lever job APIs - PDF / browser: pypdf and Playwright Resume understanding, job requirement extraction and answer drafts run through the local open-weight model. The AI provider can be replaced; there is no OpenAI/GPT runtime fallback. PDF parsing and match scores use deterministic code. Job discovery still needs an internet connection. Setup Prerequisites: Python 3.12+, Node.js (24 tested), PostgreSQL and Ollama. 1. Install dependencies For… How I Built It: I built Get A Job with Next.js, TypeScript, and Tailwind CSS on the frontend, backed by FastAPI and PostgreSQL. For the AI, I used Qwen3 8B running locally through Ollama. It reads the extracted resume, understands job requirements, and helps draft application answers using the user’s confirmed professional information. The generated answers are reviewed before being used. I kept the straightforward parts in regular code: - pypdf extracts resume text. - Firecrawl discovers public job listings. - Greenhouse and Lever adapters fetch published job data. - Matching scores are calculated deterministically. - Playwright prepares supported application forms. I also added validation and source evidence instead of blindly trusting the model. One thing I learned while building this was that valid JSON doesn't necessarily mean accurate information. I used Codex as a development assistant, but the finished application’s AI runs locally through Ollama. Why Does Open Innovation Matter? A resume contains personal information, and I didn't want the user to have to send it to a closed AI API just to understand their own profile. Running Qwen3 8B locally means resume inference can happen directly on the user's machine. Job discovery still needs the internet, and applying obviously involves sending reviewed information to an employer, but the resume-processing part stays local. It also gives me more control. The model sits behind a provider interface, so I can experiment with different open-weight models, prompts, and validation methods without rebuilding the application around a proprietary API. Local inference isn't perfect-it needs more resources and can still make mistakes. But it gives the project more control over how personal data is processed. Top comments (0)

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.