Projects

26 years of solving complex technical challenges at scale. From government digital transformation to premium media platforms serving hundreds of millions of users.

Focus areas:

AI/MLAPIsAccessibilityArchitectureAutomationB2B SaaSBackendConversionCost SavingsDevOpsDeveloper ExperienceEnterpriseFounderGovernmentGrowthInnovationIntegrationLeadershipMigrationMobileMonetizationMulti-TenantOptimizationPRDPerformanceProductProduct LeadershipQualitySEOScaleSecuritySocial ImpactStructured DataTechnical LeadershipTestingUXUser Experience

Team-Shared Multi-Agent AI Code Review Pipeline

Talent.com - Claude Code skill fanning out specialist agents on every MR

Toggle details for Team-Shared Multi-Agent AI Code Review Pipeline

Problem

Code review at team scale was bottlenecked on a handful of senior engineers, and the depth of review varied with whoever picked it up. Security, accessibility, coverage, and architectural concerns were easy to miss when the reviewer was rushed. The team needed consistent, comprehensive review on every MR without slowing the merge cadence or creating more review load for the seniors.

Solution

Designed and built a shared Claude Code review pipeline. The /code-review skill fans out to specialist sub-agents (unit tests, lint, types, coverage, security, performance, simplification) in parallel, then consolidates findings by severity. Checked the entire .claude/ directory into the monorepo with a teammate README and tracked skill paths so any engineer gets the same review without local setup. Added a typed auto-memory system, routing rules, and fan-out chains so context persists across sessions without bloating the window. Same architecture also powers /diagnose-ci, which triages failing GitLab pipelines in one command.

Outcome

Turned a single command into a senior-level, multi-dimensional review that runs in minutes. Freed senior engineers from routine review load and raised the floor on every MR across the team. A CI post-MR review hook is built and ready to flip on once the API key is provisioned, extending the same pipeline to every MR automatically.

Impact: ~100 reviewer-hours saved per week. 15-min bot feedback auto-triggered on every commit. Every line of code reviewed for security, a11y, tests, and architecture.

Tech Stack

Claude CodeClaude APIAnthropic SDKTypeScriptBashGitLab CI

Talent.com2025-2026

Location Service Consolidation - $60K+ Annual Geocode Savings

Talent.com - PRD and platform plan eliminating redundant Google Geocoding API spend

Toggle details for Location Service Consolidation - $60K+ Annual Geocode Savings

Problem

Multiple backend services were independently calling the Google Geocoding API to resolve locations for jobs, search, and SEO. There was no shared cache or canonical location representation, so the same postal codes and cities were resolved over and over. Finance confirmed this was costing $5K per month in geocode spend alone, with growth expected as ingestion volume increased.

Solution

Authored and published the Location Service Consolidation PRD as the anchor doc for the 2026 SEO/GFJ priorities. Mapped every current consumer of location data, designed a single service with a shared cache and canonical schema, and sequenced the migration so each caller could adopt it independently. Partnered with Finance to lock in the cost baseline and the ROI story before engineering touched any code.

Outcome

$5K per month ($60K per year) in direct API spend identified as recoverable, confirmed by Finance. The PRD became the single source of truth for the consolidation effort and unblocked the engineering roadmap for the quarter. Removed a hidden dependency on an un-cached third-party on a critical path for a high-traffic site.

Impact: $60K+ annual savings confirmed with Finance

Tech Stack

TypeScriptGoPostgreSQLGoogle Geocoding APIConfluence

Talent.com2026

Better Auth Migration Across 4 Frontend Services

Talent.com - Replaced next-auth on jobseeker, publishers, employers, and internal-tools

Toggle details for Better Auth Migration Across 4 Frontend Services

Problem

next-auth had become a liability across four frontend services: security advisories accumulating, Microsoft Entra support requiring brittle patches, and middleware-based RBAC that was hard to reason about. Replacing it piecemeal would fracture the login experience; replacing it all at once would be an all-or-nothing cutover on production auth.

