A professional CV website driven by real GitHub activity evidence, with AI-proposed content improvements that are verified before they can touch the CV. Runs on GitHub Actions and deploys to GitHub Pages.
Live site: cv.adrianwedd.com
- Activity Tracker (
activity-tracker.yml) runs daily, collecting cross-repo GitHub activity evidence viaactivity-collector.js. It commits only on material change, and then triggers the enhancement pipeline viarepository_dispatch - CV Enhancement Pipeline (
cv-enhancement.yml) runs weekly (Mondays 21:00 UTC), on evidence dispatch, or manually. Stages: ingest β propose (enhance.jswrites proposals todata/ai-enhancements.json) β verify (verify-proposals.jsapplies only evidence-supported proposals tobase-cv.json) β validate β render (cv-generator.js) β publish - Validation gate blocks deployment if the hallucination detector or content guardian finds issues
cv/
βββ index.html # Main CV webpage
βββ watch-me-work.html # Redirect stub β adrianwedd.com/activity/ (dashboard migrated)
βββ assets/
β βββ styles.css # CSS with dark/light themes
β βββ script.js # Interactive features
βββ data/
β βββ base-cv.json # Core CV data
βββ .github/
β βββ workflows/
β β βββ cv-enhancement.yml # AI enhancement pipeline
β β βββ activity-tracker.yml # GitHub activity collection
β βββ scripts/
β βββ activity-collector.js # Cross-repo GitHub evidence collection
β βββ ai/client.js # Provider-neutral AI client (openrouter/ollama/gemini)
β βββ enhance.js # AI proposal stage
β βββ verify-proposals.js # Proposal verification + apply stage
β βββ cv-generator.js # Website generator
β βββ ai-hallucination-detector.js # Content validation
β βββ content-guardian.js # Prevents fabricated claims
βββ package.json
# Serve locally
python3 -m http.server 8000
# or
npx serve .
# Validate JSON data
npm run validate:json
# Run pipeline scripts
cd .github/scripts && npm install
node activity-collector.js # requires GITHUB_TOKEN
node enhance.js # requires OPENROUTER_API_KEY (or GEMINI_API_KEY / OLLAMA_HOST)
node verify-proposals.js
node cv-generator.jsGitHub secrets:
OPENROUTER_API_KEY- default AI provider (optional: without it the enhancement stage is skipped and the site still builds from curated content)GEMINI_API_KEY- alternate AI providerPERSONAL_ACCESS_TOKEN- lets the activity tracker'srepository_dispatchstart the enhancement workflowGITHUB_TOKEN- provided automatically by GitHub Actions
The system includes safeguards against AI hallucination:
- Proposal verification (
verify-proposals.js) rejects AI proposals with unsupported numbers, new credentials, corporate filler, or drastic length changes before they can reachbase-cv.json - Hallucination detector validates claims against actual GitHub metrics
- Content guardian maintains a registry of verified claims and blocks fabricated ones
- The detector and guardian run as gates in the CI pipeline - failures block deployment
MIT