content: audit phase 4 — lead with the work that differentiates

Brand/content phase. The engineering was never the weak part of this site;
the copy was. Decisions on title, bio angle, download figures and node copy
were the owner's — this implements them.

Identity:
- jobTitle was 'Software Development - Lead Associate', an internal HR grade
  that means nothing to a recruiter or a search engine. Now 'Lead Software
  Engineer' — a faithful translation, not a promotion.
- aboutMe opened with "Intermediate Software Engineer", grading himself down
  in his own headline, and named the most generic possible stack
  (React/Node/SQL/ShadCN/Docker). It now leads with the work almost nobody
  else has done: WebRTC telehealth, real-time gesture recognition that made
  chat usable for speech-impaired patients, and air-gapped deployment
  tooling. Those were previously buried 3-4 clicks deep in leaf nodes and
  appeared nowhere on the surface.
- Title/description/OG/Twitter copy realigned to match. JSON-LD needed no
  change — it already derives from the origin node.

Node copy:
- The five job nodes had placeholder descriptions ('Junior developer at the
  start of my career.', 'Where I am now.') that are the first thing a tooltip
  shows. Each is now a one-line hook naming the most substantial thing from
  that role.
- Normalised highlight punctuation: only exp-job5's bullets ended in periods.

Proof of work:
- `downloads` existed on ProjectNode and was used by zero nodes despite two
  published PyPI packages. Populated with verified lifetime figures from
  pypistats.org (tvdbAPI 2,277, tmdbAPI 784, checked 2026-08-09) and dated in
  a comment. Lifetime, deliberately, not the recent rate — 27 and 12 in the
  last month is not a number worth advertising.
- Nothing rendered the field. NodeModal now shows it beside the status badge,
  and SeoContent renders it too so it's crawlable.

Data integrity:
- edu-degree's description said "Computer Science" while its own structured
  fields said Applied Science / IT-Software Development. Its label was the
  generic "University"; now Green River College.
- calculatePlayerLevel() hardcoded '2020-10-01', duplicating
  exp-job1.startDate — two sources for one fact, free to drift. It now
  derives the earliest start from the experience nodes, via an explicit
  "Month YYYY" parser rather than handing a bare "October 2020" to
  `new Date` (not a format engines are required to accept).
- Added the first tests for calculatePlayerLevel, previously the only
  untested export in stats.ts. 14 -> 16 tests.
- Fixed the 'tool-vscod' id typo.

Corrections to the audit this phase acted on: the self-hosted repos at
git.tehriehldeal.com ARE publicly reachable (all three return 200
anonymously) — the earlier claim that recruiters couldn't reach them was
asserted without checking. All three live project sites are up too.

Verified in the production build: modal shows the new title and bio, the
downloads badge renders as "↓ 2,277 downloads", figures are crawlable in the
prerendered HTML, and no filler copy survives.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
TehRiehlDealandClaude Opus 5 committed 2026-08-09 00:42:45 -07:00
1 parent 746d81b151
commit f83a317520
7 files changed
+91 -26

No files matched your search

+19 -13
View File
@@ -88,9 +88,9 @@ export const treeNodes: TreeNode[] = [
size: 'x-large',
icon: '',
fullName: 'Kevin Riehl',
jobTitle: 'Software Development - Lead Associate',
jobTitle: 'Lead Software Engineer',
aboutMe:
'Intermediate Software Engineer with 5+ years of experience architecting full-stack applications using React, Node.js (Hapi), and SQL. Expertise includes modernizing legacy codebases, implementing rigorous testing standards, and leading frontend architecture improvements. Passionate about leveraging modern tools like ShadCN and Docker to streamline development workflows.',
"Software engineer with 5+ years building full-stack applications for Defense Health Agency programs. I've architected a WebRTC telehealth platform, shipped real-time gesture recognition that made chat usable for speech-impaired patients, and built the deployment tooling that unblocked a team after an air-gapped infrastructure migration. React, Node.js, NestJS, TypeScript, SQL.",
location: 'Kent, WA',
email: 'kevinriehl@gmail.com',
linkedIn: 'https://www.linkedin.com/in/kevinriehl',
@@ -134,7 +134,7 @@ export const treeNodes: TreeNode[] = [
{
id: 'exp-job1',
label: 'Software Engineer',
description: 'Junior developer at the start of my career.',
description: 'Refactored legacy PHP endpoints onto Hapi.js and ran a MySQL to MSSQL migration.',
x: 420,
y: -280,
parentId: 'exp-contract',
@@ -155,7 +155,7 @@ export const treeNodes: TreeNode[] = [
{
id: 'exp-job2',
label: 'Software Engineer',
description: 'Growing my skills and taking on more responsibility.',
description: 'Built a React + Hapi.js analytics search engine over complex event datasets.',
x: 500,
y: -350,
parentId: 'exp-job1',
@@ -177,7 +177,7 @@ export const treeNodes: TreeNode[] = [
{
id: 'exp-job3',
label: 'Intermediate Software Engineer',
description: 'Stepping into a more senior role.',
description: 'Web Bluetooth biometric monitoring, plus a team-wide move to ShadCN and Docker.',
x: 560,
y: -430,
parentId: 'exp-job2',
@@ -199,7 +199,8 @@ export const treeNodes: TreeNode[] = [
{
id: 'exp-job4',
label: 'Intermediate Software Engineer',
description: 'Where one journey ends, another begins.',
description:
'WebRTC telehealth platform and real-time gesture recognition for speech-impaired users.',
x: 600,
y: -510,
parentId: 'exp-job3',
@@ -221,7 +222,8 @@ export const treeNodes: TreeNode[] = [
{
id: 'exp-job5',
label: 'Lead Associate',
description: 'Where I am now.',
description:
'Air-gapped deployment automation, a NestJS audit interceptor, and 90%+ test coverage.',
x: 620,
y: -590,
parentId: 'exp-job4',
@@ -233,9 +235,9 @@ export const treeNodes: TreeNode[] = [
startDate: 'January 2026',
endDate: 'Present',
highlights: [
'Proactively engineered a suite of automation tools to streamline code deployment workflows to an air-gapped Git instance following a critical infrastructure migration, eliminating manual bottlenecks and restoring team development velocity.',
'Designed and implemented a custom NestJS API interceptor to dynamically detect and audit specific user activities, providing robust, real-time daily activity tracking for compliance and analytics.',
'Spearheaded a rigorous testing initiative to elevate code quality, systematically architecting and executing unit tests to scale platform test coverage from a legacy deficit to a resilient 90%+ baseline.'
'Proactively engineered a suite of automation tools to streamline code deployment workflows to an air-gapped Git instance following a critical infrastructure migration, eliminating manual bottlenecks and restoring team development velocity',
'Designed and implemented a custom NestJS API interceptor to dynamically detect and audit specific user activities, providing robust, real-time daily activity tracking for compliance and analytics',
'Spearheaded a rigorous testing initiative to elevate code quality, systematically architecting and executing unit tests to scale platform test coverage from a legacy deficit to a resilient 90%+ baseline'
]
},
@@ -306,6 +308,8 @@ export const treeNodes: TreeNode[] = [
techStack: ['Python', 'REST API', 'PyPI', 'GitHub Actions', 'Unit Testing'],
repoUrl: 'https://github.com/TehRiehlDeal/TVDB-API',
pypiUrl: 'https://pypi.org/project/tvdbAPI/',
// Lifetime PyPI downloads, checked 2026-08-09 (pypistats.org).
downloads: '2,277 downloads',
status: 'maintained'
},
{
@@ -322,6 +326,8 @@ export const treeNodes: TreeNode[] = [
techStack: ['Python', 'REST API', 'PyPI', 'GitHub Actions', 'Unit Testing'],
repoUrl: 'https://github.com/TehRiehlDeal/tmdbAPI',
pypiUrl: 'https://pypi.org/project/tmdbAPI/',
// Lifetime PyPI downloads, checked 2026-08-09 (pypistats.org).
downloads: '784 downloads',
status: 'maintained'
},
{
@@ -629,7 +635,7 @@ export const treeNodes: TreeNode[] = [
proficiency: 'intermediate'
},
{
id: 'tool-vscod',
id: 'tool-vscode',
label: 'VSCode',
description:
'Powerful, lightweight code editor by Microsoft with built-in Git support, debugging, and a vast extension ecosystem.',
@@ -920,8 +926,8 @@ export const treeNodes: TreeNode[] = [
},
{
id: 'edu-degree',
label: 'University',
description: "Bachelor's degree in Computer Science.",
label: 'Green River College',
description: "Bachelor's of Applied Science in IT and Software Development.",
x: -300,
y: 80,
parentId: 'edu-branch',