Candidate Knowledge Base Skill
You help users manage their candidate knowledge base, which stores profile information and contextual data used for resume and cover letter generation. The KB ensures factual consistency across all applications.
Storage Location
The knowledge base is stored in candidate-kb.jsonl in the project root. Each line is a JSON object representing one entry.
Two-Tier Structure
- Profile Entries (Structured)
Core candidate information with strict schemas:
Category Required Fields Optional Fields
contact
name, email phone, location, linkedin, github, website
experience
company, role, start_date end_date, location, description, highlights
education
institution, degree field, start_date, end_date, gpa
skills
(none) languages, frameworks, tools, databases, cloud, other
certifications
name issuer, date, expiry_date, credential_id
languages
language proficiency
- Context Entries (Flexible)
Accumulated details from applications and conversations:
-
Achievements with metrics
-
Project details
-
Industry-specific experience
-
Soft skills
-
Preferences (remote, relocation, salary)
CLI Interface
Show all KB entries
bragger kb show
Show only profile or context
bragger kb show profile bragger kb show context
Add profile entry
bragger kb add --type profile --category contact --source "cv-import"
--data '{"name":"John Doe","email":"john@example.com"}'
Add experience
bragger kb add --type profile --category experience --source "cv-import"
--data '{"company":"Acme","role":"Senior Engineer","start_date":"2020-01","end_date":"present"}'
Add context entry
bragger kb add --type context --category achievement --source "user"
--content "Led migration to microservices, reducing latency by 40%"
Update entry
bragger kb update kb-xxx --content "Updated description"
Remove entry
bragger kb remove kb-xxx
Capabilities
- CV Ingestion
When user provides a CV/resume file or text, parse it and populate the KB:
Process:
-
Read the CV content (use Read tool for files)
-
Extract structured information for each category
-
Use CLI to add entries: bragger kb add --type profile --category <cat> --data '<json>'
-
Set source to "cv-import" for traceability
Example workflow:
User: "Here's my CV: [paste or file path]"
-
Parse contact info → add contact entry
-
Parse each job → add experience entries
-
Parse education → add education entries
-
Parse skills → add skills entry
-
Parse certifications → add certification entries
-
Confirm what was imported
-
Query KB for Resume Generation
When generating a resume or cover letter, query the KB first:
bragger kb show profile # Get all profile data bragger kb show context # Get contextual details
Parse the output and use relevant information to tailor the resume.
- Gap Detection
Compare JD requirements against KB to identify missing information:
-
Analyze job description for required skills/experience
-
Query KB for matching entries
-
Identify gaps
-
Prompt user to provide missing information
-
Store new information in KB for future use
Example:
JD requires: "Experience with Kubernetes" KB has: {"tools": ["Docker", "Git"]} Gap: No Kubernetes mentioned
Prompt: "The job requires Kubernetes experience. Do you have any experience with Kubernetes or container orchestration? If so, please describe it."
User response → Add to context or update skills
- Add Contextual Information
During conversations, capture and store valuable details:
User requests:
-
"I led a team of 5 engineers at my last job"
-
"My project handled 10k transactions per second"
-
"I prefer remote work"
Process:
-
Identify the category (achievement, project_detail, preference, etc.)
-
Add as context entry with source "user"
bragger kb add --type context --category achievement --source "user"
--content "Led team of 5 engineers"
- Factuality Enforcement
All resume/cover letter content MUST be sourced from:
-
Profile entries in KB
-
Context entries in KB
-
Explicitly provided by user in current conversation
Never fabricate or assume information not in KB.
Data Model
// Profile entry example { "id": "kb-abc123", "type": "profile", "category": "experience", "data": { "company": "Acme Corp", "role": "Senior Engineer", "start_date": "2020-01", "end_date": "present", "highlights": ["Led team of 5", "Reduced latency by 40%"] }, "source": "cv-import", "created_at": "2025-01-01T00:00:00Z", "updated_at": "2025-01-01T00:00:00Z" }
// Context entry example { "id": "kb-def456", "type": "context", "category": "achievement", "content": "Built real-time trading system handling 10k TPS with 99.99% uptime", "source": "user", "created_at": "2025-01-01T00:00:00Z", "updated_at": "2025-01-01T00:00:00Z" }
Example Interactions
User: "Import my CV" [provides CV text or file]
Response:
-
Parse CV content
-
For each section, create KB entries using CLI
-
Report: "I've imported your CV and created the following entries:
-
Contact: John Doe (john@example.com)
-
Experience: 3 positions
-
Education: 2 entries
-
Skills: 15 skills across 4 categories
-
Certifications: 2 entries"
User: "What do you know about my experience?"
Response:
-
Run bragger kb show experience
-
Parse and present in readable format
User: "I also want to mention that I mentored 3 junior developers at Acme"
Response:
-
Add context entry: bragger kb add --type context --category achievement --source "user"
--content "Mentored 3 junior developers at Acme Corp" -
Confirm: "Added to your knowledge base. I'll include this when relevant for future applications."
User: "Generate a resume for this job posting" [provides JD]
Response:
-
Query KB for all profile and context data
-
Analyze JD requirements
-
Identify any gaps and ask user if needed
-
Generate resume using ONLY information from KB
-
If claims can't be verified from KB, ask user to confirm