Solution

Built a dual-implementation behind an AUTH_IMPL flag so both next-auth and Better Auth ran side-by-side in a dedicated QA environment. Ported RBAC parity to Better Auth middlewares, switched the Microsoft provider to Entra-only via genericOAuth, and moved AZURE_AD_TENANT_ID validation from module load to runtime so builds stopped failing when the secret rotated. Once parity was confirmed, collapsed the dispatcher across all four services and dropped next-auth from package.json.

Outcome

Cut over four frontends with a dual-impl flag that made rollback a one-line toggle instead of a deploy. Eliminated the next-auth dependency entirely, closed the outstanding advisories, and unified auth on a single modern library with better RBAC ergonomics. The dual-impl pattern became the template for the next round of high-risk library swaps.

Impact: 4 frontends migrated, next-auth removed, zero auth downtime

Tech Stack

Better AuthNext.jsTypeScriptMicrosoft EntraOAuth

Talent.com2026

Staged Next.js / React 19 / next-intl v4 / Nx 22 Upgrade

Talent.com - Multi-phase frontend platform upgrade at 5-8M pageviews/day

Toggle details for Staged Next.js / React 19 / next-intl v4 / Nx 22 Upgrade

Problem

The jobseeker frontend, serving 5-8M page views per day, was multiple major versions behind on Next.js, one behind on React, and carrying a next-intl v3 layer whose v4 migration was a breaking API change. Attempting it all in one branch would have been weeks of merge hell with no way to de-risk. A single regression could cost hundreds of thousands of pages in indexing or conversion on launch day.

Solution

Broke the upgrade into a six-phase staged rollout on a long-lived feature branch: Nx 18 → 22, React 18 → 19, next-intl v3 → v4, Next.js 14 → 15 → 16. Each phase merged dev into the feature branch, repaired test drift, and deployed to a dedicated QA environment before the next phase started. Repaired roughly 30 test suites broken by the React 19 and next-intl v4 API changes, and caught prod-build type errors that dev mode had silently tolerated.

Outcome

Carried the full jobseeker frontend through React 19 and next-intl v4 without a production regression. Each phase shipped independently through QA, so rollback blast radius stayed small. The same branch picked up RBAC parity, the Better Auth migration, and a coverage jump from 59% to 90.92% along the way.

Impact: 5-8M page views/day, 4 major framework upgrades, zero production regressions

Tech Stack

Next.jsReact 19next-intl 4Nx 22TypeScriptJestGitLab CI

Talent.com2025-2026

Jobseeker Test Coverage 59% to 90.92%

Talent.com - Revived and wrote ~90 Jest suites across the Next.js frontend

Toggle details for Jobseeker Test Coverage 59% to 90.92%

Problem

The jobseeker frontend had 59% test coverage with dozens of suites hidden behind .exclusions, a growing pile of stale tests skipped during prior migrations, and a local-vs-CI coverage mismatch that hid real gaps. New features were shipping without tests because the existing suite could not be trusted to catch regressions. A Next.js and React 19 upgrade was looming that would hit every mocked component in the repo.

Solution

Drove the coverage initiative in roughly 50 commits across a week. Revived 60+ suites across modals, job cards, SERP components, and provider wrappers. Wrote new branch-coverage tests for auth flows, A/B branches, and server actions. Fixed the Babel and Jest transform so React Testing Library actually rendered. Aligned local coverage reporting with CI via .exclusions pass-through so the numbers stopped lying. Co-located every new test next to its component.

Outcome

Coverage climbed from 59% to 90.92% with zero failing suites. Branch and function coverage both crossed the 80% CI threshold. The team could land the React 19 and next-intl v4 upgrade with real confidence instead of hope, and ~90 newly-reliable suites became the regression net for every subsequent change on a site serving 5-8M pageviews per day.

Impact: Coverage 59% → 90.92%, ~90 suites revived or written, 0 failing suites

