The AI Agent has been enhanced with a knowledge base system that allows it to understand the codebase structure and intelligently handle natural language commands. This enables users to give high-level commands like "Update the Ford resume with this experience" without needing to specify exact file paths or IDs.
Location: agent_knowledge_base.json
This JSON file contains:
- Data structure mappings - How resumes, job listings, and other data are organized
- Common operations - Step-by-step guides for frequent tasks
- API endpoints - Available REST API endpoints
- Command patterns - Natural language patterns the agent can recognize
- File locations - Key directories and files in the codebase
The agent's system prompt (agent.py) has been updated to:
- Reference the knowledge base structure
- Understand resume naming conventions
- Parse natural language commands
- Map company names to resume files
- Execute appropriate helper scripts
The agent can parse commands like:
"Update the Ford resume with this experience: data/job_listings/Tailored Experience Summary for Ford.md"
And automatically:
- Extract the company identifier ("Ford")
- Search
data/resumes/index.jsonfor matching resume - Find the resume ID
- Execute the update operation
The agent knows how to find resumes by:
- Company name: "Ford", "GM", "Credibly"
- Partial name match: Case-insensitive search
- Resume ID: Direct UUID lookup
Resume naming pattern: {FirstName}_{LastName}_{Role}_{Company}
Example: Sidney_Jones_Senior_Software_Engineer_Ford
A Python script that automates resume updates:
python src/update_resume_experience.py --resume "Ford" --experience "data/job_listings/Tailored Experience Summary for Ford.md"Features:
- Finds resume by company name or ID
- Parses experience from markdown files
- Updates resume JSON automatically
- Updates timestamps in index.json
- Supports prepend (default) or replace mode
Options:
--resume: Company name or resume name to search for--resume-id: Direct UUID (alternative to --resume)--experience: Path to markdown file with experience--replace: Replace all experience (default: prepend)--data-dir: Data directory path (default: data)
Specialized scripts for managing individual resume sections:
Available Scripts:
basic_info.py- Name, title, location, contact informationsummary.py- Resume summary texttechnical_skills.py- Technical proficiencies by categoryexpertise.py- Areas of expertiseachievements.py- Achievementseducation.py- Education entriescertifications.py- Certification entriesexperience.py- Work experience and bullets
Example Usage:
# Update title
python src/crud/basic_info.py --resume "Master Resume" --update-title "Principal Architect"
# Add technical skill
python src/crud/technical_skills.py --resume "Ford" --append-to-category "languages" "Python"
# Add certification
python src/crud/certifications.py --resume "Ford" --add --name "AWS Solutions Architect" --issuer "Amazon" --date "Nov 2025"
# List expertise areas
python src/crud/expertise.py --resume "Master Resume" --listCommon Features:
- Natural language friendly (find by resume name)
- Automatic timestamp updates
- Built-in validation
- Consistent error handling
- Comprehensive help (
--help)
See CRUD Operations Documentation for complete guide.
Location: data/resumes/
Index File: data/resumes/index.json
{
"resumes": [
{
"id": "d474d761-18f2-48ab-99b5-9f30c54f75b2",
"name": "Sidney_Jones_Senior_Software_Engineer_Ford",
"created_at": "2025-10-12T08:49:00.020000",
"updated_at": "2025-10-12T08:51:39.985858",
"job_listing_id": null,
"is_master": false,
"description": "Duplicated from Sidney_Jones_Senior_Software_Engineer_GM"
}
]
}Resume Files: data/resumes/{UUID}.json
Location: data/job_listings/
File Types:
- JSON files:
{UUID}.json- Structured job listing data - Markdown files:
- Job descriptions:
Sr. Software Engineer - at Credibly.md - Tailored experiences:
Tailored Experience Summary for Ford.md
- Job descriptions:
User Command:
Update the Ford resume with this experience: "data/job_listings/Tailored Experience Summary for Ford.md"
Agent Execution:
run: python src/update_resume_experience.py --resume "Ford" --experience "data/job_listings/Tailored Experience Summary for Ford.md"What Happens:
- Script searches
data/resumes/index.jsonfor resume containing "Ford" - Finds:
Sidney_Jones_Senior_Software_Engineer_Ford(ID:d474d761-18f2-48ab-99b5-9f30c54f75b2) - Parses experience sections from markdown file
- Updates
data/resumes/d474d761-18f2-48ab-99b5-9f30c54f75b2.json - Updates timestamp in index.json
User Command:
List all resumes
Agent Execution:
run: cat data/resumes/index.jsonOr via API:
GET http://localhost:5000/api/resumesUser Command:
Update my title to Principal Software Architect
Agent Execution:
run: python src/crud/basic_info.py --resume "Master Resume" --update-title "Principal Software Architect"User Command:
Add Python and Rust to my programming languages
Agent Execution:
run: python src/crud/technical_skills.py --resume "Master Resume" --append-to-category "languages" "Python, Rust"User Command:
Add my AWS certification
Agent Execution:
run: python src/crud/certifications.py --resume "Master Resume" --add --name "AWS Solutions Architect" --issuer "Amazon" --date "November 2025"User Command:
List my areas of expertise
Agent Execution:
run: python src/crud/expertise.py --resume "Master Resume" --listUser Command:
Add a bullet to my Microsoft experience about leading a team
Agent Execution:
run: python src/crud/experience.py --resume "Master Resume" --add-bullet --employer "Microsoft" --text "Led team of 10 engineers in developing cloud-native solutions" --tags "Leadership,Cloud"User Command:
Tailor my resume for the Credibly position
Agent Execution:
run: python src/tailor.py --resume data/master_resume.json --jd "data/job_listings/Sr. Software Engineer - at Credibly.md" --out out/credibly_tailored.html --format html --theme professionalFor security, the agent can only execute whitelisted commands:
python src/tailor.py- Resume tailoringpython src/update_resume_experience.py- Resume updatespython -m pytest- Running testspython -m json.tool- JSON formattinggit status,git log,git diff- Git operationsls,dir,pwd,echo- File system navigationcat,type- File reading
Dangerous commands are blocked (e.g., rm -rf, format, sudo).
The agent can also use REST API endpoints:
POST /api/agent/chat- Send messages to agentGET /api/agent/memory- Get conversation historyPOST /api/agent/memory/clear- Clear memoryPOST /api/agent/validate-command- Validate command security
GET /api/resumes- List all resumesGET /api/resumes/{id}- Get specific resumePOST /api/resumes- Create new resumePUT /api/resumes/{id}- Update resumePOST /api/resumes/{id}/duplicate- Duplicate resumePOST /api/resumes/{id}/tailor- Tailor resume
GET /api/job-listings- List all job listingsGET /api/job-listings/{id}- Get specific job listingPOST /api/job-listings- Create new job listing
User:
Update the Ford resume with this experience: "C:\source\repos\bpm\internal\agentic-resume-tailor\data\job_listings\Tailored Experience Summary for Ford.md"
Agent Response:
I'll update the Ford resume with the experience from that file.
run: python src/update_resume_experience.py --resume "Ford" --experience "data/job_listings/Tailored Experience Summary for Ford.md"
✅ Successfully updated resume d474d761-18f2-48ab-99b5-9f30c54f75b2
Found resume: Sidney_Jones_Senior_Software_Engineer_Ford
Added 5 experience entries
User:
What resumes do I have?
Agent Response:
Let me check your available resumes.
run: cat data/resumes/index.json
You have the following resumes:
1. Master Resume (ID: b3013a2a-349a-4080-802c-3bbe6714b576)
2. Sidney_Jones_Senior_Software_Engineer_Credibly (ID: a041bd2e-d54b-488f-adda-e4c707d5332d)
3. Sidney_Jones_Senior_Software_Engineer_GM (ID: f3bc0d6d-aea7-4e08-96b8-5fc6b581138b)
4. Sidney_Jones_Senior_Software_Engineer_Ford (ID: d474d761-18f2-48ab-99b5-9f30c54f75b2)
User:
Tailor my resume for the GM position
Agent Response:
I'll tailor your resume for the GM position. Let me use the master resume and the GM job description.
run: python src/tailor.py --resume data/master_resume.json --jd "data/job_listings/Tailored Experience Summary for GM.md" --out out/gm_tailored.html --format html --theme professional
✅ Resume tailored successfully!
Output: out/gm_tailored.html
Tests for the knowledge base system are in:
tests/test_update_resume_experience.py- Tests for the helper script
Run tests:
python -m pytest tests/test_update_resume_experience.py -vPotential improvements to the knowledge base system:
- Semantic Search - Use embeddings to find similar resumes/experiences
- Auto-tagging - Automatically tag experiences with relevant skills
- Resume Comparison - Compare different resume versions
- Job Matching - Suggest which resume to use for a job posting
- Experience Library - Maintain a library of reusable experience bullets
- Version Control - Track changes to resumes over time
- Analytics - Track which resumes get the most responses
Problem: Agent says "No resume found matching 'Ford'"
Solution:
- Check
data/resumes/index.jsonto see available resumes - Verify the company name is in the resume name
- Try using the full resume name or ID
Problem: Experience from markdown file isn't being added
Solution:
- Verify markdown format uses
### Company — Role (Dates)headers - Check that bullets start with
* - Ensure tags line uses
**Tags:**format
Problem: Agent says command is not allowed
Solution:
- Check
src/api/app.pyforALLOWED_COMMAND_PREFIXES - Use one of the helper scripts instead of direct commands
- Request the command be added to the whitelist
To extend the knowledge base:
- Update
agent_knowledge_base.jsonwith new operations - Update agent system prompt in
agent.py - Add new helper scripts to
src/ - Update command whitelist in
src/api/app.py - Add tests for new functionality
- Update this documentation