Sitemap
Any Programming

Practical software engineering across every stack from C# and .NET to Python, TypeScript, Go, and Rust. Hands-on tutorials, system design, design patterns, DevOps, and AI-assisted development, with working code you can actually run. By developers, for developers.

Member-only story

I Added AI to My .NET App, Here’s What Three Weeks in Production Actually Looked Like

--

Press enter or click to view image in full size

Three weeks ago, my client pinged me on Teams: “Can we add a chat feature? Like ChatGPT but for our internal data.”

I’ve heard this ask before. Usually it dies in the requirements meeting when someone realizes what it actually costs. This time they had budget, a hard deadline, and an executive sponsor who’d already promised it to the board.

So I said yes. Here’s everything that actually happened, not the cleaned-up tutorial version, the real one.

Why I Chose Semantic Kernel Over Just Calling the API Directly

My first instinct was to skip the abstraction entirely. The Azure OpenAI API is simple enough, you POST a JSON payload, you get a response. Add system prompts, done.

But this was an ASP.NET Core 8 app with an existing EF Core data layer, a clean service architecture, and a team that was going to maintain this thing. Rolling my own meant writing chat history management, function-calling orchestration, and plugin wiring from scratch. That’s a week of work I didn’t have.

Semantic Kernel isn’t magic — it’s scaffolding. And once I got past the initial learning curve, it respected the patterns I already knew: DI, async/await…

--

--

Adnan Khan
Adnan Khan

Written by Adnan Khan

Senior .NET engineer. I write about the EF Core and async bugs that only show up in production — and the patterns that keep them out.

Any Programming
Any Programming

Published in Any Programming

Practical software engineering across every stack from C# and .NET to Python, TypeScript, Go, and Rust. Hands-on tutorials, system design, design patterns, DevOps, and AI-assisted development, with working code you can actually run. By developers, for developers.