Complex work. Clear direction.
Applied AI/ML project delivery, grounded in seven years of TD Insurance experience.
This repository contains Neil Mitchell's personal career portfolio. It presents his current Project Manager II role in Applied AI/ML Engineering, his TD career path, delivery approach, technical capabilities, selected impact measures, and current résumé.
The portfolio is personal and unofficial. It is not a TD Bank Group or TD Insurance website.
| Area | Purpose |
|---|---|
| Hero | Photographic introduction, current role, experience and résumé access |
| Career | Featured current role and four native disclosures retaining the complete career |
| Approach | Six stages from business objective through learning and improvement |
| Expertise | Delivery strengths, platform experience, and hands-on technical practice |
| Impact | Career measures with count-up animation and supporting context |
| Works | Independent technical case studies with clear evidence and attribution boundaries |
| Contact | Email, copy, résumé, LinkedIn, and GitHub icons with a personal-site disclaimer |
- Next.js 16 App Router with static export
- React 19 with the TypeScript 7 compiler and TypeScript 6 compatibility API
- Purpose-built CSS for normalization, design tokens, and responsive layouts
- Native React and browser APIs for theme preference, navigation, progress, and metric animation
- Vercel for production hosting
No UI, icon, or animation library is required.
The locally hosted Manrope variable font, photographic hero, and responsive presentation are documented in DESIGN.md. The audience and content principles are in PRODUCT.md.
TypeScript 7 supplies the native compiler invoked by npm run typecheck. The standard TypeScript 6
package remains installed for the compiler API required by Next.js and typescript-eslint during
the TypeScript 7.0 transition.
flowchart LR
Career["career data"] --> Sections["home-page sections"]
Projects["data/projects.ts"] --> Sections
Projects --> Works["/works + static case studies"]
Components["shared components"] --> Sections
Components --> Works
Tokens["design tokens and layouts"] --> Sections
Tokens --> Works
Sections --> Build["Next.js static export"]
Works --> Build
Build --> Out["out/"]
Out --> Vercel["Vercel production"]
Content is kept separate from presentation so career updates can be made in data/ without
rewriting component markup. See Architecture and
Content Guide for details.
Requirements:
- Node.js 24.x
- npm 11 or newer
git clone https://github.com/CRSD-Lau/Personal-Site.git
cd Personal-Site
npm ci
npm run devOpen http://localhost:3000.
| Command | Purpose |
|---|---|
npm run dev |
Start the Next.js development server |
npm run build |
Create the static export in out/ |
npm run preview |
Serve the exported site at http://localhost:4174 |
npm run previews:build |
Regenerate brand cards and README screenshots from a running local export |
npm run images:build |
Regenerate responsive display images while preserving social artwork |
npm run test:browser |
Check rendered accessibility and gradient contrast against a running export |
npm run test:interactions |
Check responsive layouts, navigation, recovery, and installed-app behavior |
npm run format |
Format source, documentation, and repository files |
npm run lint |
Run ESLint with warnings treated as failures |
npm run typecheck |
Run the TypeScript compiler without emitting files |
npm test |
Validate career facts, project evidence, links, licences, and assets |
npm run validate |
Run source and build checks; browser checks run separately in CI |
The launch checklist records the current privacy, performance, accessibility, and optional-feature decisions, with instructions for repeating the browser checks.
| Path | Responsibility |
|---|---|
data/profile.ts |
Identity, current role, hero copy, links, and contact content |
data/experience.ts |
Career chronology, role summaries, and responsibilities |
data/approach.ts |
Delivery stages and working principles |
data/skills.ts |
Capability groups and platform knowledge |
data/impact.ts |
Impact metrics and supporting stories |
data/projects.ts |
Independent project records, evidence snapshots, and links |
app/icon.png |
Round headshot favicon |
public/social/portfolio-v3.png |
Versioned 1200 x 630 homepage social preview |
public/social/works-v3.png |
Versioned 1200 x 630 Works collection social preview |
public/opengraph-image.png |
Compatibility copy of the current homepage preview |
public/works/deep-live-cam/social-preview.png |
Reviewed Deep Live Cam Studio repository artwork |
docs/assets/portfolio-preview.png |
Current homepage screenshot shown in this README |
docs/assets/readme-screenshot.jpg |
Compatibility copy of the current homepage screenshot |
docs/assets/repository-social-preview.png |
1280 x 640 artwork for GitHub's repository social preview |
app/manifest.ts |
Install metadata and app icon declaration |
app/robots.ts |
Search crawler policy and sitemap discovery |
app/sitemap.ts |
Canonical production URL for search indexing |
public/profile.webp |
Hero portrait |
public/logo.png |
Official TD employer marker used beside TD roles |
public/resume.pdf |
Public résumé downloaded from the site |
Follow the evidence and wording rules in the Content Guide before changing career claims, impact figures, or independent-project records. The project preview's separate source terms and provenance are recorded in LICENSE.md.
The website, sharing cards, and repository use the same photographic portrait, locally hosted Manrope, dark forest canvas, pale lime accents, and “Complex work. Clear direction.” positioning. The Works collection has its own card; individual case studies retain their reviewed project artwork.
Website sharing metadata lives in data/profile.ts and the route metadata. The GitHub repository's
social preview is a separate repository setting: committing its image does not upload it to GitHub.
The brand and preview audit records the findings, asset inventory,
and publication status. Follow Deployment
when changing cards or refreshing a cached link preview.
The editable résumé source is
documents/Neil-Mitchell-Resume.docx. The published
copy is public/resume.pdf.
The build helper creates the DOCX and finalizes PDF metadata:
python scripts/build-resume.py
python scripts/build-resume.py --pdf-input path/to/converted.pdfMicrosoft Word or another compatible renderer is used between those commands to convert DOCX to
PDF. The final PDF and DOCX must list Neil Mitchell as author and modifier.
Every push and pull request to main runs the same npm run validate gate used locally.
Dependabot checks npm and GitHub Actions dependencies on a weekly schedule.
Release history is recorded in CHANGELOG.md. The full publishing and rollback workflow is documented in Deployment and Release Process.
- Read CONTRIBUTING.md before proposing a change.
- Report vulnerabilities through GitHub private vulnerability reporting.
- Use the project wiki for operating guidance.
Copyright © 2026 Neil Mitchell. All rights reserved. See LICENSE.md.
TD, TD Bank Group, TD Insurance, and related marks belong to their respective owners. Their names and logo appear only to describe employment history. This repository and website are personal and unofficial.
