Open to full-time software engineering roles · willing to relocate

Software Developer (AI Development)

Alex Jensen

I build production .NET systems, and the agentic AI that runs inside them.

Focus
.NET APIs · Data · Agentic AI
Based in
Sioux Falls, SD · open to relocation
Shipped
10+ systems in daily use

Backend developer working in C# and .NET: ASP.NET Core Web APIs built on Clean Architecture and CQRS, backed by SQL Server and EF Core, delivered through Azure DevOps CI/CD and supported in production. I build close to the people who use the software, and on that foundation I've shipped 10+ AI systems into daily use.

C# / .NET 10·ASP.NET Core Web API·Clean Architecture·CQRS · MediatR·EF Core · SQL Server·T-SQL · Stored Procs · Indexing·Azure DevOps CI/CD·IIS · Windows Server·Application Insights · Grafana·Cosmos DB·Microsoft Agent Framework·TypeScript · React·C# / .NET 10·ASP.NET Core Web API·Clean Architecture·CQRS · MediatR·EF Core · SQL Server·T-SQL · Stored Procs · Indexing·Azure DevOps CI/CD·IIS · Windows Server·Application Insights · Grafana·Cosmos DB·Microsoft Agent Framework·TypeScript · React·
Alex Jensen

About

I ship, deploy, and support what I build.

I'm a software developer who works in the .NET ecosystem. The systems I've shipped are built around ASP.NET Core Web APIs using Clean Architecture, SOLID, CQRS with MediatR, and EF Core over SQL Server, consumed by internal web clients, Blazor apps, and Microsoft Teams.

I work across the whole delivery cycle, not just the code. I build and maintain Azure DevOps CI/CD pipelines, deploy to IIS on Windows Server, and set up the Application Insights and Grafana monitoring the team uses to support those services in production. Keeping existing systems healthy and improving them is a normal part of the week, and I take my turn on support.

The AI is what sits on top. I've put 10+ production systems into daily use across customer care, network operations, field dispatch, HR, and business intelligence. They share a reusable agent architecture the team now builds on, using the Microsoft Agent Framework, with Cosmos DB behind agent memory and chat history. That depth in LLM systems is the part most backend developers don't have, but the systems only work because the engineering underneath them is solid: concurrency, idempotency, data privacy, and observability.

Most of what I build starts as a conversation with the people who'll actually use it: support reps, field technicians, HR managers, analysts. I learn the workflow first, ship something small, then adjust as they use it. Requirements move, priorities stack up, and the work is usually spread across several systems at once. I also mentor the engineer who joined our team this year, and we review each other's code. (Before engineering, I ran a 20k-follower Barstool Sports account for four years, which is where the instinct for building things people actually adopt comes from.)

Engineering foundation

How I build

Every project below is a variation on the same architecture. One .NET Web API is the spine: layered, testable, and dependency-inverted, with agents, jobs, and clients hanging off it. This is that architecture.

Reference architecture: every system is built on this
CONSUMERSMicrosoft TeamsBlazor appsInternal web clientsWorker servicesAPIASP.NET Core Web APIendpointsauthvalidationDTO mappingAPPLICATIONCQRS commands + queriesMediatRagent orchestrationguardrailsDOMAINentitiesbusiness rulesno outward dependenciesINFRASTRUCTUREEF Core -> SQL ServerCosmos DBAgent Frameworkexternal APIsDELIVERYAzure DevOps YAMLbuild -> artifact -> releaseIIS / Windows ServerOPERATIONSApplication InsightsGrafanaagent + LLM traceson-call
dependencies point inward: Domain depends on nothingone API, many agents, many consumers
Delivery pipeline: commit to production
AUTHORREVIEWBUILDVALIDATEPACKAGERELEASERUNFeature branchgitPull requestpeer reviewCI PipelineAzure DevOpsBuild ValidationautomatedArtifactversionedRelease Pipelineper environmentIIS / WindowsServerhosted
nothing merges without reviewone artifact promoted through each environmentwatched in Application Insights after release
01

Layered, testable services

ASP.NET Core Web APIs and Windows services structured with Clean Architecture and SOLID. CQRS with MediatR keeps commands and queries separate; dependency injection keeps the domain free of infrastructure so behavior can be exercised in isolation.

02

Data access, both ways

