Skip to content
Bradley Hanson

Résumé

Bradley Hanson

Software Engineer II, Microsoft · Dynamics 365 Contact Center

Summary

Full-stack engineer with ten years on Microsoft products, the first two as a vendor. In 10 months on Dynamics 365 Contact Center I merged 500+ pull requests across codebases owned by three product organizations, from React UI and SDKs to C#/.NET services, pipelines, and on-call. I build with AI coding agents every day and own the guardrails that let a team do the same safely.

Experience

Microsoft · Dynamics 365 Contact Center

  • Software Engineer IIJanuary 2026 to present

Live Chat Widget and Copilot Studio integration · June 2026 to present

  • Built the production chat widget into Microsoft Copilot Studio's agent test chat, taking it from an empty repository to CDN deployment in six weeks: new React packages, a TypeScript transport SDK for the orchestration service's WebSocket and SSE protocol (reverse-engineered with a local simulator), and an independent release pipeline routing to 13 production regions. Makers now test agents in the same chat UI their customers see.
  • Designed the embed's security boundary on both sides of two repositories. The Copilot Studio host owns the auth token and the WebSocket. The widget iframe receives only a transferred MessagePort over a versioned, origin-validated protocol, so no credential enters the iframe.
  • Converged two products onto one shared React chat renderer, starting with a 391-file rename that changed no runtime behavior, then a planned stack of four PRs verified to have no runtime impact on the shipping widget. Added build checks that fail CI if either product reimplements shared behavior.
  • Replaced three widget-configuration models with one versioned TypeScript contract (admin center, Copilot Studio, and the runtime widget). It handles v1 and v2 compatibility, preserves unknown fields, and rejects unsafe CSS and URLs. I shipped it into all three products so a partial save in one can no longer erase another's settings, then delivered admin-side appearance and dark-mode authoring end to end.
  • Took the live chat service's on-call rotation. Root-caused a high-severity outage within about an hour, wrote the RCA, removed the failure mode in the C# messaging service, and built an alert that would have fired 11 minutes before existing monitoring.
  • Shipped 10+ C#/.NET fixes to the messaging and orchestration services, including recovery from a failed AI dialog that had left customers' chat sessions silent.

New agent desktop · January to June 2026

  • Led frontend architecture for a new agent desktop on a mostly backend team. Migrated the design system to Fluent UI v9 in a single 243-file PR, unified two state systems into one store, and built the three-tier Playwright test architecture.
  • Embedded the desktop inside Salesforce end to end. Designed a host-bridge postMessage protocol, upgraded MSAL with a manual PKCE token exchange through Salesforce's iframe sandbox, and built a Lightning Web Component container plus an installable host SDK that kept existing embedded customers compatible.
  • Owned a customer-requested post-call quality survey end to end, from the voice SDK transport to admin eligibility settings and an accessible rating dialog, and verified it on a live phone call.
  • Owned security for the public Live Chat Widget SDKs on npm. Shipped 9 CVE remediations across 5 packages with none reverted, and added hotfix release workflows and OIDC trusted publishing to all 4 repositories.
  • Built the team's AI-assisted development guardrails: 13 architecture rule files, 3 agent skills, and repository instructions across 5 codebases, plus a weekly automated architecture-drift audit. Ran an agentic development workshop for about 11 engineers and built an on-call workbench that pulls incident history, past mitigations, and telemetry into one command.

Microsoft · Azure CXP Engineering

  • Software Engineer IISeptember 2022 to January 2026
  • Software EngineerOctober 2018 to September 2022
  • Led the Knockout to React and TypeScript rewrite of a customer-facing Azure portal extension as its frontend owner: 100+ PRs, the legacy framework fully removed, unit test coverage from 0 to 77%+, and local dev startup cut 65% (4:32 to 1:34), coordinating across the UX, portal-platform, and deployment teams.
  • Migrated the extension to resource-provider deployment across the Azure Public, US Government, and China clouds, which halved its core Assessments component (3,000 to 1,500 lines), closed a Secure Future Initiative compliance item, and remediated 10+ .NET and npm CVEs.
  • Delivered support case creation for Services Hub 2.0 in about three months (56 PRs) on a stack I hadn't used before, covering product and problem selection, validation, and additional contacts. It was piloted to about 4,000 users.
  • Frontend owner of a customer-engagement management platform. Built its config-driven forms engine with business rules (React Hook Form), which became the product's main data-entry experience, plus tree-view navigation and shared controls that other CXP apps reused.
  • Cut that platform's Azure subscription costs by $142.7K a year (36%) by removing redundant infrastructure.
  • Introduced about 100 Playwright end-to-end tests as a release gate.
  • Onboarded and mentored new teammates, and helped raise the team's frontend standards.
  • Sole frontend developer of the Azure field's outage-visibility app. Extended its coverage from Azure to Microsoft 365 and Dynamics 365, grew daily users from about 100 to about 173, and cut search indexing over millions of documents from weeks to hours with Azure Search indexers.
  • Took an internal tool from a hackathon prototype to production, replacing a legacy ASP.NET MVC app on the shared CXP UX platform. Later led two AI hackathon teams that added RAG-based recommendations to assessments.

Mindtree · Vendor engineer for Microsoft Azure CXP

  • Software EngineerDecember 2016 to October 2018
  • Owned the frontend of an internal outage-alerting app for the Azure field, taking it from pilot to preview release, then rebuilding it in React to retire AngularJS, with routing, telemetry, an error boundary, and token refresh.
  • Started its migration to TypeScript and Redux and added alerts, impacted-customer views, and SMS phone verification. Parts of that UI are still in production today.
  • Hired by Microsoft as a full-time engineer in October 2018 on the strength of that work.

Projects

  • SoundCloud developer libraries · Open source. Three TypeScript packages for SoundCloud's official API and embeddable player. They power my music-discovery app, The Sub Delta.
  • Formosaic · Open source. Define a form once as JSON, and a rules engine handles conditional logic, validation, wizards, and auto-save. It renders through 11 UI library adapters.
  • Civic Maps · Independent. A map-first way to answer "who governs this place?" PostGIS boundaries for all 50 states, current federal and state officeholders, and a Next.js site over a 3D globe.
  • The Sub Delta · Independent. My main side project since 2015 and the place I experiment freely. It crawls SoundCloud's social graph from artists you already like and surfaces tracks that are catching early.

Skills

Frontend
React, TypeScript, JavaScript, Redux and Redux-Saga, Zustand, TanStack Query, React Hook Form, Fluent UI, Vite, Next.js, accessibility (WCAG 2.1), internationalization, design systems
Backend and APIs
Node.js, C# / .NET, REST, WebSocket and SSE transports, OAuth 2.0, MSAL, PKCE, SQL Server, Cosmos DB, Azure Search, Azure Service Fabric
SDKs and integration
npm SDK publishing, cross-origin iframe and postMessage protocols, Salesforce Lightning Web Components, Microsoft Dataverse, Azure portal extensions
Quality and delivery
Playwright, Vitest, Jest, GitHub Actions, Azure DevOps pipelines, feature flags, staged multi-region releases, telemetry, alerting, KQL, incident response
AI-assisted engineering
Claude Code, Cursor, Grok Build, GitHub Copilot CLI and coding agent, MCP, agent skills and rule libraries, RAG

Education

University of Wisconsin–Eau Claire

Bachelor of Science, Software Engineering, Minor in Economics. December 2016.