Start Debugging

CV Shortlist: um SaaS .NET 10 com IA virou open-source, e a stack vale a pena estudar

CV Shortlist é um SaaS .NET 10 open-source que combina Azure Document Intelligence com um modelo da OpenAI. A stack, a disciplina de configuração e a fronteira de integração com IA valem o estudo.

Um post de C# que salvei hoje não é “mais um app de demonstração”. É um SaaS completo e opinativo que foi construído como produto comercial e depois aberto como referência educativa: CV Shortlist.

Fonte: CV Shortlist repo e o post original em r/csharp.

A parte útil é a fronteira de integração, não a UI

A maioria dos apps de exemplo com IA para em “chamar uma LLM”. Este documenta a fronteira real que faz ou quebra recursos em produção:

Esse pareamento é o que continuo recomendando quando os times perguntam “como fazemos RAG para documentos?” sem construir um pipeline de OCR frágil do zero: use um serviço de extração especializado e depois raciocine sobre texto e campos limpos.

Uma stack moderna de .NET 10, listada explicitamente

O README é refrescantemente concreto sobre versões e infraestrutura:

Mesmo que você nunca se importe com o domínio de recrutamento, esta é uma referência do mundo real para “quantas peças móveis aparecem assim que IA deixa de ser um recurso de brinquedo”.

Disciplina de configuração: user secrets localmente, variáveis de ambiente em produção

O repo destaca as duas práticas que quero que todo time de .NET 10 padronize:

Aqui está o padrão que espero ver em Program.cs em projetos 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
}

O ponto não são esses nomes exatos de propriedades. O ponto é: trate a fronteira de IA como qualquer outra dependência externa no ASP.NET Core 10, e faça com que configuração e validação sejam entediantes.

Por que isso importa (mesmo que você nunca construa software de RH)

Se você está tentando entregar recursos de IA em .NET 10, precisa de exemplos funcionais que incluam:

CV Shortlist é uma referência compacta de “é assim que parece quando você constrói de verdade”. Leia o README, dê uma olhada no Program.cs e roube o design da fronteira para o seu próprio domínio.

Comments

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

< Voltar