Start Debugging

CV Shortlist: un SaaS .NET 10 con IA se volvió open-source, y el stack vale la pena estudiarlo

CV Shortlist es un SaaS .NET 10 open-source que combina Azure Document Intelligence con un modelo de OpenAI. El stack, la disciplina de configuración y la frontera de integración con IA valen la pena estudiarlos.

Un post de C# que guardé hoy no es “otra app demo”. Es un SaaS completo y opinado que se construyó como producto comercial y luego se publicó como referencia educativa: CV Shortlist.

Fuente: CV Shortlist repo y el post original en r/csharp.

La parte útil es la frontera de integración, no la UI

La mayoría de las apps de muestra con IA se quedan en “llamar a un LLM”. Esta documenta la frontera real que hace o rompe las funcionalidades de producción:

Esa combinación es la que sigo recomendando cuando los equipos preguntan “¿cómo hacemos RAG sobre documentos?” sin construir un pipeline OCR frágil desde cero: usa un servicio de extracción especializado y luego razona sobre texto y campos limpios.

Un stack moderno de .NET 10, listado explícitamente

El README es refrescantemente concreto sobre versiones e infraestructura:

Aunque nunca te interese el dominio de reclutamiento, esta es una referencia real de “cuántas piezas móviles aparecen en cuanto la IA deja de ser una funcionalidad de juguete”.

Disciplina de configuración: user secrets en local, variables de entorno en producción

El repo destaca las dos prácticas que quiero que todo equipo de .NET 10 estandarice:

Este es el patrón que espero ver en Program.cs en proyectos como este:

var builder = WebApplication.CreateBuilder(args);

// Local debugging: dotnet user-secrets
if (builder.Environment.IsDevelopment())
{
    builder.Configuration.AddUserSecrets<Program>(optional: true);
}

builder.Services
    .AddOptions<AiSettings>()
    .Bind(builder.Configuration.GetSection("Ai"))
    .ValidateDataAnnotations()
    .ValidateOnStart();

var app = builder.Build();
app.Run();

public sealed class AiSettings
{
    public required string DocumentIntelligenceEndpoint { get; init; }
    public required string DocumentIntelligenceKey { get; init; }
    public required string FoundryModel { get; init; } // example: gpt-5-mini
}

El punto no son estos nombres de propiedades exactos. El punto es: trata la frontera de IA como cualquier otra dependencia externa en ASP.NET Core 10, y haz que la configuración y la validación sean aburridas.

Por qué esto importa (incluso si nunca construyes software de HR)

Si intentas publicar funcionalidades de IA en .NET 10, necesitas ejemplos funcionales que incluyan:

CV Shortlist es una referencia compacta de “así es como se ve cuando lo construyes de verdad”. Lee el README, hojea Program.cs y roba el diseño de la frontera para tu propio dominio.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Volver