Tech Stack

JestReact Testing LibraryTypeScriptReact 19Babel

Talent.com2026

SEO Rescue on /view at 5-8M Pageviews/Day

Talent.com - Soft-404 fix, batched indexing, and dual-gated JSON-LD on job detail pages

Toggle details for SEO Rescue on /view at 5-8M Pageviews/Day

Problem

The /view job detail page, the single most valuable organic landing page on jobseeker, was losing indexing signal to Google in three ways. Googlebot was hitting RSC flight-data URLs and getting soft-404s. The Google Indexing API was being called per-job in a loop, hitting quota and timing out. And JobPosting JSON-LD was emitting for jobs that were technically available but not actually indexable, polluting the schema signal.

Solution

Moved the bot redirect out of middleware into next.config.js redirects so it ran at the edge before RSC ever saw the request. Batched Google Indexing API calls in the jobs-seo-index service and added a VirtualService timeout so a slow batch could not cascade. Dual-gated JobPosting JSON-LD on robots=index AND google_indexed=1, both sourced from the SEO Index service instead of the DB. Added a /v1/gfj/invalidate-jobs endpoint so takedowns actually cleared both SEO flags.

Outcome

Eliminated the soft-404 class of errors on Googlebot traffic. Indexing API calls stopped timing out and started succeeding in batches. JSON-LD became a reliable proxy for "this job is actually indexable," which matters on a site where a 1% indexing shift is tens of thousands of lost landing pages per day.

Impact: 5-8M page views/day protected, soft-404s eliminated, indexing API timeouts eliminated

Tech Stack

Next.jsTypeScriptNestJSGoogle Indexing APIJSON-LDIstio

Talent.com2026

Legacy Platform Migration to Next.js/TypeScript

The Muse - Complete replatforming from Python/Tornado/CoffeeScript to modern stack

Toggle details for Legacy Platform Migration to Next.js/TypeScript

Problem

Legacy Python/Tornado/CoffeeScript platform with 45+ minute build times was blocking rapid iteration, making deployments risky, and limiting engineering velocity. The technical debt had accumulated over years, creating maintenance burden and slowing feature development.

Solution

Led complete migration to Next.js/TypeScript/SCSS stack using Claude Code for assisted refactoring. Incrementally decomposed monolithic services into microservices, established modern CI/CD pipelines, implemented comprehensive testing, and standardized development practices across teams.

Outcome

Build times dropped from 45+ minutes to 75 seconds, enabling multiple daily deployments. Development velocity increased significantly with modern tooling, type safety, and improved developer experience. Reduced production incidents and accelerated feature delivery.

Impact: Build times: 45+ min → 75 sec

Tech Stack

Next.jsTypeScriptReactSCSSNode.jsAWSDockerCircleCI

The Muse2023-2025

Multi-Tenant White-Label Job Search Platform

The Muse - Scalable B2B SaaS product enabling partners to launch branded job search sites

Toggle details for Multi-Tenant White-Label Job Search Platform

Problem

The Muse wanted to expand revenue beyond job seeker platform by enabling partners to leverage job search technology. Required building scalable multi-tenant architecture that could handle custom branding, domains, and configuration while maintaining single codebase.

Solution

Architected and led development of white-label platform with tenant isolation, dynamic configuration, custom domain mapping, and brand theming. Built admin tooling for tenant provisioning and management. Designed data isolation strategy ensuring security and performance across tenants.

Outcome

Successfully launched B2B SaaS product opening new revenue stream. Platform enabled partners to launch branded job search sites within days instead of months. Architecture supports unlimited tenants with minimal overhead.

Impact: Projected: $153K-$230K annual revenue per tenant

Tech Stack

Next.jsTypeScriptReactNode.jsPostgreSQLAWSDocker

The Muse2022-2023

SEO Architecture Overhaul - Infinite Scroll to Pagination

