Bradley Hanson
Building complex software into intuitive experiences.
I'm a software engineer at Microsoft with 8+ years building products across Azure and Dynamics 365. I work mostly in React and TypeScript, and when a feature needs it I follow it down into SDKs and C# services.
- Now
- Dynamics 365 Contact Center: the Live Chat Widget and its Copilot Studio integration
- Before
- Azure Customer Experience Engineering, 2018 to 2026
- Role
- Software Engineer II, Microsoft
- Focus
- React, TypeScript, full stack
- Based
- Greater Seattle Area
Selected work
Products at Microsoft, and things I build on my own
Two case studies from my work at Microsoft, written from what I can share publicly, and the independent projects I spend the most time on.
Microsoft · Dynamics 365 Contact Center
2026 to present
Bringing a production chat widget into Copilot Studio
I built the customer-facing Live Chat Widget into Copilot Studio's agent test chat, then moved two products onto one chat renderer and one configuration contract.
Read the case study
Microsoft · Azure CXP Engineering
2018 to 2026
Rebuilding Azure support and engineering experiences
Eight years on Azure customer experience tools: a portal extension rewrite, Services Hub support case creation, and a forms engine other apps reused.
Read the case study
Independent · Civic technology
2026 to present
Modeling government and geography in Civic Maps
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.
Read the case study
Open source · npm
2026 to present
TypeScript libraries for SoundCloud
Three TypeScript packages for SoundCloud's official API and embeddable player. They power my music-discovery app, The Sub Delta.
Project details
Engineering explorer
Where each kind of work shows up
Pick an area to see the specific contributions behind it and the projects they came from.
- Dynamics 365 Contact Center
- Azure engineering experiences
- Civic Maps
- SoundCloud developer libraries
- Formosaic
- The Sub Delta
- TagPro tools
Frontend Engineering
Most of my work starts here: React and TypeScript apps with a lot of state, used by customers and by the people supporting them.
Moved two products onto one shared React chat renderer, with CI checks that stop either from reimplementing shared behavior.
Dynamics 365 Contact CenterMigrated a new agent desktop to Fluent UI v9 in one 243-file PR and unified two state systems into one store.
Dynamics 365 Contact CenterLed the Knockout to React and TypeScript rewrite of a customer-facing Azure portal extension, taking unit test coverage from 0 to 77%+.
Azure engineering experiencesBuilt a config-driven forms engine with business rules that became a platform's main data-entry experience.
Azure engineering experiencesWrote a JSON-driven React forms library with a rules engine and adapters for 11 UI libraries.
Formosaic
Tools: React · TypeScript · Fluent UI · Redux-Saga · Zustand · TanStack Query · React Hook Form · Accessibility (WCAG 2.1)
Full-Stack Applications
When a feature needs it, I follow it below the UI into the protocol or service underneath.
Wrote a TypeScript transport SDK for a WebSocket and SSE protocol, reverse-engineered with a local simulator.
Dynamics 365 Contact CenterShipped 10+ C#/.NET fixes to the live chat messaging and orchestration services.
Dynamics 365 Contact CenterBuilt a Next.js site and a PostGIS-backed HTTP API for officeholders and boundaries.
Civic MapsRun a Next.js app backed by an Azure Functions scan pipeline.
The Sub DeltaPublished React hooks that call Next.js route handlers, so API secrets stay on the server.
SoundCloud developer libraries
Tools: Node.js · C# / .NET · Next.js · REST · WebSocket and SSE · OAuth 2.0 and PKCE · Cosmos DB
Cloud & Enterprise Platforms
Delivery at Microsoft scale, where a release reaches several clouds or regions and customers are already in production.
Built an independent release pipeline that routes to 13 production regions.
Dynamics 365 Contact CenterEmbedded an agent desktop inside Salesforce with a host-bridge protocol and a manual PKCE token exchange.
Dynamics 365 Contact CenterMoved a portal extension to resource-provider deployment across the Azure Public, US Government, and China clouds.
Azure engineering experiencesDelivered Services Hub 2.0 support case creation, piloted to about 4,000 users.
Azure engineering experiencesCut a platform's Azure subscription costs by about $142.7K a year (36%).
Azure engineering experiences
Tools: Azure · Azure DevOps · Azure portal extensions · MSAL · Salesforce Lightning Web Components · Microsoft Dataverse · KQL
Developer Tooling
I like building the tools and guardrails that make the next change easier and safer.
Built a team's AI-assisted development guardrails: 13 architecture rule files, 3 agent skills, repository instructions across 5 codebases, and a weekly architecture-drift audit.
Dynamics 365 Contact CenterAdded hotfix release workflows and OIDC trusted publishing to 4 public npm SDK repositories.
Dynamics 365 Contact CenterMade about 100 Playwright end-to-end tests a release gate.
Azure engineering experiencesPublished a zero-dependency API client with retries, request deduplication, and a CLI.
SoundCloud developer librariesWrote a CLI that inspects game replays as NDJSON event streams.
TagPro tools
Tools: GitHub Actions · Playwright · Vitest · Jest · npm publishing · Claude Code · GitHub Copilot · MCP
Data & Geospatial Systems
Mostly from my own projects: modeling messy public data so an interface can answer a simple question.
Designed a PostGIS schema with versioned MultiPolygon boundaries and relation-based containment.
Civic MapsIngest Census TIGERweb geography for all 50 states, plus officeholders from Congress.gov, Open States, and the FJC, with provenance on every record.
Civic MapsCut search indexing over millions of documents from weeks to hours with Azure Search indexers.
Azure engineering experiencesWrote a reducer that rebuilds game state from replay events.
TagPro tools
Tools: PostgreSQL · PostGIS · Docker · CesiumJS · Azure Search · Cosmos DB
Experience
Ten years on Microsoft products
Two years as a vendor engineer, then Microsoft from October 2018. My title is Software Engineer II.
Microsoft · 2026 to present
Dynamics 365 Contact Center
- Software Engineer IIJanuary 2026 to present
Customer chat and agent experiences that span three product organizations, from React UI and SDKs to C# services and on-call.
- Built the production Live Chat Widget into Copilot Studio's agent test chat, from an empty repository to CDN deployment in six weeks.
- Designed the embed's security boundary on both sides of two repositories, so no credential enters the widget's iframe.
- Moved two products onto one shared React chat renderer, and replaced three configuration models with one versioned TypeScript contract.
- Took the live chat service's on-call rotation and shipped 10+ C#/.NET fixes to its messaging and orchestration services.
- Earlier in 2026, led frontend architecture for a new agent desktop and embedded it inside Salesforce.
Microsoft · 2018 to 2026
Azure Customer Experience (CXP) Engineering
- Software Engineer IISeptember 2023 to January 2026
- Software EngineerOctober 2018 to September 2023
Customer-facing Azure experiences and the internal tools Microsoft uses to support Azure customers.
- Led the Knockout to React and TypeScript rewrite of a customer-facing Azure portal extension as its frontend owner.
- Delivered support case creation for Services Hub 2.0 in about three months, piloted to about 4,000 users.
- Built a config-driven forms engine with business rules that became a platform's main data-entry experience.
- Cut a platform's Azure subscription costs by about $142.7K a year (36%) by removing redundant infrastructure.
- Added about 100 Playwright end-to-end tests as a release gate.
Mindtree · 2016 to 2018
Vendor engineer for Microsoft Azure CXP
- Software EngineerDecember 2016 to October 2018
Full-stack .NET and React work for Azure CXP before joining Microsoft full time.
- Rebuilt an outage-alerting front end from AngularJS to React and TypeScript, reaching feature parity with the legacy app.
Measured results
- a year in Azure costs removed
- $142.7K
- 36% of one CXP platform's Azure subscription spend, by removing redundant infrastructure.
- users in a support pilot
- ~4,000
- Services Hub 2.0 support case creation, which I delivered in about three months.
- unit test coverage
- 0 → 77%+
- On the Azure portal extension rewrite, which also cut local dev startup by 65%.
- from empty repo to CDN
- 6 weeks
- For the Live Chat Widget inside Copilot Studio's agent test chat.
Each figure comes from one project and period. They aren't lifetime totals, and they aren't added together.
Technical expertise
What I use, and where
Grouped by area, and split between what I use at work and what I've mainly used on my own projects.
Frontend and product engineering
- At work
- TypeScript, JavaScript, React, Component architecture, Complex UI state (Redux-Saga, Zustand, TanStack Query), React Hook Form, Fluent UI, Griffel, Accessibility (WCAG 2.1), Internationalization, Design systems
- Mainly on my own projects
- Next.js App Router, Tailwind CSS
Backend and platform
- At work
- Node.js, C# / .NET, REST APIs, WebSocket and SSE transports, OAuth 2.0, MSAL, and PKCE, SDK design and npm publishing, Microsoft Azure, Cosmos DB, Azure Search
- Mainly on my own projects
- Azure Functions, Redis
Data and infrastructure
- At work
- Telemetry and alerting, KQL
- Mainly on my own projects
- PostgreSQL, PostGIS, Docker, Geospatial data modeling, Data ingestion pipelines
Developer experience
- At work
- Git and GitHub, GitHub Actions, Azure DevOps pipelines, Feature flags and staged releases, Playwright, Vitest, Jest, GitHub Copilot, Claude Code, MCP and agent skills
Education
University of Wisconsin–Eau Claire
Bachelor of Science, Software Engineering, Minor in Economics. December 2016.
About
I build outside of work, too

Most of what I build is React and TypeScript. I like the frontend problems that look simple from the outside: a chat window that has to keep a conversation going across an iframe boundary, or a form whose fields change based on business rules. When a bug starts in the UI and ends in a C# service, I'd rather follow it down than hand it off.
I also build a lot outside of work. The Sub Delta is a music-discovery app for SoundCloud, and building it produced three open-source TypeScript packages. Civic Maps is about a question that should be easy to answer: who governs a given place? My TagPro tools came from wanting to understand the replay files of a browser game I play.
Contact
Get in touch
I'm open to senior product engineering roles where React and TypeScript are central and the work reaches across the stack. Email is the fastest way to reach me.