Skip to content

Opportunity Module Specification

Purpose

The opportunity module implements the Opportunity Domain inside the Spring Boot Modulith. It owns tender discovery, source management, tender indexing, documents, requirements, deadlines, briefings, eligibility, qualification, matching, recommendations, saved tenders, watchlists, bid/no-bid recommendation, win probability estimate, and tender risk assessment.

Owned Domain

Opportunity owns tender records, public and private tender source configuration, tender lifecycle state, tender document metadata, captured tender requirements, briefing sessions, deadlines, matches, qualification assessments, recommendation records, saved opportunities, watchlists, and tender risk assessments.

Owned Aggregates

Aggregate Responsibility
Tender Opportunity Root aggregate for tender facts, source, status, documents, deadlines, and briefing sessions.
Tender Source Source identity, source type, reliability, and ingestion rules.
Tender Index Searchable structured representation, indexed fields, extracted requirements, and document references.
Opportunity Match Match between organization and tender with score, reasons, inputs, and status.
Qualification Assessment Eligibility, fit, effort, risk, and readiness analysis.
Recommendation Record Bid/no-bid recommendation, rationale, confidence, and win probability estimate.
Watchlist Customer monitoring criteria, saved filters, and alert state.
Saved Opportunity Customer saved tender pipeline state, notes, priority, and follow-up state.

Owned Entities

Tender Opportunity, Tender Source, Tender Document, Tender Requirement, Briefing Session, Tender Deadline, Tender Match, Qualification Assessment, Recommendation Record, Saved Opportunity, and Watchlist.

Owned Value Objects

TenderOpportunityId, TenderSourceType, TenderReferenceNumber, TenderCategory, TenderRegion, TenderDeadlineType, TenderDeadlineDate, MatchScore, QualificationStatus, RecommendationDecision, WinProbabilityEstimate, TenderRiskLevel, SavedOpportunityPriority, and WatchlistCriteria.

Commands

Command Responsibility
RegisterTenderSource Add an approved tender source configuration.
DiscoverTender Create tender opportunity from source or manual intake.
DeduplicateTender Link or reject duplicate tender discovery.
AddTenderDocument Register tender document metadata and storage reference.
CaptureTenderRequirement Record requirement while preserving source context.
TrackBriefingSession Record briefing date, method, and attendance requirement.
TrackTenderDeadline Record submission, briefing, clarification, or other deadline.
IndexTender Update structured searchable tender representation.
MatchTenderToOrganization Create or update organization-specific match record.
CompleteQualificationAssessment Record eligibility, fit, effort, risk, and readiness analysis.
CreateBidNoBidRecommendation Create recommendation record and win probability estimate.
SaveTenderOpportunity Save opportunity into a customer pipeline.
CreateWatchlist Create monitoring criteria for a customer.
AssessTenderRisk Record risk level and causes.

Queries

Query Responsibility
GetTenderSource Return source configuration summary.
GetTenderOpportunity Return tender opportunity read model and lifecycle state.
SearchTenderOpportunities Search indexed tender records.
GetTenderDocuments Return tender document metadata and indexing state.
GetTenderRequirements Return captured requirements and source references.
GetTenderDeadlines Return deadline and briefing timeline.
GetOrganizationMatches Return matches for an organization.
GetQualificationAssessment Return eligibility, fit, effort, readiness, and risk factors.
GetRecommendationRecord Return bid/no-bid recommendation and rationale.
GetSavedOpportunities Return customer saved tender pipeline.
GetWatchlists Return monitoring criteria and status.

Application Services

TenderSourceApplicationService, TenderDiscoveryApplicationService, TenderIndexingApplicationService, TenderDocumentApplicationService, TenderRequirementApplicationService, DeadlineApplicationService, TenderMatchingApplicationService, QualificationApplicationService, RecommendationApplicationService, SavedOpportunityApplicationService, WatchlistApplicationService, and TenderRiskApplicationService.

Domain Services

TenderSourceIntakeService, TenderDeduplicationService, TenderIndexingService, TenderMatchingService, DeadlineRiskService, BriefingRequirementService, QualificationService, RecommendationService, WatchlistAlertService, and TenderRiskAssessmentService.

Policies

Tender Source Intake Policy, Tender Deduplication Policy, Tender Indexing Policy, Tender Matching Policy, Deadline Risk Policy, Briefing Requirement Policy, Qualification Policy, Recommendation Policy, and Watchlist Alert Policy.