The Muse - Replaced infinite scroll with paginated search for improved crawlability

Toggle details for SEO Architecture Overhaul - Infinite Scroll to Pagination

Problem

Infinite scroll job search prevented Google from discovering and indexing deep job listings. Search engines could only crawl the initial page load, leaving thousands of job postings invisible to organic search traffic and costing significant potential revenue.

Solution

Redesigned search UX from infinite scroll to paginated results with proper SEO implementation (canonical URLs, rel=prev/next, XML sitemaps). Collaborated with Product/Design to maintain user experience while optimizing for crawlability. Implemented progressive enhancement ensuring functionality without JavaScript.

Outcome

Google began indexing entire job catalog. Organic search traffic increased dramatically as job listings became discoverable. Improved rankings for job-related queries and reduced dependency on paid acquisition.

Impact: +74K monthly SEO visits

Tech Stack

Next.jsReactSEOJavaScriptServer-Side Rendering

The Muse2021-2022

Ad Platform Migration & Revenue Optimization

The Muse - Migrated to new ad partner with improved layouts and formats

Toggle details for Ad Platform Migration & Revenue Optimization

Problem

Existing ad partner provided limited formats and poor viewability. Ad revenue was plateauing and user experience suffered from intrusive placements. Needed better monetization without degrading Core Web Vitals or user experience.

Solution

Led evaluation and migration to new ad partner with modern formats (native, video, rich media). Redesigned ad integration with lazy loading, viewability optimization, and performance budgets. Implemented A/B testing framework to validate revenue impact and user experience metrics.

Outcome

Revenue increased 15% with better user experience. Improved ad viewability and CTR while maintaining excellent Core Web Vitals. Established framework for ongoing ad optimization experiments.

Impact: +15% revenue increase

Tech Stack

JavaScriptReactNext.jsGoogle Ad ManagerA/B Testing

The Muse2020-2021

Global Ad Platform for 30+ Premium Publications

Condé Nast - Rebuilt cross-brand ad delivery infrastructure at massive scale

Toggle details for Global Ad Platform for 30+ Premium Publications

Problem

Legacy ad platform across Vogue, The New Yorker, Wired, GQ, Bon Appétit, and 25+ other brands had poor viewability (45%), slow render times, and inconsistent implementation. Every millisecond of latency impacted global revenue across 229M+ monthly users.

Solution

Architected and implemented unified ad platform serving all Condé Nast brands. Removed jQuery dependencies, optimized bundle size, implemented lazy loading and viewability tracking. Created shared UI tooling and plugin architecture. Standardized testing achieving 80%+ coverage.

Outcome

Ad viewability jumped from 45% to 85%, dramatically increasing revenue. Faster render times improved user experience and Core Web Vitals. Reduced integration defects and accelerated feature delivery across all brands.

Impact: Ad viewability: 45% → 85%, 229M+ monthly users, 1B+ monthly video views

Tech Stack

JavaScriptReactNode.jsGoogle Ad ManagerPrebidAWS

Condé Nast2015-2018

Health Platform Performance Optimization

Everyday Health - Reduced page load time and network requests for 30M+ monthly users

Toggle details for Health Platform Performance Optimization

Problem

Slow page loads (5+ seconds) and excessive network requests (100+ per page) created poor user experience, hurt SEO rankings, and reduced ad revenue. Mobile users particularly impacted, with high bounce rates on slow connections.

Solution

Implemented comprehensive performance optimization: lazy loading, image optimization, critical CSS, code splitting, CDN optimization, and reduced third-party scripts. Built responsive mobile-first architecture using SASS (BEM) and modular JavaScript. Established performance budgets and monitoring.

Outcome

Page load time decreased 54% and network requests cut 53%. Improved engagement metrics, better Core Web Vitals, higher SEO rankings, and increased ad revenue. Mobile experience dramatically improved.

Impact: -54% load time, -53% requests, +86% ad CTR

Tech Stack

