How /expand Enriches Candidate Profiles by Scanning GitHub Repositories and Course Syllabi
The /expand command automatically discovers hidden competencies from linked GitHub repositories and course syllabi through a six-stage pipeline that extracts technical skills from README files, programming languages, and official curricula, then appends them to the candidate profile with full source attribution.
The ai-job-search repository by MadsLorentzen includes a sophisticated competency enrichment system that eliminates manual resume updates. The /expand command, defined in .claude/commands/expand.md, orchestrates an automated pipeline that scans public GitHub repositories and educational content to surface implicit technical skills. This approach ensures that every framework mention in a project README or certification syllabus gets captured as a concrete profile entry.
The Six-Stage Enrichment Architecture
Stage 0 – Profile Baseline Loading
The pipeline begins by reading 01-candidate-profile.md and 02-behavioral-profile.md to establish existing competencies. This prevents duplication and informs the discovery algorithms about the candidate's current skill baseline.
Stage 1 – Multi-Source Discovery
The system traverses several document sources in fixed order:
- Documents: CV files in
documents/cv/, LinkedIn exports indocuments/linkedin/, diplomas, and references - GitHub: Retrieves the public profile using the username from the candidate profile, then fetches all repositories (not merely pinned ones), extracting README content, repository names, descriptions, languages, topics, and explicit framework mentions
- External URLs: Portfolio sites, Kaggle profiles, and Google Scholar pages
Stage 2 – Dual-Mode Web Enrichment
For each discovered experience item, the system applies two complementary approaches:
- Approach A: Direct lookup of official syllabi, certification exam guides, and tool documentation (e.g., "Coursera – Deep Learning Specialisation syllabus")
- Approach B: Contextual inference from textual descriptions, domain requirements, and typical tool-chain associations
Both results merge into a unified competency list.
Stage 3 – Competency Classification
Discovered skills undergo deduplication and classification into five buckets:
- Technical Skills – Primary
- Technical Skills – Secondary
- Domain Knowledge
- Methods & Practices
- Soft / Behavioral
Each entry preserves its source metadata and discovery method (direct lookup vs. inference).
Stage 4 – Interactive Review
The system generates a markdown summary table grouping new competencies by source type (courses, GitHub repos, job responsibilities). Candidates choose between adding everything, reviewing by group, or skipping entirely. No files modify until explicit confirmation.
Stage 5 – Additive Write-Back
Confirmed competencies append to the appropriate profile sections using additive-only operations. Each entry includes inline source annotations like *(GitHub — my-project)* or *(Coursera — Deep Learning Specialisation)*.
Stage 6 – Execution Report
The command outputs a final "/expand Complete" report detailing additions, processed sources, and items requiring manual review.
Deep GitHub Repository Analysis
Unlike simple profile imports that only check pinned repositories, the /expand command performs exhaustive scanning of all public repositories. For each repository found under the candidate's GitHub username, the system fetches the README to capture:
- Repository metadata: Name, description, and topics
- Language statistics: Primary and secondary programming languages
- Framework detection: Explicit mentions of tools like TensorFlow, FastAPI, or Docker in documentation
- Project context: Inferred domains based on README content and tech stack combinations
This ensures that side projects and older repositories contribute equally to skill recognition, not just curated pinned items.
Course Syllabus Intelligence
The command treats educational credentials as skill vectors rather than simple line items. When processing courses or certifications from documents/diplomas/ or LinkedIn exports, the system:
- Locates official syllabi and certification exam guides through web search
- Extracts specific technical competencies (e.g., "Back-propagation" from a Deep Learning Specialization)
- Cross-references implied skills from course descriptions when official syllabi are unavailable
Running the /expand Command
Execution requires no parameters:
/expand
The console displays a structured progress log:
## /expand found 27 new competency signals across 5 sources
**COURSES & CERTIFICATIONS**
Source: Coursera — Deep Learning Specialisation
+ Neural Networks
+ Back-propagation
+ TensorFlow
**GITHUB — my-awesome-repo**
Source: README + inferred from tech stack
+ Python
+ FastAPI
+ Docker
At completion, the system prompts:
> How would you like to proceed?
> - `all` — Add everything above to your profile
> - `review` — Walk through each source group
> - `skip` — Cancel without writing anything
Responding all triggers the write-back phase, appending entries to the profile files:
### Technical Skills — Primary
- Python *(GitHub — my-awesome-repo)*
- TensorFlow *(Coursera — Deep Learning Specialisation)*
- FastAPI *(GitHub — my-awesome-repo)*
Source Traceability and Idempotency
The implementation guarantees additive-only operations—existing profile content never gets overwritten. The source-traceable design attaches provenance metadata to every entry, creating an audit trail from discovery to profile integration.
The system is also idempotent: repeated executions filter out previously added competencies by checking existing source tags. If /expand runs twice against the same GitHub repository, the second execution recognizes the *(GitHub — repo-name)* annotations and excludes duplicates.
Summary
- The
/expandcommand in MadsLorentzen/ai-job-search automates competency discovery through a six-stage pipeline defined in.claude/commands/expand.md - GitHub scanning retrieves all public repositories, extracting skills from README content, languages, and topics—not just pinned items
- Course syllabi enrichment combines direct syllabus lookups with contextual inference to capture specific technical methods
- The additive-only write-back system preserves existing profile data while appending new entries with full source attribution
- Idempotent execution prevents duplication across multiple runs by filtering against existing source tags
Frequently Asked Questions
Does /expand modify my existing profile content?
No. The command operates on an additive-only basis. It appends newly discovered competencies to 01-candidate-profile.md and 02-behavioral-profile.md but never deletes or alters existing entries. Each addition includes a source annotation to maintain data integrity.
How does the system handle private GitHub repositories?
The command only processes public repositories associated with the username specified in the candidate profile. Private repositories remain inaccessible to the enrichment pipeline, ensuring compliance with repository visibility settings.
Can I review the discovered competencies before they get added to my profile?
Yes. Stage 4 of the pipeline generates an interactive review interface that displays all proposed additions grouped by source type (courses, GitHub repos, certifications). You can choose to add everything at once (all), review by category (review), or cancel the operation entirely (skip).
What prevents duplicate entries if I run /expand multiple times?
The system implements idempotency through source-tagged entries. Each competency carries an inline annotation like *(GitHub — repo-name)* or *(Coursera — Course Title)*. Subsequent executions filter out any competencies matching existing source signatures, ensuring clean, deduplicated profile files.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →