diff --git a/src/components/BentoTile.astro b/src/components/BentoTile.astro
index d53a6c0..a2a3c2c 100644
--- a/src/components/BentoTile.astro
+++ b/src/components/BentoTile.astro
@@ -3,7 +3,7 @@ import { Image } from 'astro:assets';
import type { CollectionEntry } from 'astro:content';
interface Props { project: CollectionEntry<'projects'> }
const { project } = Astro.props;
-const { title, tile, image, span, domain, years, summary } = project.data;
+const { title, tileTitle, tile, image, span, domain, summary } = project.data;
---
{tile === 'image' && image && (
@@ -13,8 +13,8 @@ const { title, tile, image, span, domain, years, summary } = project.data;
)}
-
{title}
-
{domain} · {years}
+
{tileTitle ?? title}
+
{domain}
{span !== 'sm' &&
{summary}
}
diff --git a/src/content.config.ts b/src/content.config.ts
index 75aa54e..4b6bf04 100644
--- a/src/content.config.ts
+++ b/src/content.config.ts
@@ -18,9 +18,12 @@ const projects = defineCollection({
z
.object({
title: z.string(),
+ // Optional display title for the bento tiles on the home and /projects
+ // pages (e.g. "AI agent builder hub" for WaySpace); the project page
+ // itself always uses `title`.
+ tileTitle: z.string().optional(),
role: z.string(),
org: z.string(),
- years: z.string(),
domain: z.string(),
summary: z.string(),
tile: z.enum(['image', 'logo', 'text']),
diff --git a/src/content/projects/placeholder-3.md b/src/content/projects/placeholder-3.md
index 95ec1e2..cd14563 100644
--- a/src/content/projects/placeholder-3.md
+++ b/src/content/projects/placeholder-3.md
@@ -2,7 +2,6 @@
title: "PLACEHOLDER — Third project"
role: "Role goes here"
org: "Organisation"
-years: "2021–2023"
domain: "Blockchain"
summary: "One-line summary of the project and its outcome."
tile: logo
diff --git a/src/content/projects/placeholder-4.md b/src/content/projects/placeholder-4.md
index 3f05509..cecd2bd 100644
--- a/src/content/projects/placeholder-4.md
+++ b/src/content/projects/placeholder-4.md
@@ -2,7 +2,6 @@
title: "PLACEHOLDER — Fourth project"
role: "Role goes here"
org: "Organisation"
-years: "2020"
domain: "Research"
summary: "One-line summary of the project and its outcome."
tile: text
diff --git a/src/content/projects/placeholder-5.md b/src/content/projects/placeholder-5.md
index 57b4b68..a7e1677 100644
--- a/src/content/projects/placeholder-5.md
+++ b/src/content/projects/placeholder-5.md
@@ -2,7 +2,6 @@
title: "PLACEHOLDER — Fifth project"
role: "Role goes here"
org: "Organisation"
-years: "2019"
domain: "Fintech"
summary: "One-line summary of the project and its outcome."
tile: text
diff --git a/src/content/projects/placeholder-6.md b/src/content/projects/placeholder-6.md
index 4aa27f1..afa9226 100644
--- a/src/content/projects/placeholder-6.md
+++ b/src/content/projects/placeholder-6.md
@@ -2,7 +2,6 @@
title: "PLACEHOLDER — Sixth project"
role: "Role goes here"
org: "Organisation"
-years: "2014"
domain: "Media"
summary: "One-line summary of the project and its outcome."
tile: logo
diff --git a/src/content/projects/wayid.md b/src/content/projects/wayid.md
index f8fa77d..fef4888 100644
--- a/src/content/projects/wayid.md
+++ b/src/content/projects/wayid.md
@@ -2,7 +2,6 @@
title: "WayID"
role: "Co-Founder"
org: "Lineage Labs"
-years: "2026 – present"
domain: "Digital identity"
summary: "Provenance certificates for AI agents — WayID binds each agent's cryptographic identity to a verified human that anyone can check in one lookup."
tile: image
diff --git a/src/content/projects/wayspace.md b/src/content/projects/wayspace.md
index 722b0e6..3fcac41 100644
--- a/src/content/projects/wayspace.md
+++ b/src/content/projects/wayspace.md
@@ -1,8 +1,8 @@
---
-title: "AI agent builder hub"
+title: "WaySpace"
+tileTitle: "AI agent builder hub"
role: "Co-Founder"
org: "Lineage Labs"
-years: "2026 – present"
domain: "AI agent ecosystem"
summary: "The anti-slop catalogue for AI agent builders: every tool human-reviewed before it's listed, scored on signals that can't be bought, and discussed only by verified builders and their agents."
tile: image
diff --git a/src/pages/cv.txt.ts b/src/pages/cv.txt.ts
index a5283c9..86fcc48 100644
--- a/src/pages/cv.txt.ts
+++ b/src/pages/cv.txt.ts
@@ -55,7 +55,7 @@ export async function GET(context: APIContext) {
if (projects.length > 0) {
lines.push(...rule('Selected projects'));
for (const p of projects) {
- lines.push(`${p.data.title} — ${p.data.role}, ${p.data.org} (${p.data.years})`);
+ lines.push(`${p.data.title} — ${p.data.role}, ${p.data.org}`);
lines.push(` ${p.data.summary}`);
lines.push(` ${projectUrl(site, p)}`);
lines.push('');
diff --git a/src/pages/llms-full.txt.ts b/src/pages/llms-full.txt.ts
index a1ca2ac..b4a6f4a 100644
--- a/src/pages/llms-full.txt.ts
+++ b/src/pages/llms-full.txt.ts
@@ -78,7 +78,7 @@ export async function GET(context: APIContext) {
lines.push(
`### ${d.title}`,
'',
- `- Role: ${d.role}, ${d.org} (${d.years})`,
+ `- Role: ${d.role}, ${d.org}`,
`- Domain: ${d.domain}`,
`- URL: ${projectUrl(site, project)}`,
...(d.links ?? []).map((l) => `- ${l.label}: ${l.url}`),
diff --git a/src/pages/projects/[slug].astro b/src/pages/projects/[slug].astro
index 8c253bf..60e46fb 100644
--- a/src/pages/projects/[slug].astro
+++ b/src/pages/projects/[slug].astro
@@ -15,7 +15,7 @@ const d = project.data;
- {d.domain} · {d.years}
+ {d.domain}
{d.title}
{d.role}, {d.org}