JavaScriptSASSBootstrapResponsive DesignPerformance Optimization

Everyday Health2012-2015

Statewide Foster Care & Adoption Platform

CatalpaSoft - Digital transformation for Indiana foster care system

Toggle details for Statewide Foster Care & Adoption Platform

Problem

Indiana foster care system relied on manual paperwork, spreadsheets, and email to manage 12K+ children and 3K+ foster households. Processing took months, data was inconsistent, and staff spent significant time on data entry instead of helping families.

Solution

Founded software firm and built comprehensive platform handling parent recruitment, child placement, training compliance, mentorship forums, and developmental evaluations. Replaced paper/spreadsheet workflows with automated systems. Implemented secure single sign-on and encrypted remote access for field staff.

Outcome

Cut statewide foster/adoption processing time by 50%+, accelerating placements for vulnerable children. Eliminated manual paperwork and data entry roles, saving $400K+ annually. Platform expanded across state lines and served as model for child welfare digital transformation.

Impact: 50%+ faster processing for 12K+ children, $400K+ annual savings

Tech Stack

ColdFusionSQL ServerJavaScriptExchange SSOEncryption

CatalpaSoft2003-2012

Core Web Vitals Optimization to Google Green

The Muse - Performance refactors improving rankings and conversions

Toggle details for Core Web Vitals Optimization to Google Green

Problem

Google Core Web Vitals scores in red/orange range hurt SEO rankings and conversion rates. LCP, FID, and CLS metrics failed Google's thresholds, directly impacting search visibility and user experience during critical job search moments.

Solution

Implemented comprehensive Web Vitals optimization: image optimization with next/image, font loading optimization, code splitting, lazy loading, server-side rendering improvements, and third-party script optimization. Established monitoring and performance budgets to prevent regression.

Outcome

Achieved 90%+ green Core Web Vitals scores across all pages. Improved SEO rankings, increased organic traffic, and higher conversion rates. Established performance culture with ongoing monitoring and optimization.

Impact: 90%+ green Web Vitals, improved LCP + conversions

Tech Stack

Next.jsReactPerformance APILighthouseWeb Vitals

The Muse2020-2021

Structured Data Implementation & SEO Growth

The Muse - JSON-LD structured data driving 10x organic traffic increase

Toggle details for Structured Data Implementation & SEO Growth

Problem

Job listings and articles not appearing in Google rich results (job cards, article snippets). Search engines struggled to understand content structure, limiting visibility in competitive job search market.

Solution

Implemented comprehensive JSON-LD structured data across all content types (JobPosting, Article, Organization, BreadcrumbList). Worked with SEO team to optimize schema markup and validate in Search Console. Built automated testing to prevent schema regression.

Outcome

Organic SEO traffic increased 10x as content appeared in Google rich results. Job listings displayed with salary, location, and company in search. Articles featured in Top Stories and article carousels. Dramatically reduced dependency on paid acquisition.

Impact: 10x increase in organic SEO traffic

Tech Stack

Next.jsJSON-LDSchema.orgSEOServer-Side Rendering

The Muse2019-2020

AI-Powered Content Discovery Tool (Maya)

The Muse - AI search tool surfacing 24,000+ articles with natural language queries

Toggle details for AI-Powered Content Discovery Tool (Maya)

Problem

Over 24,000 articles from The Muse and FGB were difficult for users to discover through traditional search and navigation. Article content represented significant value but wasn't being surfaced effectively, limiting engagement and monetization opportunities. Users needed a more intuitive way to find relevant career advice.

Solution

Designed and led development of Maya, an AI-powered content discovery tool that uses natural language processing to surface relevant articles. Built with React.js and Next.js, integrating with article APIs to provide intelligent search results. Positioned platform for AI-first search future while maintaining performance standards.

Outcome

Increased article pageviews by 3,500 unique users per month. Boosted organic reach and created PR-driven traffic opportunities. Opened new top-of-funnel monetization paths by improving content discoverability. Demonstrated technical leadership in emerging AI technologies.

