Resume from Greg's interview, one-page PDF, store slots closed

The experience notes, skills, education and a new /resume Page text now come
from Greg's Resume Interview answers (tools/migrate/src/seed.ts). Comcast and
Drexel move to a short Earlier list, and the page and PDF gain Selected
projects. Carrier Connect's numbers are Greg's corrected ones.

The PDF fits on one page and carries the email from site settings. Store
lines migrate with no open slots until Greg opens orders.

Schema: experience earlier, page projects, site-settings email.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012aSbo2D1qP8cMFQCykf7kx
This commit is contained in:
Claude
2026-10-11 21:58:21 +00:00
parent 99ecdc2113
commit 963ad0df23
9 changed files with 396 additions and 116 deletions
+15
View File
@@ -281,6 +281,10 @@ export const experience = def({
focus: line({ title: "Focus", description: "One line under the role." }).optional(),
bullets: strings({ title: "Bullets" }),
tech: strings({ title: "Tech" }).optional(),
earlier: z
.boolean()
.meta({ title: "Earlier role", description: "Shows in the short Earlier list: title, company, dates and the focus line only." })
.optional(),
}),
});
@@ -470,6 +474,7 @@ export const siteSettings = def({
tagline: line({ title: "Tagline" }),
lockup: line({ title: "Lockup line" }),
location: line({ title: "Location" }).optional(),
email: line({ title: "Email", description: "Printed on the resume PDF." }).optional(),
availability: line({ title: "Availability", description: "Shown on the resume and Inquiries, like Open to freelance web work." }).optional(),
socials: z
.array(z.object({ label: line({ title: "Label" }), handle: line({ title: "Handle" }), url: z.url().meta({ title: "Link" }) }))
@@ -501,6 +506,16 @@ export const page = def({
)
.meta({ title: "Highlights", description: "Big numbers on the page, like the resume highlights. Only real, checkable numbers." })
.optional(),
projects: z
.array(
z.object({
title: line({ title: "Project" }),
detail: line({ title: "Detail", description: "One line with a result or number worth stating." }),
link: line({ title: "Link", description: "A page on this site, like /work/cosmos, or a full address." }).optional(),
}),
)
.meta({ title: "Selected projects", description: "Personal projects the resume lists, like the homelab or this site." })
.optional(),
}),
});