diff --git a/_activities/studentblogs.md b/_activities/studentblogs.md
index be1de041..a25a3c34 100644
--- a/_activities/studentblogs.md
+++ b/_activities/studentblogs.md
@@ -1,81 +1,121 @@
---
-title: "Blogs"
+title: "Student Blogs"
author: "Emanuele Usai"
layout: default
+description: "Read blog posts written by HumanAI GSoC students about their research projects in AI and Arts & Humanities."
---
+
-
-
-# Google Summer of Code blog posts
+# Google Summer of Code — Student Blogs
## Introduction
-This is a collection of blog posts from GSoC students who worked with HumanAI.
+Each year, HumanAI students share their GSoC journey through blog posts, covering everything from their
+first lines of code to final results. These are real stories from real researchers applying machine
+learning to arts, humanities, music, literature, and more.
+
+---
### Google Summer of Code 2025
+---
+
### Google Summer of Code 2024
-
- | "Examination of the evolution of language among Dark Web users" by Domenico Lacavalla |
-
-
-
- | "RenAIssance" by Yukinori Yamamoto |
-
-
-
- | "Historical Text Recognition using CRNN Model" by Shashank Shekhar Singh |
-
-
-
- | "ArtExtract" by Soyoung Park |
-
-
-
- | "ChoreoAI" by Luis Zerkowski |
-
-
-
- | "AI-Generated Choreography - from Solos to Duets" by Zixuan Wang |
-
-
-
- | "Gender, Roles & Careers: Exploring Congruity Theories" by Rashi Gupta |
-
-
-
- | "Enhancing Program Evaluation Research by Leveraging AI for Integrated Analysis of Mixed-Methods Data" by Shao Jin |
-
-
-
- | "Fatigue detection" by Aditya Arvind |
-
-
-
- | "Text Recognition using Transformer Models" by Arsh Ahmed Faisal Khan |
-
-
-
- | "Decoding History: Advancing Text Recognition" by Utsav Rai |
-
-
-
+---
-
+## Write Your Blog Post
+Are you a current GSoC student with HumanAI? Share your experience!
+Write about a challenge you solved, a surprising finding, or your overall journey.
+Publish on [Medium](https://medium.com) or your personal site, then email the link to
+[human-ai@cern.ch](mailto:human-ai@cern.ch) to have it added here.
## Contacts
-*HumanAI GSoC Admins* [human-ai@cern.ch](mailto:human-ai@cern.ch)
-
+*HumanAI GSoC Admins* — [human-ai@cern.ch](mailto:human-ai@cern.ch)
diff --git a/_includes/gsoc_project.ext b/_includes/gsoc_project.ext
index 8cd2bdeb..86b52e22 100644
--- a/_includes/gsoc_project.ext
+++ b/_includes/gsoc_project.ext
@@ -26,6 +26,7 @@ Use the project name as the page title if none has been specified (they are typi
## Project Proposals
+
{% for proposal in site.gsocproposals %}
{% assign url_tokens = proposal.url | split: '/' %}
{% assign year_position = url_tokens.size | minus: 2 %}
@@ -35,9 +36,26 @@ Use the project name as the page title if none has been specified (they are typi
{% capture u_proposal_project %}{{ project | upcase }}{% endcapture %}
{% capture u_project %}{{ page.project | upcase }}{% endcapture %}
{% if u_proposal_project == u_project %}
-* [ {{ proposal.title }} ]( {{ proposal.url }} )
+
+
+
+ {% if proposal.difficulty %}
+ {{ proposal.difficulty }}
+ {% endif %}
+ {% for req in proposal.requirements limit:5 %}
+ {{ req }}
+ {% endfor %}
+ {% for tag in proposal.tags limit:5 %}
+ {{ tag }}
+ {% endfor %}
+
+ {% if proposal.duration %}
+
⏱ {{ proposal.duration }}
+ {% endif %}
+
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
+
diff --git a/_includes/gsoc_proposal.ext b/_includes/gsoc_proposal.ext
index c92ac4c5..1e2ff6c6 100644
--- a/_includes/gsoc_proposal.ext
+++ b/_includes/gsoc_proposal.ext
@@ -21,6 +21,7 @@ grouping by organization and is case insensitive.
## Project List
+
{% for proposal in site.gsocproposals %}
{% assign url_tokens = proposal.url | split: '/' %}
{% assign year_position = url_tokens.size | minus: 2 %}
@@ -30,9 +31,26 @@ grouping by organization and is case insensitive.
{% capture u_proposal_org %}{{ organization | upcase }}{% endcapture %}
{% capture u_org %}{{ page.organization | upcase }}{% endcapture %}
{% if u_proposal_org == u_org %}
-* [ {{ proposal.title }} ]( {{ proposal.url }} )
+
+
+
+ {% if proposal.difficulty %}
+ {{ proposal.difficulty }}
+ {% endif %}
+ {% for req in proposal.requirements limit:5 %}
+ {{ req }}
+ {% endfor %}
+ {% for tag in proposal.tags limit:5 %}
+ {{ tag }}
+ {% endfor %}
+
+ {% if proposal.duration %}
+
⏱ {{ proposal.duration }}
+ {% endif %}
+
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
+
diff --git a/_includes/navbar.ext b/_includes/navbar.ext
index 01ac4d7c..ab8d9cc9 100644
--- a/_includes/navbar.ext
+++ b/_includes/navbar.ext
@@ -1,27 +1,35 @@
-
diff --git a/_layouts/main.html b/_layouts/main.html
index 10189509..2be4441e 100644
--- a/_layouts/main.html
+++ b/_layouts/main.html
@@ -40,34 +40,9 @@
{% endif %}
-
-
-
-
-
-
-
-
-
-
-
+
+
+
HumanAI in GSoC 2026
The HumanAI open source umbrella organization plans to participate in the 2026 Google Summer of Code. If you are a student interested in our projects please check our ideas page.
@@ -77,19 +52,11 @@
HumanAI in GSoC 2026
alt="GSoC-logo" style="display: block; width:15%; margin-left: auto; margin-right: auto;">
Please take a look at our GSoC Page for more details.
-
+
You can also find us on Gitter.
-
+
Organization administrators:
@@ -102,20 +69,7 @@
HumanAI in GSoC 2026
-
-
-
-
{{ content }}
diff --git a/css/hsf.css b/css/hsf.css
index 069e3984..021cf9ae 100644
--- a/css/hsf.css
+++ b/css/hsf.css
@@ -1,264 +1,360 @@
-/* Boostrap blog theme */
+@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
+
+:root {
+ /* Brand colors inspired by TDS clean design */
+ --color-primary: #2563eb;
+ --color-accent: #f97316;
+ --color-danger: #cc5555;
+
+ /* Surfaces */
+ --color-bg: #ffffff;
+ --color-surface: #f8fafc;
+ --color-border: #e2e8f0;
+
+ /* Text */
+ --color-text: #334155;
+ --color-muted: #64748b;
+
+ /* Navbar */
+ --color-nav-bg: #1e293b;
+ --color-nav-text: #f1f5f9;
+
+ /* Typography */
+ --font-base: 'Inter', system-ui, -apple-system, sans-serif;
+ --radius: 8px;
+ --shadow-sm: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.05);
+}
+
+@media (prefers-color-scheme: dark) {
+ :root {
+ --color-bg: #0f172a;
+ --color-surface: #1e293b;
+ --color-border: #334155;
+ --color-text: #e2e8f0;
+ --color-muted: #94a3b8;
+ --color-nav-bg: #020617;
+ }
-/*
- * Globals
- */
+ body {
+ background-color: var(--color-bg);
+ }
-p {
-font-family: Helvetica, sans-serif;
-}
-H1 {
-font-family: Helvetica, sans-serif;
-}
-H2 {
-font-family: Helvetica, sans-serif;
-}
-H3 {
-font-family: Helvetica, sans-serif;
-}
+ .navbar {
+ background-color: var(--color-nav-bg) !important;
+ border-color: var(--color-border);
+ }
+ .navbar-default .navbar-nav > li > a {
+ color: var(--color-text);
+ }
-/*
- * Override Bootstrap's default container.
- */
+ .blog-main {
+ background-color: var(--color-bg);
+ }
-@media (min-width: 1200px) {
- .container {
- width: 970px;
+ .alert-warning {
+ background-color: #451a03;
+ border-color: #78350f;
+ color: #fef3c7;
}
-}
+ .alert-info {
+ background-color: #1e3a5f;
+ border-color: #1e40af;
+ color: #dbeafe;
+ }
-/*
- * Centered image
- */
+ .jumbotron {
+ background-color: var(--color-surface);
+ color: var(--color-text);
+ }
-.centered-image {
- margin: 0 auto;
- display: block;
-}
+ hr {
+ border-color: var(--color-border);
+ }
+ .lead {
+ color: var(--color-text);
+ }
-/*
- * Masthead for nav
- */
+ h1, h2, h3, h4, h5, h6 {
+ color: var(--color-text);
+ }
-.blog-masthead {
- background-color: #428bca;
- -webkit-box-shadow: inset 0 -2px 5px rgba(0,0,0,.1);
- box-shadow: inset 0 -2px 5px rgba(0,0,0,.1);
-}
+ .panel {
+ background-color: var(--color-surface);
+ border-color: var(--color-border);
+ }
-/* Nav links */
-.blog-nav-item {
- position: relative;
- display: inline-block;
- padding: 10px;
- font-weight: 500;
- color: #fff;
-}
-.blog-nav-item:hover,
-.blog-nav-item:focus {
- color: #fff;
- text-decoration: none;
-}
+ .panel-heading {
+ background-color: var(--color-nav-bg);
+ border-color: var(--color-border);
+ color: var(--color-text);
+ }
-/* Active state gets a caret at the bottom */
-.blog-nav .active {
- color: #fff;
-}
-.blog-nav .active:after {
- position: absolute;
- bottom: 0;
- left: 50%;
- width: 0;
- height: 0;
- margin-left: -5px;
- vertical-align: middle;
- content: " ";
- border-right: 5px solid transparent;
- border-bottom: 5px solid;
- border-left: 5px solid transparent;
-}
+ .panel-body {
+ color: var(--color-text);
+ }
+
+ .list-group-item {
+ background-color: var(--color-surface);
+ border-color: var(--color-border);
+ color: var(--color-text);
+ }
+ .well {
+ background-color: var(--color-surface);
+ border-color: var(--color-border);
+ color: var(--color-text);
+ }
-/*
- * Blog name and description
- */
+ pre {
+ background-color: #1e1e1e;
+ border-color: var(--color-border);
+ color: #d4d4d4;
+ }
-.blog-header {
- padding-top: 20px;
- padding-bottom: 20px;
-}
-.blog-title {
- margin-top: 30px;
- margin-bottom: 0;
- font-size: 50px;
- font-weight: normal;
-}
-.blog-description {
- font-size: 20px;
- color: #999;
-}
+ code {
+ background-color: var(--color-surface);
+ color: #e0e7ff;
+ }
+ blockquote {
+ border-left-color: var(--color-primary);
+ color: var(--color-muted);
+ }
-/*
- * Main column and sidebar layout
- */
+ .dropdown-menu {
+ background-color: var(--color-surface);
+ border-color: var(--color-border);
+ }
-.blog-main {
- font-size: 14px;
- line-height: 1.5;
-}
+ .dropdown-menu > li > a {
+ color: var(--color-text);
+ }
-/* Sidebar modules for boxing content */
-.sidebar-module {
- padding: 15px;
- margin: 0 -15px 15px;
+ .dropdown-menu > li > a:hover,
+ .dropdown-menu > li > a:focus {
+ background-color: rgba(255,255,255,0.1);
+ color: #e0e7ff;
+ }
+
+ .tag { background: #312e81; color: #e0e7ff; }
+ .tag-difficulty { background: #78350f; color: #fef3c7; }
}
-.sidebar-module-inset {
- padding: 15px;
- background-color: #f5f5f5;
- border-radius: 4px;
+
+body {
+ font-family: var(--font-base);
+ color: var(--color-text);
+ background-color: var(--color-bg);
+ line-height: 1.6;
}
-.sidebar-module-inset p:last-child,
-.sidebar-module-inset ul:last-child,
-.sidebar-module-inset ol:last-child {
- margin-bottom: 0;
+
+p, h1, h2, h3, h4, h5, h6 {
+ font-family: var(--font-base);
+ color: var(--color-text);
}
+/* Override Bootstrap's default container */
+@media (min-width: 1200px) {
+ .container {
+ width: 970px;
+ }
+}
-/* Pagination */
-.pager {
- margin-bottom: 60px;
- text-align: left;
+/* Centered image */
+.centered-image {
+ margin: 0 auto;
+ display: block;
}
-.pager > li > a {
- width: 140px;
- padding: 10px 20px;
- text-align: center;
- border-radius: 30px;
+
+/* Navigation Links */
+.navbar {
+ font-weight: 500;
+ background-color: var(--color-nav-bg);
+ min-height: 50px;
+ border: none;
+ box-shadow: var(--shadow-sm);
}
+.navbar-brand {
+ color: var(--color-nav-text) !important;
+ font-weight: 600;
+}
-/*
- * Blog posts
- */
+.navbar-default .navbar-nav > li > a {
+ color: var(--color-nav-text);
+}
-.blog-post {
- margin-bottom: 30px;
- padding: 10px 20px; /* I don't understand why this is needed... */
+.navbar-default .navbar-nav > li > a:focus,
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-brand:hover {
+ color: var(--color-accent) !important;
}
-.blog-post-title {
- margin-bottom: 5px;
- font-size: 24px;
+
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:focus,
+.navbar-default .navbar-nav > .open > a:hover {
+ background-color: rgba(255, 255, 255, 0.1);
+ color: var(--color-nav-text);
}
-.blog-post-meta {
- margin-bottom: 20px;
- color: #999;
+
+.dropdown-menu {
+ background-color: var(--color-surface);
+ border: 1px solid var(--color-border);
}
+.dropdown-menu > li > a {
+ color: var(--color-text);
+}
-/*
- * Footer
- */
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ background-color: rgba(0,0,0,0.05);
+ color: var(--color-primary);
+}
-.blog-footer {
- padding: 40px 0;
- color: #999;
- text-align: center;
- background-color: #f9f9f9;
- border-top: 1px solid #e5e5e5;
+/* Links */
+a {
+ color: var(--color-primary);
+ text-decoration: none;
+ transition: color 0.15s ease;
}
-.blog-footer p:last-child {
- margin-bottom: 0;
+
+a:hover {
+ color: var(--color-accent);
+ text-decoration: underline;
}
-.navbar-nav {
- padding-top: 0px;
- padding-bottom: 0px;
+a:focus-visible, button:focus-visible {
+ outline: 2px solid var(--color-primary);
+ outline-offset: 3px;
+ border-radius: 3px;
}
-.navbar {
- font-weight: 500;
- background-color: #555555;
- min-height: 40px;
+/* Proposal Grid & Cards */
+.proposal-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
+ gap: 1.5rem;
+ margin: 1.5rem 0;
}
-.navbar-brand {
- height: 40px;
- padding: 12.5px 15px;
- font-size: 15px;
+.proposal-card {
+ border: 1px solid var(--color-border);
+ border-radius: var(--radius);
+ padding: 1.5rem;
+ background: var(--color-surface);
+ transition: box-shadow 0.2s, transform 0.2s;
+ display: flex;
+ flex-direction: column;
}
-.navbar-default .navbar-nav > li > a:focus,
-.navbar-default .navbar-nav > li > a:hover,
-.navbar-default .navbar-brand:hover{
- color: #f39c12;
+.proposal-card h4 {
+ margin-top: 0;
+ font-size: 1.1rem;
+ font-weight: 600;
+ line-height: 1.4;
+ margin-bottom: 1rem;
}
-.navbar-nav>li>a {
- padding-top: 9.5px;
- padding-bottom: 9.5px
+.proposal-card:hover {
+ box-shadow: var(--shadow-sm);
+ transform: translateY(-2px);
+ border-color: var(--color-primary);
}
-a {
- color: #cc5555;
+.card-meta {
+ margin-bottom: 1rem;
+ flex-grow: 1;
}
-a:hover {
- color: #f39c12;
+.tag {
+ display: inline-block;
+ background: #e0e7ff;
+ color: #3730a3;
+ font-size: 0.75rem;
+ font-weight: 600;
+ padding: 3px 10px;
+ border-radius: 99px;
+ margin: 2px 2px 6px 0;
+}
+.tag-difficulty {
+ background: #fef3c7;
+ color: #92400e;
+}
+
+@media (prefers-color-scheme: dark) {
+ .tag { background: #312e81; color: #e0e7ff; }
+ .tag-difficulty { background: #78350f; color: #fef3c7; }
+ .dropdown-menu > li > a:hover {
+ background-color: rgba(255,255,255,0.05);
+ }
}
-body {
- color: #333333;
+.card-duration {
+ font-size: 0.85rem;
+ color: var(--color-muted);
+ font-weight: 500;
+ margin: 0;
}
-.btn-primary {
- background-color: #555555;
- border-color: #555555;
+/* Alerts and announcements */
+.alert {
+ padding: 1rem;
+ border-radius: var(--radius);
}
.announcement {
- background-color: #f39c12;
- border-color: #f39c12;
- color: #ffffff;
- padding: 15px;
- margin-bottom: 21px;
- border: 1px solid transparent;
- border-radius: 4px;
- margin-left: -15px;
- margin-right: -15px;
+ background-color: var(--color-accent);
+ color: #ffffff;
+ padding: 15px;
+ margin-bottom: 21px;
+ border-radius: var(--radius);
+ border: none;
}
-.lead {
- font-size: 20px;
+.event-announce > a {
+ color: white;
+ text-decoration: underline;
}
+
.event-announce > a:hover {
- color: #333333;
+ color: rgba(255, 255, 255, 0.8);
}
-
-.alert {
- padding: 8px;
+.lead {
+ font-size: 20px;
+ color: var(--color-text);
+ font-weight: 400;
}
-.list-simple {
- padding-left: 15px;
+/* Markdown tables */
+.table {
+ background-color: var(--color-bg);
+ color: var(--color-text);
}
-
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
- background-color: #555555;
+.table-striped > tbody > tr:nth-of-type(odd) {
+ background-color: var(--color-surface);
}
-
-[role="button"] {
- font-size: 17px;
+.table-hover > tbody > tr:hover {
+ background-color: rgba(0,0,0,0.03);
+}
+@media (prefers-color-scheme: dark) {
+ .table-hover > tbody > tr:hover {
+ background-color: rgba(255,255,255,0.03);
+ }
}
-.alignleft {
- float: left;
+/* Footer */
+.blog-footer {
+ padding: 40px 0;
+ color: var(--color-muted);
+ text-align: center;
+ background-color: var(--color-surface);
+ border-top: 1px solid var(--color-border);
+ margin-top: 60px;
}
-.alignright {
- float: right;
+.blog-footer a {
+ color: var(--color-primary);
}
diff --git a/gsoc/how-to-apply.md b/gsoc/how-to-apply.md
new file mode 100644
index 00000000..cf0870ea
--- /dev/null
+++ b/gsoc/how-to-apply.md
@@ -0,0 +1,136 @@
+---
+title: "How to Apply for GSoC with HumanAI"
+author: "HumanAI Admins"
+layout: default
+description: "A step-by-step guide for students applying to Google Summer of Code 2026 with the HumanAI Foundation."
+---
+
+# How to Apply for GSoC with HumanAI
+
+This guide walks you through every step of applying to [Google Summer of Code](https://summerofcode.withgoogle.com/)
+with the HumanAI Foundation — from finding the right project to submitting your final proposal.
+
+---
+
+## Step 1 — Understand What HumanAI Does
+
+HumanAI is an umbrella organization that applies machine learning to **Arts and Humanities** research.
+Projects span music, dance, choreography, historical text recognition (OCR), social sciences, epidemiology,
+cultural heritage preservation, and more.
+
+You do **not** need a background in humanities. You need strong ML/programming skills and genuine
+curiosity about one of the project domains.
+
+---
+
+## Step 2 — Browse the Project Ideas
+
+Read the [Full List of 2026 Proposals](/gsoc/2026/summary.html). For each project that interests you:
+
+- Read the full proposal page carefully
+- Note the **Requirements** section — can you meet them honestly?
+- Note the **Difficulty level** (Easy / Medium / Hard)
+- Read the **Task ideas** and **Expected results** — can you picture yourself doing this work?
+
+**Narrow down to 1–2 projects** you genuinely want to work on. Applying to too many spreads you thin.
+
+---
+
+## Step 3 — Complete the Evaluation Test
+
+Every HumanAI project requires an **evaluation test** before you can submit a proposal.
+Each proposal page links to its specific test (look for the `## Tests` section).
+
+- The test demonstrates you have the technical skills the project needs
+- **Do not skip this** — proposals without a completed test are not considered
+- Tests usually involve Python, ML frameworks (PyTorch / TensorFlow), or domain-specific tasks
+
+Allow **3–7 days** to complete a test properly.
+
+---
+
+## Step 4 — Make Contact
+
+Once you have completed (or are close to completing) the evaluation test, email the admins:
+
+📧 **[human-ai@cern.ch](mailto:human-ai@cern.ch)**
+
+Include in your email:
+- Your **name and university**
+- The **project title(s)** you are interested in
+- Your **CV** (PDF preferred)
+- Your **evaluation test results** (or a note that you are completing them)
+
+> **Do NOT email mentors directly.** All first contact goes through `human-ai@cern.ch`.
+> Mentors will reach out to you after reviewing your submission.
+
+---
+
+## Step 5 — Write Your Proposal
+
+Once you are in contact with mentors, write your proposal on the
+[official GSoC portal](https://summerofcode.withgoogle.com/) during the application window.
+
+A strong HumanAI proposal includes:
+
+| Section | What to Include |
+|---|---|
+| **Project summary** | What you will build, in 2–3 sentences |
+| **Motivation** | Why this project, why you, why HumanAI |
+| **Technical approach** | Specific methods, models, tools, datasets you plan to use |
+| **Week-by-week timeline** | 12–14 week breakdown, one milestone per week |
+| **Deliverables** | Concrete outputs — code, model, dataset, documentation |
+| **About you** | Relevant skills, past projects, links to code (GitHub) |
+| **Availability** | Hours per week, any planned breaks |
+
+**Length:** 3–5 pages is typical. Quality over quantity.
+
+### Tips from past students
+
+- Reference the evaluation test in your proposal — show you already understand the domain
+- Be specific: "I will use Whisper v3 for transcription" beats "I will use a speech recognition model"
+- Include a risk section — what could go wrong and how will you handle it?
+- Proposals submitted early are read more carefully
+
+---
+
+## Step 6 — GSoC Timeline (2026)
+
+| Date | Milestone |
+|---|---|
+| Now → April 8 | **Application window open** — submit via GSoC portal |
+| April 8 | ⚠️ **Proposal submission deadline** |
+| May 1–26 | Community Bonding Period — meet your mentor, set up tools |
+| May 27 – July 14 | Coding Period 1 |
+| July 14 | Midterm evaluation |
+| July 14 – September 1 | Coding Period 2 |
+| September 1 | Final evaluation & code submission |
+
+See the [official GSoC timeline](https://summerofcode.withgoogle.com/how-it-works/) for exact dates.
+
+---
+
+## Common Mistakes to Avoid
+
+- ❌ Sending a generic proposal — mentors read dozens; personalize yours
+- ❌ Skipping the evaluation test — automatic disqualification
+- ❌ Emailing mentors directly — always go through `human-ai@cern.ch`
+- ❌ Applying to 5+ projects without depth — focus wins
+- ❌ Vague timelines — "Week 5: do ML work" is not a plan
+
+---
+
+## Useful Links
+
+- [All 2026 Proposals](/gsoc/2026/summary.html)
+- [Full Mentor List](/gsoc/2026/mentors.html)
+- [GSoC 2026 Overview](/activities/gsoc2026.html)
+- [Student Blogs from Past Years](/activities/studentblogs.html)
+- [Official GSoC Rules](https://summerofcode.withgoogle.com/rules/)
+- [Official GSoC How It Works](https://summerofcode.withgoogle.com/how-it-works/)
+
+---
+
+## Questions?
+
+Email [human-ai@cern.ch](mailto:human-ai@cern.ch) — include your name, university, and the project you're interested in.