Impact: +3,500 unique users/month, 24K articles surfaced

Tech Stack

React.jsNext.jsAPIsAI/MLNatural Language Processing

The Muse2024

Dynamic Direct Apply Forms with Multi-ATS Integration

The Muse - JSON-driven application forms integrated with partner ATS platforms

Toggle details for Dynamic Direct Apply Forms with Multi-ATS Integration

Problem

Google prioritizes sites with direct application capability in Google Jobs search results. The Muse needed to enable on-site applications without rebuilding forms for each partner's unique requirements. Each ATS had different fields, validation rules, and security requirements for handling PII.

Solution

Partnered with multiple third-party applicant tracking systems and built dynamic form generator consuming JSON schema definitions. Created system supporting custom fields, validation rules, display ordering, and PII security. Implemented multi-phase approach with technical documentation, partner coordination, and POC variants for each ATS integration.

Outcome

Clickthrough rate increased 15% and job applications increased 10% by reducing friction. Achieved Google Jobs prioritization improving organic discovery. Built scalable platform supporting unlimited ATS partners without custom development for each integration.

Impact: +15% CTR, +10% job applies

Tech Stack

React.jsNext.jsTypeScriptJSONAPIsJest

The Muse2023

Company Profile Pages Performance & SEO Transformation

The Muse - Lighthouse scores to all-green across performance, accessibility, and SEO

Toggle details for Company Profile Pages Performance & SEO Transformation

Problem

Company profile pages built on legacy monolith (CoffeeScript, Python, Tornado) had poor performance scores hurting SEO rankings and user experience. Mobile Lighthouse scores: Performance 62, Accessibility 96, Best Practices 83, SEO 89. Slow load times reduced engagement and conversion for job seekers researching employers.

Solution

Replatformed Company Profile pages as server-side rendering microfrontend using Next.js, TypeScript, Docker, AWS ECS, and CircleCI. Replaced legacy stack with modern standards while maintaining feature parity. Focused optimization efforts on Core Web Vitals and accessibility compliance.

Outcome

Achieved all-green Lighthouse scores: Performance 91 (+29), Accessibility 100 (+4), Best Practices 92 (+9), SEO 96 (+7). Dramatically improved page load times and user experience. Enhanced SEO rankings leading to increased organic traffic to company profiles and job listings.

Impact: Lighthouse: Perf 62→91, A11y 96→100, BP 83→92, SEO 89→96

Tech Stack

Next.jsTypeScriptReact.jsDockerAWS ECSCircleCI

The Muse2023

Job Search Experience Complete UX & Technical Rebuild

The Muse - Modern search interface with 21.9% increase in clicks and perfect Web Vitals

Toggle details for Job Search Experience Complete UX & Technical Rebuild

Problem

Job search experience felt dated and didn't align with The Muse's modern approach to job seeking. Technical debt in search page architecture limited ability to iterate quickly and add features. Poor Core Web Vitals hurt SEO rankings. User engagement metrics showed room for improvement in browsing and discovery.

Solution

Complete UX refresh redesigning search interface from ground up while rebuilding technical architecture. Migrated to Next.js, Koa, Storybook, TypeScript, CSS Modules, and Docker. Collaborated with Product and Design teams to reimagine job discovery experience. Focused on performance optimization achieving perfect Core Web Vitals scores.

Outcome

Increased job tile views 8.7%, tile views per unique visitor 20%, and job tile clicks 21.9%. Achieved exceptional Core Web Vitals: LCP 2.23s, FID 0.02s, CLS 0 (perfect). Improved SEO rankings through performance gains. Created scalable, maintainable platform for future search innovations.

Impact: +21.9% clicks, +20% views/user, LCP 2.23s, FID 0.02s, CLS 0

Tech Stack

Next.jsTypeScriptKoaStorybookCSS ModulesDocker

The Muse2021-2022