CV AI Architecture
CV AI Architecture
This site is a Jekyll project tuned for fast storytelling iterations, structured data reuse, and AI-friendly exports.
System overview
- Static site generator: Jekyll 4 (GitHub Pages compatible).
- Design system:
assets/main.cssimplements the light Neubrutalist theme with section primitives (.section,.neub-card,.hero-*,.note-*). - Content model: Declarative data in
_data/, component partials in_includes/, document types via collections. - AI surface: JSON mirrors of major datasets in
/aifor agent handoff or prompt grounding.
Content pipeline
Homepage
- Section order is defined in
index.md(sectionsfront matter array). - Copy and structure data live in
_data/home.yml. - Rendering is handled by
_includes/page-builder.html, which routes to_includes/sections/*.htmlpartials (e.g.signals.htmlfor the social/channel strip andllm-profiles.htmlfor machine-readable downloads). - Adjust styling or layout in
assets/main.css; each partial uses consistent class hooks. - Reusable UI components (such as the social line) sit in
_includes/components/and are styled with.social-*helpers.
Resume
_data/resume.ymlpowers bothcv/index.htmlandai/resume.json.- Modify data once to update markup, downloads, and structured exports.
Notes collection
_notes/contains individual notes (_notes/*.md).- Collection defaults (
_config.yml) apply the_layouts/note.htmllayout and ensure clean permalinks (/notes/:slug/). notes/index.mdlists all notes usingsite.notes, styled via.notes-landingand.note-cardclasses.- To add a new note, drop a Markdown file in
_notes/with at leasttitle,date, and optionaltags,summary,subtitle.
Standalone pages
/changelog/reads_data/changelog.ymlthroughchangelog.htmlto provide a release snapshot view.- The
/legal/directory houses evergreen policies (code of conduct, terms of engagement, privacy notice, professional disclosure, responsible AI statement, accessibility statement) authored as standalone Markdown pages.
AI & automation
ai/resume.json,ai/resume.yml, andai/home.jsonexpose resume and homepage data for copilots or APIs.- Add further exports by creating files with
layout: nulland serialising data structures using| jsonify. LLM.txtremains the long-form system profile surface, and the homepagellm-profilessection links to all machine-readable variants.
SEO & metadata
_includes/seo/structured-data.htmlemits Person, WebSite, Breadcrumb, and Article JSON-LD based on the current page context._config.ymlprovides language, author, and Twitter metadata forjekyll-seo-tag.- Social profiles are centralised in
_data/social.ymland reused in both UI components and structured data.
Styling guidelines
- Custom properties in
:rootcontrol typography, spacing, and colour tokens. - Components share the
neub-cardshell for consistent shadow and border language. - Responsive behaviour is handled with modern CSS (grid, clamp) and media queries at 960px/720px/540px breakpoints.
- When introducing new components, prefer extending existing utility classes (e.g.,
.section-heading,.chip-list).
Development workflow
- Update or add data in
_data/for repeatable content. - Compose/reuse partials in
_includes/sectionsor create new ones in_includes/componentsas needed. - Style new primitives in
assets/main.css, keeping tokens centralised. - Run
bundle exec jekyll servelocally (after adding a Gemfile) to preview. - For AI surfaces, mirror any new structures in
/aiwith JSON exports.
Future extensions
- Define additional collections (e.g.,
case_studies,playbooks) using the same pattern as notes. - Introduce CMS integration by mapping
_data/home.ymlto a headless backend if needed. - Expand structured data with more Schema.org entities (Projects, Articles) as content grows.