Inspiration
Job descriptions are often vague, overloaded with requirements, and hard to evaluate objectively. CareerAgent was built to answer one simple question: “Based on my resume, is this job worth applying to?”
What it does
CareerAgent compares a resume with a job description and returns:
- a match score
- matched and missing skills
- evidence from the resume
- skill gaps
- interview preparation topics
- a recommendation: APPLY, MAYBE, or SKIP
Its core principle is:
The LLM interprets. Code decides. Evals verify.
How we built it
CareerAgent uses:
- Python
- Strands Agents SDK
- Amazon Bedrock
- Amazon Nova
- Amazon Bedrock AgentCore
- FastAPI
- PostgreSQL
- SQLAlchemy
- Alembic
- Docker
- Nix
- pytest
The LLM extracts and interprets information, while deterministic Python code handles normalization, scoring, and recommendation rules.
Challenges we ran into
The biggest challenge was deploying to AgentCore.
The runtime appeared healthy but returned HTTP 500 errors. We traced the issue to a Python 3.13 compatibility problem in the Strands tool serialization path.
Rebuilding the runtime with Python 3.11 fixed the issue.
We also used evals to catch problems such as unsupported skill claims and prompt vocabulary leaking into extracted skills.
Accomplishments that we're proud of
CareerAgent became more than a chatbot wrapper.
We built:
- a real agent workflow with tools
- deterministic recommendation logic
- AgentCore deployment
- persistent evaluation history
- a web UI and API
- automated tests and LLM evals
A representative evaluation run achieved roughly:
- 97% skill recall
- 99% skill precision
- 92% recommendation accuracy
- 100% tool invocation success
- 0% fabricated evidence
What we learned
The biggest lesson was that AI systems are more reliable when probabilistic reasoning and deterministic logic are separated.
We also learned a lot about:
- Strands agents
- Bedrock and Nova
- AgentCore deployment
- tool calling
- LLM evals
- cloud debugging
- structured AI outputs
What's next for CareerAgent
Next, we want to focus on:
- loading jobs directly from URLs
- reducing response latency
- benchmarking additional Bedrock models
- improving evaluation history
- comparing multiple jobs at once
Long term, CareerAgent could help users prioritize the opportunities where they are most likely to succeed.
Built With
- alembic
- amazon-bedrock
- amazon-bedrock-agentcore
- amazon-nova
- css
- docker
- docker-compose
- fastapi
- html
- javascript
- nix
- postgresql
- pydantic
- pytest
- python
- ruff
- sqlalchemy
- strands-agents-sdk
Log in or sign up for Devpost to join the conversation.