Skip to content

ProjectHub - Tender Parsing Module

The Tender Parsing module, part of the ProjectHub ecosystem, specializes in parsing and processing tender documents. It provides comprehensive functionality to extract, analyze, and structure information from various tender document formats, enabling enhanced analysis and processing of bid opportunities.

Overview

This module primarily processes tender documentation published with opportunities by buyers, but the backend is architected to handle any documents users deem relevant to the opportunity—ranging from planning notes to client research.

Best Practice: We encourage users to upload as much contextual information as possible, as this significantly improves platform performance, output quality, and overall user experience.

Supported Document Types

  • Primary: Official tender documentation from buyers
  • Secondary: Planning notes, client research, market analysis
  • Supporting: Any contextual documents relevant to the opportunity

Documentation Structure

This module includes comprehensive documentation covering all aspects of tender document processing:

Key Components

Tender Pack Parsing Module

The main module that registers all tender parsing components:

@Module({
  imports: [
    // Dependencies
  ],
  controllers: [TenderParsingController],
  providers: [TenderPackProcessorService, TenderPackDbService],
  exports: [TenderPackProcessorService, TenderPackDbService],
})
export class TenderPackParsingModule {}

Tender Pack Processor Service

The TenderPackProcessorService handles core tender document processing:

  • Document chunking and sectioning
  • Metadata extraction
  • Key information identification
  • Requirements extraction

Tender Pack DB Service

The TenderPackDbService manages database operations for tender data:

  • Storing parsed tender data
  • Retrieving tender information
  • Updating tender processing status

Tender Parsing Controller

The TenderParsingController exposes REST endpoints for tender parsing operations:

@Controller("tender-parsing")
export class TenderParsingController {
  constructor(
    private tenderPackProcessorService: TenderPackProcessorService,
    private tenderPackDbService: TenderPackDbService
  ) {}

  @Post("process")
  processTenderPack(@Body() request: ProcessTenderPackRequest) {
    return this.tenderPackProcessorService.processTenderPack(request);
  }

  // Other endpoints...
}

Data Models

The module uses specialized data models for tender information:

// Example data models
interface TenderSection {
  id: string;
  title: string;
  content: string;
  type: string;
}

interface TenderRequirement {
  id: string;
  description: string;
  category: string;
  importance: string;
}

interface TenderDocument {
  id: string;
  title: string;
  sections: TenderSection[];
  requirements: TenderRequirement[];
  metadata: Record<string, any>;
}

Integration with Other Modules

The Tender Parsing module integrates with:

  • RAG Module: For intelligent document processing
  • Azure Module: For document storage and AI services
  • Editor Module: For displaying processed tender information

Usage Example

Processing a tender document:

@Injectable()
export class SomeService {
  constructor(private tenderPackProcessorService: TenderPackProcessorService) {}

  async processTenderDocument(documentId: string) {
    const result = await this.tenderPackProcessorService.processTenderPack({
      documentId,
      options: {
        extractRequirements: true,
        identifyDeadlines: true,
        categoriseContent: true,
      },
    });

    return result;
  }
}

Processing Flow

  1. Document is uploaded through the Azure module
  2. Tender parsing module receives the document
  3. Document is processed and sectioned
  4. Requirements and key information are extracted
  5. Processed data is stored in the database
  6. Results are made available for retrieval and analysis