AI-Powered Career Agent — From resume building to job matching,
powered by 6 specialized AI agents.
Built for the 2026 Global PBL 1st Hackathon in Irvine, CA · Live at myofferagent.com
🚀 Solo Project · 6 AI Agents
Job seekers often juggle multiple tools — resume builders, job boards, ATS checkers, and cover letter generators. My Offer Agent brings it all into one conversational interface.
It's a career assistant where 6 specialized AI agents collaborate to help you land your next job. Upload your resume, search for jobs, get ATS analysis, and generate tailored cover letters — all through a single chat. Each agent handles a specific domain and seamlessly hands off to the next when needed, powered by the OpenAI Agents SDK.
The Triage agent greets users, explains available features, and automatically hands off to the right specialist — like Job Scout — when it detects intent.
Upload a PDF resume and get a 100-point ATS compatibility score with section-by-section breakdown and actionable improvement suggestions.
Search for jobs in real-time, then get a personalized match analysis comparing your resume against specific job requirements.
| Agent | Description |
|---|---|
| Triage | Analyzes user intent and routes to the appropriate specialist agent |
| Resume Builder | Builds an ATS-optimized resume step-by-step through conversation |
| Resume Analyzer | Scores your resume on a 100-point ATS compatibility scale with section-level feedback |
| Job Scout | Searches the web in real-time for matching job postings via web search tool |
| Match Strategy | Evaluates fit between your resume and a specific job description |
| Application Writer | Generates tailored cover letters and optimized resume variants |
Agent System
- 6-agent pipeline with automatic handoff via OpenAI Agents SDK
- Server-side regex pre-routing + LLM-based triage for fast intent detection
- Persistent conversation context across agent transitions
Resume & Jobs
- PDF resume upload with client-side text extraction
- ATS score visualization with section-by-section breakdown
- Real-time job search powered by OpenAI web search tool
- Resume export as Markdown or PDF
Interface
- Agent sidebar with visual pipeline status and click-to-switch
- Message copy, retry, and timestamp controls
- Dark / Light / System theme with auto-detection
- Korean / English i18n with runtime switching
- Reduced motion support for accessibility
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Agent SDK | @openai/agents (TypeScript) |
| LLM | GPT-4o / GPT-4o-mini |
| Styling | Tailwind CSS v4 (CSS-first @theme config) |
| Validation | Zod v4 |
| PDF Parsing | pdfjs-dist v4.9 (CDN, browser-only) |
| Deployment | Cloudflare Pages via @opennextjs/cloudflare |
| Compiler | React Compiler (babel-plugin) |
- Node.js 22+
- An OpenAI API key
git clone https://github.com/chanjoongx/myofferagent.git
cd myofferagent
npm install
cp .env.example .env.localAdd your OpenAI API key to .env.local:
OPENAI_API_KEY=sk-proj-...
npm run devThe app will be available at http://localhost:3000.
src/
├── app/
│ ├── page.tsx # Landing page
│ ├── agent/page.tsx # Chat interface
│ └── api/agent/route.ts # Agent API endpoint + smart routing
├── lib/
│ ├── agents/
│ │ ├── definitions.ts # 6 agent configs via Agent.create()
│ │ ├── tools.ts # parseResume, atsScore, generateResume
│ │ ├── model-config.ts # GPT model settings
│ │ └── constants.ts # Agent name constants
│ ├── types.ts # Shared TypeScript types
│ ├── i18n.ts # Translation dictionary (ko/en)
│ ├── i18n-context.tsx # Language provider
│ └── theme-context.tsx # Theme provider
└── components/
├── chat/ # ChatInterface, MessageBubble, AgentStatusPanel
├── resume/ # ResumeUploader, ATSScoreCard
├── jobs/ # JobCard
└── ui/ # Toast
This project is configured for Cloudflare Pages with the OpenNext adapter.
See wrangler.toml and open-next.config.ts for details.
npm run cf:build # Build
npm run cf:preview # Local preview
npm run cf:deploy # DeployOPENAI_API_KEY must be set as an encrypted environment variable in your deployment platform.
This project is licensed under the MIT License.




