Header image for a Keyhole Software article by Austin Powell about using LLMs and AI-assisted discovery to understand, document, and modernize a legacy Delphi application. The image highlights transforming a "black box" system into a documented architecture blueprint and delivering a modernization project in approximately half the original timeline.

How We Used LLMs to Understand and Modernize a Legacy Delphi Application

Austin Powell .NET, Agentic AI & AI-Accelerated Development, All Industries, Articles, Artificial Intelligence, Modernization Leave a Comment

Many legacy modernization projects start with a simple question: what does this thing actually do?

In this project, we were modernizing a decades-old Delphi application with limited documentation, no meaningful test coverage, engineers long since moved on, and significant unknowns about the environment in which it operated.

Modernizing legacy systems is challenging, particularly when documentation is limited and system knowledge has been lost over time. When LLMs and AI are applied thoughtfully, they can help teams understand legacy systems faster and reduce modernization risk.

This article focuses on how we used LLMs to understand, document, and de-risk an unfamiliar legacy system before modernization began. Once the application was understood and the architecture was defined, the team leveraged AI-assisted development workflows to accelerate the Delphi-to-.NET rewrite itself. Evan Sanning shares that side of the project in his companion article, How We Used LLMs to Rewrite a Legacy Delphi Application in C#.

synopsis image of delphi to .net ai code conversion delivered 40% faster than deadline

How We Used LLMs to Rewrite a Legacy Delphi Application in C#

Evan Sanning .NET, Agentic AI & AI-Accelerated Development, All Industries, Articles, Artificial Intelligence, Generative AI & LLMs, Modernization Leave a Comment

We rewrote a legacy Delphi (Object Pascal) application into a .NET C# service worker in three months, beating a five-month deadline for a client in the healthcare software space.

Here’s what actually made that possible and the pitfalls we hit using LLMs along the way.

From 38 Seconds to 1.5: A Claude Code Performance Win

Bradley Hicken .NET, Agentic AI & AI-Accelerated Development, Articles, Artificial Intelligence, ASP.NET, Development Technologies & Tools, JavaScript, Tutorial Leave a Comment

A sluggish ASP.NET page with 3,850 checkboxes was taking 38 seconds to load. By collaborating with Claude Code and shifting to client-side rendering, load times dropped to just 1.5 seconds โ€” a 25ร— performance boost. Hereโ€™s how AI-assisted refactoring transformed the page and the development process.

CI/CD for Legacy .NET Framework Apps: How to Automate Deployment Pipelines

Zach Gardner .NET, .NET Core, Azure, CI/CD, Cloud, DevOps, Modernization, Videos Leave a Comment

Outdated deployment practices can slow down even the best software teams. When youโ€™re still manually moving files between servers, itโ€™s easy for small mistakes to slip through and updates to take longer than they should. At Keyhole Software, weโ€™ve seen firsthand how this approach can hold back your projects. The solution is to automate deployment pipelines. It brings consistency, reliability, …

Long-Running Workflows Made Simple With C# and Azure Durable Functions

Long-Running Workflows Made Simple with C# + Azure Durable Functions

Robert Rice Articles, Azure, C#, Financial, Tutorial Leave a Comment

Itโ€™s common to face challenges around long-running workflows, state management, and resiliency when youโ€™re building cloud-native applications. Traditional approaches like background services or message queues might work sometimes, but they often require a lot of โ€œglue codeโ€ and custom retry logic. This entails not only more work up-front for the developer, but also more maintenance in the long run.

Thatโ€™s where Azure Durable Functions come in.