Skip to content

Rewrite Python/Streamlit RFP Analyzer to .NET 10 Blazor with Microsoft Agent Framework#2

Draft
Copilot wants to merge 17 commits intomainfrom
copilot/dotnet-rewrite
Draft

Rewrite Python/Streamlit RFP Analyzer to .NET 10 Blazor with Microsoft Agent Framework#2
Copilot wants to merge 17 commits intomainfrom
copilot/dotnet-rewrite

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Feb 12, 2026

Complete port from Python/Streamlit to .NET 10 Blazor Web App. AI services use Microsoft Agent Framework multi-agent orchestration. Document Intelligence uses the official Azure SDK. All auth via DefaultAzureCredential — zero API keys.

.NET 10 Blazor App (app/)

  • UI: MudBlazor (dark/light toggle, sidebar nav, MudDataGrid, Plotly.Blazor charts) — 1:1 page parity with original Streamlit app (Home, Upload, Extract, Evaluate)
  • Models: Python Pydantic → C# classes (Scoring, Evaluation, Comparison, Processing)
  • Services: DocumentProcessorService, ScoringService, ComparisonService

Microsoft Agent Framework Multi-Agent Orchestration

Specialist agents composed as function tools via AsAIFunction():

var criteriaAgent = chatClient.AsAIAgent(name: "CriteriaExtractionAgent", instructions: "...");
var scoringAgent  = chatClient.AsAIAgent(name: "ProposalScoringAgent", instructions: "...");

var orchestrator = chatClient.AsAIAgent(
    name: "RfpEvaluationOrchestrator",
    tools: [criteriaAgent.AsAIFunction(), scoringAgent.AsAIFunction()]);

var session = await orchestrator.CreateSessionAsync(ct);
var response = await orchestrator.RunAsync(prompt, session, runOptions, ct);
  • ScoringService: CriteriaExtractionAgent + ProposalScoringAgentRfpEvaluationOrchestrator
  • ComparisonService: VendorComparisonAgentComparisonOrchestrator

Document Intelligence — Official SDK

Replaced raw HTTP + polling with Azure.AI.DocumentIntelligence 1.0.0:

var client = new DocumentIntelligenceClient(new Uri(endpoint), new DefaultAzureCredential());
var analyzeOptions = new AnalyzeDocumentOptions("prebuilt-layout", BinaryData.FromBytes(fileBytes))
{
    OutputContentFormat = DocumentContentFormat.Markdown
};
var operation = await client.AnalyzeDocumentAsync(WaitUntil.Completed, analyzeOptions, ct);
return operation.Value.Content;

Infrastructure

  • azure.yaml updated for .NET project path (app/RfpAnalyzer)
  • app/Dockerfile targeting stable mcr.microsoft.com/dotnet/sdk:10.0 / aspnet:10.0
  • appsettings.template.json documents all required config and RBAC roles (valid JSON)
  • infra/ directory unchanged

Tests

95 xUnit tests: model validation (45) + service tests (50) covering JSON parsing, weight normalization, grade calculation, agent/orchestrator creation, document processor config validation, CSV/Excel export, error handling.

Key Packages

Package Version
Microsoft.Agents.AI.OpenAI 1.0.0-preview.260212.1
Azure.AI.DocumentIntelligence 1.0.0
Azure.AI.OpenAI 2.8.0-beta.1
MudBlazor 8.15.0
Plotly.Blazor 7.0.0
ClosedXML 0.105.0

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • azcliprod.blob.core.windows.net
    • Triggering command: /usr/bin/../../opt/az/bin/python3 /usr/bin/../../opt/az/bin/python3 -Im azure.cli account get-access-token --output json --resource REDACTED (dns block)
  • management.azure.com
    • Triggering command: /usr/bin/pwsh pwsh -NoProfile -NonInteractive -EncodedCommand DQAKACQARQByAHIAbwByAEEAYwB0AGkAbwBuAFAAcgBlAGYAZQByAGUAbgBjAGUAIAA9ACAAJwBTAHQAbwBwACcADQAKAFsAdgBlAHIAcwBpAG8AbgBdACQAbQBpAG4AaQBtAHUAbQBWAGUAcgBzAGkAbwBuACAAPQAgACcAMgAuADIALgAwACcADQAKAA0ACgAkAG0AIAA9ACAASQBtAHAAbwByAHQALQBNAG8AZAB1AGwAZQAgAEEAegAuAEE (dns block)

If you need me to access, download, or install something from one of these locations, you can either:


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI and others added 6 commits February 12, 2026 19:09
Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
…risonService) and Azure NuGet packages

Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
Copilot AI changed the title [WIP] Rewrite EFP Analyzer application to .NET 10 Blazor Rewrite EFP Analyzer: Python/Streamlit → .NET 10 Blazor Feb 12, 2026
Copilot AI requested a review from amgdy February 12, 2026 19:46
…rings, exports)

Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
Copilot AI changed the title Rewrite EFP Analyzer: Python/Streamlit → .NET 10 Blazor Rename EFP → RFP throughout codebase Feb 12, 2026
…aths

Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
Copilot AI changed the title Rename EFP → RFP throughout codebase Move Dockerfile and .NET app into app/ folder, fix azure.yaml paths Feb 12, 2026
…l.json

Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
Copilot AI changed the title Move Dockerfile and .NET app into app/ folder, fix azure.yaml paths Update .NET 10 from preview to stable, consolidate app layout, fix Dockerfile Feb 12, 2026
Copilot AI and others added 2 commits February 13, 2026 16:52
Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
…ator, add 40 new tests

Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
Copilot AI changed the title Update .NET 10 from preview to stable, consolidate app layout, fix Dockerfile Rewrite to .NET 10 Blazor with Microsoft Agent Framework multi-agent orchestration Feb 13, 2026
…guration

Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
Copilot AI changed the title Rewrite to .NET 10 Blazor with Microsoft Agent Framework multi-agent orchestration Rewrite RFP Analyzer: Python/Streamlit → .NET 10 Blazor with Microsoft Agent Framework Feb 13, 2026
Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
Copilot AI and others added 2 commits February 14, 2026 06:42
Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
…ocumentIntelligence SDK

Co-authored-by: amgdy <1763289+amgdy@users.noreply.github.com>
Copilot AI changed the title Rewrite RFP Analyzer: Python/Streamlit → .NET 10 Blazor with Microsoft Agent Framework Rewrite Python/Streamlit RFP Analyzer to .NET 10 Blazor with Microsoft Agent Framework Feb 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants