Signal ingestion — 40+ sourcesCore
Azure Functions poll APIs, parse RSS feeds, and trigger on inbound emails. Adapters for GeBIZ, ePerolehan, Vietnam eProcurement, World Bank, ADB, UNGM, TED EU, SAM.gov, and all major procurement portals. 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.