EF Core with migrations for the application model, and hand-written T-SQL where it earns its place: stored procedures for heavy set-based work, and indexes designed against real query plans. Cosmos DB backs agent memory and chat history.

03

Continuous delivery

Azure DevOps YAML pipelines for build and release, with changes peer-reviewed before they merge and a single versioned artifact promoted through each environment. Consistent, repeatable delivery matters more than clever delivery.

04

Hosting & production support

Services run on IIS and Windows Server, configured and managed per environment. Application Insights and Grafana dashboards cover latency, failures, and agent telemetry, so production questions get answered from data rather than guesswork. Support rotates across the team.

05

Reliability under concurrency

These pipelines process hundreds of records per cycle. Database-level locking and idempotent processing mean no record is handled twice, and failures retry without duplicating work or corrupting state.

06

Built with the business

Requirements arrive as a problem, not a spec. I sit with the people doing the work, ship something small, and refine it against real use, then keep maintaining and improving it once it's in production.

Selected work

Systems in production

Event-driven processing pipeline

Real-Time Transcript Summarization (ANA)

↓30%
after-call work

A Windows service subscribes to a live event stream and writes each completed unit of work into a SQL Server queue. A worker service pulls batches through the .NET Web API, where an agent produces a structured summary and a classification, and results are persisted back to SQL Server. Built for concurrency from the start: 200 records per cycle, fully idempotent, with database-level locking so nothing is ever processed twice.

Real-Time Transcript Summarization (ANA): architecture
SOURCECAPTUREQUEUEPROCESSAPIREASONPERSISTGenesysWebSocketcall-end eventsListener ServiceWindows serviceSQL Serverwork queueWorker Service200/cycle.NET Web APICQRS · MediatRSummary AgentPII guardrailsSQL Servernotes + reasons
row-level locking → idempotent, no duplicate processing200 concurrent records per cycletraced end-to-end in Application Insights
In context

Every customer-care call, via the Genesys websocket. PII guardrails run on each generated note before it is stored.

Transfers to

Any high-volume event stream needing exactly-once processing: telemetry ingestion, transaction capture, work-order intake.

.NET Web APIWindows ServiceSQL ServerEF CoreAgent FrameworkGenesys

Retrieval-augmented knowledge service

Enterprise Knowledge Assistant

3 → 1
systems unified into one index

Ingestion jobs pull documentation out of three separate systems, normalize and chunk it, and embed it into a single unified index that re-syncs as source content changes. An agentic retrieval pipeline searches that index, re-ranks what it finds, and answers through the .NET Web API with grounded citations, surfaced in Teams and a web client.

Enterprise Knowledge Assistant: architecture
SOURCESINGESTINDEXAPIRETRIEVESURFACEServiceNowUnilyService DeskWikiIngestionPipelinenormalize+chunkUnified VectorIndexauto-resync.NET Web APIquery endpointsRetrieval Agentsearch · re-rankTeams + WebClientcited answers
answers are grounded: every response cites its source documentindex re-syncs so answers track content changes
In context

ServiceNow, Unily, and a custom Service Desk wiki. Used for onboarding, HR ticket deflection (PTO, benefits), and support troubleshooting.

Transfers to

Any organization whose knowledge is fragmented across systems: operations manuals, safety procedures, compliance policy, vendor documentation.

.NET Web APIRAGVector SearchAgent FrameworkTeams

NL2SQL over a governed semantic model

Natural-Language Analytics Assistant

0
SQL written by end users

A chat surface that lets non-technical leadership query the data warehouse in plain English. The agent resolves intent against a curated semantic model rather than the raw schema, generates SQL, validates it, executes it read-only, and returns the result alongside the query it ran. The semantic layer is what keeps generated SQL both correct and safe: the model can only reach what the layer exposes.

Natural-Language Analytics Assistant: architecture
ASKAPIRESOLVEGOVERNVALIDATEEXECUTERETURNChat Clientplain English.NET Web APIAnalytics Agentintent mappingSemantic Modelcurated surfaceSQL Validationread-only guardData WarehouseSQL ServerResult + Queryshows its work
generation is constrained by the semantic model, not the raw schemaexecution is read-only and validated before it runs
In context

Churn and disconnect rates by area, marketing offers by region and franchise, top-performing network nodes, period-over-period comparisons.

Transfers to

