Implementing orchestration over choreography: https://www.geeksforgeeks.org/system-design/orchestration-vs-choreography/
Parameter binding in minimal APIs: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis/parameter-binding?view=aspnetcore-9.0
Minimal APIs: https://learn.microsoft.com/en-us/aspnet/core/tutorials/min-web-api?view=aspnetcore-9.0&tabs=visual-studio
Aspire service defaults: https://learn.microsoft.com/en-us/dotnet/aspire/fundamentals/service-defaults
Service discovery in Aspire: https://learn.microsoft.com/en-us/dotnet/aspire/service-discovery/overview
Resilience patterns: https://learn.microsoft.com/en-us/dotnet/core/resilience/http-resilience?tabs=dotnet-cli
Service discovery in .NET: https://learn.microsoft.com/en-us/dotnet/core/extensions/service-discovery?tabs=dotnet-cli
MudBlazor front-end: https://www.mudblazor.com/
Styling in Mudblazor: https://deepwiki.com/MudBlazor/MudBlazor/6.3-css-and-styling
Using LM Studio's OpenAI like API: https://lmstudio.ai/docs/app/api/endpoints/openai
Chat completions OpenAI endpoint: https://platform.openai.com/docs/api-reference/chat
Submission of files into an OpenAI endpoint: https://stackoverflow.com/questions/78833840/openai-api-how-do-i-upload-a-file-and-ask-a-model-about-it