The solution (TELS Quoting.sln) contains 9 projects:
| Project | Type | Framework | Description |
|---|---|---|---|
| TELS.Quoting.Api | Web API | .NET 8.0 | REST API for bid lifecycle management, pricing, fairness scoring, and PDF-to-bid generation |
| TELS.Quoting.MQServices | Console App | .NET 8.0 | RabbitMQ subscriber for bid expiration, fairness calculation, and PDF processing |
| TELS.Quoting.Contracts | Library | .NET Standard 1.0 / 2.0 | Shared event and data contracts (published as NuGet v3.14.0, namespace: TELS.Bidding.Contracts) |
| TELS.Quoting.PostgresDbUp | Console App | .NET 8.0 | DbUp database migration tool for PostgreSQL |
| TELS.Quoting.DataUpdater | Console App | .NET 8.0 | Data synchronization/update utility |
| PDFToBidOfflineValidation | Web App | .NET 8.0 | PDF processing validation service |
| Project | Type | Description |
|---|---|---|
| TELS.Quoting.Api.Tests | NUnit (.NET 8.0) | API unit tests |
| TELS.Quoting.MQServices.Tests | NUnit (.NET 8.0) | Subscriber unit tests |
| TELS.Quoting.IntegrationTesting | NUnit (.NET 8.0) | End-to-end integration tests (Mountebank) |
TELS Quoting (formerly Bidding) is the bid and quote management service for the TELS ecosystem. It provides:
Bid Lifecycle Management — Full lifecycle from creation through acceptance, cancellation, expiration, or loss/win. Bids are linked to work orders (bid requests) and support multi-bid scenarios, supersession, and revalidation.
Pricing & Margin Management — Configurable pricing modifications at owner, chain, and service levels. Price elasticity models (v1 and v2) with margin targets and adjustments. Tracks margin outcomes for analytics.
AI-Powered Features — PDF-to-bid generation using AWS Bedrock and OpenAI for automated bid extraction from uploaded PDFs. Bid fairness scoring with AI-powered explanations.
Bid Fairness — Automated fairness calculation per bid modification. Partner-perceived fairness tracking. Line-item fairness feedback. Unfair bid explanation generation.
Conversations — Bid conversation threading for clarification requests and fairness discussions.
+-----------------------------------------------------+
| API (TELS.Quoting.Api) |
| BidsController — bid lifecycle & commands |
| GeneratedBidsController — PDF-to-bid generation |
| CustomerQuotesController — margin outcomes |
| PriceElasticityV2Controller — pricing configs |
| FeatureTogglesController — feature flags |
| DiagnosticsController — health & debug |
+-----------------------------------------------------+
| Shared Contracts (TELS.Quoting.Contracts) |
| TELS.Bidding.Contracts.V1 — events, data, requests |
+-----------------------------------------------------+
| Subscriber (TELS.Quoting.MQServices) |
| BiddingConsumer — expiration, fairness, PDF gen |
| WorkItemConsumer — bid cancellation, win/loss |
+-----------------------------------------------------+
| DAL (Custom DataProvider + Npgsql) |
| PostgreSQL (bidding database, public schema) |
+-----------------------------------------------------+
bidding (PostgreSQL, public schema)tels.bidding.mqservices (shared across consumers)6 controllers exposing 25+ endpoints:
See API Documentation for full endpoint details.
| Category | Technology |
|---|---|
| Runtime | .NET 8.0 |
| Web Framework | ASP.NET Core 8.0 |
| Data Access | Npgsql 8.0.5 (PostgreSQL, raw ADO.NET) |
| Database | PostgreSQL (bidding database) |
| Messaging | RabbitMQ + MassTransit 8.2.5 |
| AI/ML | AWS Bedrock 3.7.409, OpenAI 2.0-2.5, PdfPig |
| Auth | JWT Bearer, M2M tokens (DSI.Auth.M2M.Token) |
| API Docs | Swashbuckle 6.7.3 (at /quoting/docs) |
| Monitoring | New Relic 10.30.0 |
| Resilience | Polly (3 retries, exponential backoff) |
| Bus Fallback | TELS.BusProxy.Client 2.2.0 (S3 fallback) |
| Testing | NUnit 4.2.2, Moq 4.20.72, Mountebank |
| Environment | URL |
|---|---|
| Local | http://localhost:7147 |
| DEV | Sandbox AWS ECS |
| QA | Testing AWS ECS |
| PROD | Production AWS ECS |
| Stage | Jobs |
|---|---|
| Build/Test | dotnet build, unit tests, integration tests, Checkmarx SAST |
| Docker | Multi-platform builds (arm64/amd64) |
| Scan | Container vulnerability scanning |
| Contracts | NuGet v3.14.0 to ProGet |
| Deploy | Terraform per environment — DB snapshots, DbUp, API, subscriber |
| Integration | Mechanism | Description |
|---|---|---|
| Auth Service | HTTP API | Token refresh for service-to-service auth |
| BuildingServices (CloudAPI) | HTTP API + NuGet (BuildingServices.Contracts) |
Service providers, bid requests, markets |
| Customers Service | HTTP API + NuGet (TELS.Customers.Contracts) |
Facility and owner data |
| Platform Service | HTTP API + NuGet (TELS.Platform.Contracts) |
Feature toggles and subsystem settings |
| Files Service | HTTP API + NuGet (TELS.WebServiceClients.Files.V1) |
PDF file access for bid generation |
| Assets Service | NuGet (TELS.WebServiceClients.Assets.V1) |
Asset data |
| Work Items Events | MQ + NuGet (TELS.WorkItems.Events) |
Status and fulfillment events |
| BusProxy | HTTP API (NuGet client) | Event publishing with S3 fallback |
| AWS Bedrock | SDK | LLM inference for PDF-to-bid and fairness |
| OpenAI | SDK | Alternative LLM for bid processing |
| Package | Target | Published To |
|---|---|---|
| TELS.Quoting.Contracts (namespace: TELS.Bidding.Contracts) | .NET Standard 1.0 / 2.0 | ProGet (v3.14.0) |
TELS.Bidding.Contracts for backward compatibility. The database is still named bidding./quoting/v1/ and /bidding/v1/ route prefixes are supported for backward compatibility.