Any warehouse where business users need answers and can't write SQL: production reporting, financials, operational KPIs.

.NET Web APINL2SQLSemantic ModelSQL ServerT-SQL

Applied ML with LLM explanation

Telemetry Anomaly Detection

ML + LLM
calibrated root-cause triage

Given a single device, the system compares its telemetry against the peer cohort sharing the same upstream equipment to localize where a fault actually lives. A LightGBM model with isotonic regression calibration produces a confidence score you can trust as a probability, and an agent turns the underlying metric trends and Z-scores into a plain-language explanation for non-technical staff.

Telemetry Anomaly Detection: architecture
INPUTSFEATURESSCOREAPIEXPLAINSURFACEDevice TelemetryPNM · Wi-FiPeer Cohortsame upstreamFeature PipelineZ-scoresLightGBM Model+ calibration.NET Web APIExplanationAgentwhy, in EnglishSupport + Fieldplain-language
isotonic calibration → the confidence score is a real probabilitythe model decides; the agent explains the decision
In context

Cable modems, using PNM and Wi-Fi telemetry, to determine whether an issue is in the home or upstream at the amplifier.

Transfers to

Any fleet of sensored equipment where a fault must be isolated to a device or its shared upstream asset: pumps, compressors, meters, turbines.

LightGBMIsotonic Regression.NET Web APIAgent Framework

NL2KQL agent exposed over MCP

Log Analytics Agent

MCP
one server, multiple clients

An agent that reads raw infrastructure logs, surfacing anomalies and correlating events across devices, and translates natural language into KQL against the log workspace. Exposed as an MCP server so the same capability is consumable from Microsoft Teams and a custom web client without reimplementing it per surface.

Log Analytics Agent: architecture
CLIENTSCONTRACTAPITRANSLATEQUERYOUTPUTMicrosoft TeamsWeb ClientMCP Servertool contract.NET Web APILog AgentNL → KQLAzure LogAnalyticsdevice logsAnomaliescorrelated
MCP means new clients get the capability without new codequeries are generated, reviewed, then executed
In context

Cisco and network-device logs in Azure Log Analytics, used by the platform and security teams.

Transfers to

Any centralized log or historian platform: infrastructure, industrial control systems, application telemetry.

MCP ServerNL2KQLAzure Log Analytics.NET Web APITeams

Legacy modernization · multi-source fan-in

Account Intelligence API

4
data sources fused per account

The customer-service account application was rebuilt with AI at its center, and I built the .NET Web API behind it, translating the existing domain logic and workflows onto a modern layered architecture. The instant a rep opens an account the client calls the API, which fuses four independent data sources and reasons over them to predict why the customer is calling, before the rep has to ask.

Account Intelligence API: architecture
SOURCESAPIREASONSURFACEPayment HistoryWork OrdersCall Summariesfrom ANADevice Telemetry7-day window.NET Web APICQRS · EF CoreReasoning Agentlikely reasonsAccountDashboardon account open
existing domain logic re-platformed onto a layered architecturecontext assembled before the conversation starts
In context

Payment history, prior work orders, 30 days of call summaries produced by ANA, and a week of device telemetry.

Transfers to

Any operational console where a user needs complete context on an entity within the first three seconds: dispatch, claims, account management, asset review.

.NET Web APICQRSEF CoreSQL ServerAgent Framework

Human-in-the-loop document workflow

Document Modernization Platform

500+
documents modernized

A workflow that extracts content out of legacy documents, maps it into a new structured template with per-section placeholders, and rewrites it section by section with a human approving each pass. An interactive Blazor builder then walks non-technical managers through authoring a new document with AI assistance, exports a finished file, and bulk-uploads it to the system of record.

Document Modernization Platform: architecture
INPUTEXTRACTREWRITEREVIEWAUTHORPUBLISHLegacy DocumentsWord · 500+Extract + Maptemplate slotsRewrite Agentsection-wiseHuman Reviewapprove / reviseBlazor Builderguided authoringExport → ADPbulk upload
nothing is published without a human approving the sectionrejected sections loop back for regeneration
In context

500+ HR job descriptions modernized, exported to Word, and bulk-uploaded into ADP.

Transfers to

Any large corpus of legacy documents needing structured migration: SOPs, safety procedures, contracts, compliance manuals.

