Signal ingestion — 40+ sourcesCore
Azure Functions poll APIs, parse RSS feeds, and trigger on inbound emails. Adapters for GeBIZ, World Bank, ADB, TED EU, SAM.gov, UNGM, Compras.gov.br, AusTender, Contracts Finder, and 40+ procurement portals worldwide. Apify actors for portals with no official API.
Foundry RAG classificationCore
Tender descriptions embedded with text-embedding-3-large, matched against OneLake vector index of historical wins/losses. GPT-4o classifies sector, contract type, capabilities, risk flags, and relevance score 0–100 with RAG context from similar past bids.
Capability matrix matchingCore
Classified tender matched against a Delta table of PCU business unit capabilities per country. Resolves primary assignee and CC assignees for multi-country tenders. Rules engine applies hard filters (blacklisted markets, value floors).
Power Automate routing (WF-01–04)Core
WF-01: structured email + Teams card + SharePoint folder creation. WF-02: bid/no-bid capture from any surface. WF-03: 48h escalation chain (officer → manager → country director). WF-04: daily deadline reminders with urgency banding.
Multi-timezone deadline engineCore
All deadlines stored UTC. Client-side conversion to all 6 configured PCU office timezones (MY, VN, SG, ID, TH, UTC). Issuer timezone highlighted. On-click popover in feed and dashboard; always-expanded table in detail panel; pre-rendered in email.
Multi-country officer accessCore
Officers assigned to multiple Entra groups see a unified dashboard across all their assigned country/BU combinations. Data scoping enforced per-request from JWT group claims — no separate logins. Multi-country tenders flagged with joint-bid routing.
Adaptive light/dark themingCore
Token-based design system across Power Apps portal, Teams tab, and Outlook add-in. System preference respected on first load; officer override persisted to Entra user profile extension attribute. Email always renders light-mode regardless of preference.
Entra ID RBAC + Conditional AccessCore
Six roles (Reader, Officer, Manager, Admin, FoundryPrincipal, ServicePrincipal). Four Conditional Access policies (MFA, device compliance, location, risk). Foundry workloads use managed identity — zero secrets stored anywhere.
APIM REST gateway + API specCore
Azure API Management exposes all TIS endpoints: tenders CRUD, status PATCH, reassign, capability matrix, timezone registry, user preferences, sources health. JWT validation, rate limiting, App Insights logging on every call.