Repositories

TenderSourceRepository, TenderOpportunityRepository, TenderDocumentRepository, TenderRequirementRepository, TenderIndexRepository, TenderDeadlineRepository, TenderMatchRepository, QualificationAssessmentRepository, RecommendationRecordRepository, SavedOpportunityRepository, WatchlistRepository, TenderRiskRepository, and OpportunityAuditRepository.

Events Published

TenderSourceRegistered, TenderDiscovered, TenderIndexed, TenderDocumentAdded, TenderRequirementCaptured, BriefingSessionTracked, TenderDeadlineTracked, TenderMatchedToOrganization, QualificationAssessmentCompleted, BidNoBidRecommendationCreated, TenderRiskAssessed, TenderSaved, and WatchlistCreated.

Events Consumed

OrganizationProfileUpdated, ProcurementPreferencesUpdated, CapabilityVerified, ProcurementReadinessScoreUpdated, ComplianceRiskIdentified, AISuggestionAccepted, TenderWorkspaceCreated, BidSubmitted, BidOutcomeCaptured, IntegrationTenderSourceChanged, and AdministrativePolicyChanged. Consumed events refresh matches, recommendations, and watchlist outputs without owning publisher facts.

REST API Responsibility

The module owns API responsibilities for tender sources, tender opportunity records, tender documents, tender requirements, briefing sessions, deadlines, matching, qualification, recommendations, watchlists, saved opportunities, and tender risk views. It does not define final endpoint specifications in this work order.

Database Ownership

Opportunity owns conceptual persistence for tender sources, tender opportunities, tender documents, tender requirements, briefing sessions, tender deadlines, tender indexes, opportunity matches, qualification assessments, recommendation records, saved opportunities, watchlists, tender risk assessments, and opportunity audit logs.

Module Dependencies

Allowed dependencies are shared kernel identifiers, identity authorization context, organization profile and preference read models, compliance readiness and risk summaries, intelligence analysis and extraction suggestions, notification deadline and watchlist triggers, analytics projections, and integration source ingestion adapters.

Forbidden Dependencies

Opportunity must not mutate Organization profile, Compliance readiness, Bid workspace, Contract delivery, Billing entitlement, Notification delivery, Analytics projection, or raw Intelligence memory records. It must not create proposal content or submission packages.

AIOS Interaction Boundary

AIOS may assist with tender extraction, summarization, classification, matching reasons, qualification factors, risk explanations, and recommendation support. Opportunity owns the resulting tender records, matches, qualification assessments, and recommendation records after governed acceptance.

Security And Tenant Rules

  • Public tender discovery may be platform-scoped; saved tenders, matches, watchlists, and recommendations are tenant-scoped.
  • Organization-specific matching requires authorized OrganizationId context.
  • Source metadata and document provenance must be preserved.
  • Customer notes, priorities, and recommendation outcomes must not leak across tenants.
  • Recommendation decisions are decision-support records, not automatic bid creation.

Test Strategy

Tests must cover source intake, deduplication, document metadata, requirement capture, deadline timezone handling, matching, qualification, recommendation, watchlist behavior, saved opportunities, event publication, idempotent consumption, tenant filtering, AIOS suggestion acceptance boundaries, and Spring Modulith dependency verification.

Future Microservice Extraction Notes

Opportunity is a strong future extraction candidate because tender aggregation and search can scale independently. Extraction requires source ingestion contracts, search index contracts, event delivery to Compliance and Bid, tenant-aware saved opportunity storage, and stable APIs for matching and recommendation reads.

Mermaid Component Diagram

flowchart TD
    Api[opportunity.api.rest]
    App[opportunity.application.service]
    Command[opportunity.application.command]
    Query[opportunity.application.query]
    Domain[opportunity.domain.model]
    Policy[opportunity.domain.policy]
    Repo[opportunity.infrastructure.persistence]
    Integration[opportunity.infrastructure.integration]
    Messaging[opportunity.infrastructure.messaging]
    Search[search index]
    Organization[organization context]
    Compliance[compliance readiness]
    Intelligence[intelligence analysis]
    Notification[notification triggers]
    Bid[bid workspace signal]

    Api --> App
    App --> Command
    App --> Query
    App --> Domain
    Domain --> Policy
    App --> Repo
    App --> Integration
    App --> Search
    App --> Messaging
    App --> Organization
    App --> Compliance
    App --> Intelligence
    Messaging --> Notification
    Messaging --> Bid