Blazor.NET Web APIAgent FrameworkADPOpenXML

Scheduled batch summarization

Pre-Dispatch Field Briefings

pre-truck
briefings generated automatically

A scheduled job briefs field technicians before they are dispatched. For preventive maintenance it summarizes the asset's telemetry trend over time; for reactive calls it mines the customer's described problem out of the transcript captured when the appointment was booked, so the technician knows the situation before arriving instead of diagnosing it on site.

Pre-Dispatch Field Briefings: architecture
INPUTSTRIGGERAPISUMMARIZEDELIVERAsset TelemetryPNM trendsBookingTranscriptat bookingScheduled Jobautomation.NET Web APIBriefing Agenttrend + issueTechnicianDispatchpre-arrival
runs ahead of dispatch on a schedule, not on requesttwo briefing paths behind one endpoint
In context

Amplifier PNM trend history for maintenance rolls; in-home trouble-call transcripts for reactive visits.

Transfers to

Any dispatched workforce in utilities, field service, or industrial maintenance, where arriving informed shortens the job.

Azure DevOps automation.NET Web APIAgent FrameworkSQL Server

Capabilities

What's under the hood

Backend & .NET

  • C# · .NET 8 → .NET 10
  • ASP.NET Core Web API
  • Clean Architecture · SOLID
  • CQRS with MediatR
  • Dependency injection
  • Windows services & workers
  • Blazor · TypeScript · React

Data

  • SQL Server · T-SQL
  • Stored procedures
  • Index design & query tuning
  • EF Core · migrations · raw SQL
  • Azure Cosmos DB (NoSQL)
  • KQL · Azure Log Analytics
  • Semantic models · vector search

AI & Agents

  • Microsoft Agent Framework
  • Agentic & multi-agent workflows
  • Retrieval-augmented generation
  • NL2SQL · NL2KQL
  • Tool use · function calling · MCP
  • Prompt design · guardrails · PII safety
  • LightGBM · calibrated confidence

Platform & Delivery

  • Azure DevOps · YAML pipelines
  • Build · release · scheduled deploys
  • IIS · Windows Server (on-prem)
  • Application Insights · Grafana
  • Git · branching · code review
  • Automated & integration testing
  • Mentoring · technical documentation

Journey

Experience & education

2025 to Present

Software Developer (AI Development)

Midco (Midcontinent Communications)

Build and support production .NET services and APIs used daily across customer care, network operations, field dispatch, HR, and business intelligence, often several in flight at once. Designed a reusable agent architecture the team now builds on, work directly with business users to shape and refine each system, and mentor an engineer who joined this year. Contribute across the delivery cycle: Azure DevOps CI/CD, deployment to IIS and Windows Server, and Application Insights and Grafana monitoring in production.

2021 to 2025

B.S. Computer Science

University of South Dakota · AI Specialization · Math Minor

Capstone: an AI Code Classifier using custom ML models that grade source-code quality from structural and logical patterns. Coursework across AI, data mining, computer architecture, and algorithms.

Practice

What I bring to a team

The domains change; the engineering doesn't. These are the areas I've worked in day to day, alongside other engineers and the business users the software is for.

01

Services & APIs

ASP.NET Core Web APIs and Windows services on Clean Architecture, with CQRS, MediatR, and dependency injection keeping the domain independent of its infrastructure.

02

SQL Server & Data Access

EF Core with migrations for the application model, T-SQL and stored procedures where set-based work belongs in the database, and indexes designed against real query plans.

03

CI/CD & Deployment

Azure DevOps YAML pipelines for build, release, and scheduled automation, deploying to IIS and Windows Server, with peer review before merge and consistent promotion through environments.

04

Standards & Secure Coding

Consistent structure, naming, and patterns across services, documented so somebody else can pick them up. Secrets stay out of source, inputs are validated, and data access is parameterized by default.

05

Agentic AI in Production

Microsoft Agent Framework agents, RAG over enterprise knowledge, NL2SQL and NL2KQL, MCP servers, and applied ML, all integrated into real workflows rather than demoed.

06

Legacy Modernization

Translating existing domain logic and workflows out of aging applications and document processes onto modern layered architectures without losing the business rules embedded in them.

Contact

Let's talk.

I'm looking for a full-time software engineering role and I'm open to relocating. If you're hiring, I'd like to hear what you're building.