Report Outputs & Generation
Status: Final Version: 1.0
Purpose
Define report types, export formats, generation pipeline, versioning, and audit trail for ESG reporting outputs.
Report Types (v1)
| Report Type | Audience | Format | Content | Frequency |
|---|---|---|---|---|
| GRI Sustainability Report | External stakeholders | PDF, DOCX | Full GRI disclosures (E, S, G) | Annual |
| Period Summary | Internal management | PDF, XLSX | Metrics by site, period totals | Quarterly/Annual |
| Site-Level Report | Site managers | PDF, XLSX | Single site metrics for period | On-demand |
| Disclosure Export | Analysts | JSON, CSV, XLSX | Raw metric data | On-demand |
| Audit Package | External auditors | PDF + ZIP | All approved data + evidence | Annual |
| Human Capital Report | HR managers, External stakeholders | CSV, XLSX | Employee demographics (E.1), Employment type & turnover (E.2), Age distribution (E.3) | Quarterly/Monthly |
| OHS Report | HSE managers, External stakeholders | CSV, XLSX | Occupational Health and Safety incident statistics (F.1), LTI days and LTIFR (F.2) | Quarterly |
| Environment Report | Environmental managers, External stakeholders | CSV, XLSX | Production (G.1), Materials consumption (G.2), Energy usage (G.3), Water (G.4), Air emissions (G.5), Waste (G.6-G.7), TSF management (G.8), Rehabilitation & incidents (G.9-G.10) | Monthly/Quarterly |
| Community Investment Report | CSR managers, External stakeholders | CSV, XLSX | Quarterly CSR/CSIR Activities (H.1) | Quarterly |
Export Formats
- Use Case: External reports, board presentations
- Library: OpenPDF or iText (JVM libraries)
- Template: Thymeleaf templates with CSS styling
XLSX
- Use Case: Data analysis, pivot tables
- Library: Apache POI (poi-ooxml)
- Structure: One sheet per metric category (Environmental, Social, Governance)
JSON/CSV
- Use Case: API integrations, data exports
- Structure: Flat or nested JSON, CSV with headers
Report Versioning
| Version Type | Description | Use Case |
|---|---|---|
| Draft | Work-in-progress, data not locked | Internal review |
| Final | Locked period, ready for publication | Official disclosure |
| Restated | Corrected after initial publication | Error correction, methodology change |
Version Schema
@Entity
@Table(name = "reports")
data class Report(
@Id
@GeneratedValue(strategy = GenerationType.UUID)
val id: UUID,
@Column(name = "tenant_id", nullable = false)
val tenantId: UUID,
@Column(name = "reporting_period_id", nullable = false)
val reportingPeriodId: UUID,
@Column(name = "report_type", nullable = false)
val reportType: String,
@Enumerated(EnumType.STRING)
@Column(name = "version_type", nullable = false)
val versionType: VersionType, // ENUM: DRAFT, FINAL, RESTATED
@Column(name = "version_number", nullable = false)
val versionNumber: Int = 1, // Incremented on restatements
@Column(name = "generated_at")
val generatedAt: Instant? = null,
@Column(name = "generated_by_user_id")
val generatedByUserId: UUID? = null,
@Column(name = "file_path")
val filePath: String? = null,
@Column(name = "file_format")
val fileFormat: String? = null,
@Column(name = "content_hash") // SHA-256 of PDF/file
val contentHash: String? = null,
@Type(JsonBinaryType::class)
@Column(name = "metadata", columnDefinition = "jsonb") // JSONB: report params, filters
val metadata: Map<String, Any>? = null
)
enum class VersionType {
DRAFT, FINAL, RESTATED
}
Generation Pipeline
Asynchronous Job
@ApplicationScoped
class ReportGenerationService(
private val reportingPeriodRepository: ReportingPeriodRepository,
private val reportRepository: ReportRepository,
private val userRepository: UserRepository,
private val notificationService: NotificationService,
private val pdfGenerationService: PdfGenerationService,
private val storageService: StorageService
) {
@Transactional
@Retry(maxRetries = 3, delay = 5000, delayUnit = ChronoUnit.MILLIS)
fun generateReport(
tenantId: UUID,
reportingPeriodId: UUID,
reportType: String,
userId: UUID
): Uni<Report> {
return Uni.createFrom().item {
val period = reportingPeriodRepository.findByIdOptional(reportingPeriodId)
.orElseThrow { EntityNotFoundException("Reporting period not found") }
// Create report record
var report = Report(
id = UUID.randomUUID(),
tenantId = tenantId,
reportingPeriodId = period.id,
reportType = reportType,
versionType = if (period.state == PeriodState.LOCKED) VersionType.FINAL else VersionType.DRAFT,
generatedByUserId = userId
)
reportRepository.persist(report)
// Generate PDF
val pdfBytes = generatePDF(period)
// Store to S3 or file system
val path = "reports/$tenantId/${report.id}.pdf"
storageService.store(path, pdfBytes)
// Calculate content hash
val contentHash = MessageDigest.getInstance("SHA-256")
.digest(pdfBytes)
.joinToString("") { "%02x".format(it) }
// Update report with file info
report = report.copy(
filePath = path,
fileFormat = "pdf",
generatedAt = Instant.now(),
contentHash = contentHash
)
reportRepository.save(report)
// Notify user
val user = userRepository.findById(userId).orElseThrow()
notificationService.sendReportGeneratedNotification(user, report)
report
}, Executors.newSingleThreadExecutor())
}
private fun generatePDF(period: ReportingPeriod): ByteArray {
val data = mapOf(
"period" to period,
"metrics" to getApprovedMetrics(period),
"restatements" to period.restatements
)
return pdfGenerationService.generateFromTemplate(
templateName = "reports/gri-sustainability",
data = data,
paperSize = "A4",
marginTop = 20,
marginBottom = 20
)
}
private fun getApprovedMetrics(period: ReportingPeriod): List<Metric> {
// Query approved metrics for the period
return emptyList() // Implementation details
}
}
// Configuration for async executor
@ApplicationScoped
class AsyncConfiguration {
@Produces
@Named("reportingTaskExecutor")
@ApplicationScoped
fun reportingTaskExecutor(): ManagedExecutor {
return ManagedExecutor.builder()
.maxAsync(5)
.maxQueued(100)
setAwaitTerminationSeconds(600) // 10 minutes
initialize()
}
}
}
Thymeleaf Template Example (GRI Report)
<!-- src/main/resources/templates/reports/gri-sustainability.html -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title th:text="${period.organisation.name} + ' - GRI Sustainability Report ' + ${period.fiscalYear}">GRI Sustainability Report</title>
<style>
body { font-family: Arial, sans-serif; font-size: 10pt; }
h1 { color: #2c3e50; font-size: 18pt; }
table { width: 100%; border-collapse: collapse; margin: 20px 0; }
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
th { background-color: #3498db; color: white; }
</style>
</head>
<body>
<h1 th:text="'Sustainability Report ' + ${period.fiscalYear}">Sustainability Report</h1>
<p><strong>Organization:</strong> <span th:text="${period.organisation.name}">Organization Name</span></p>
<p>
<strong>Reporting Period:</strong>
<span th:text="${#temporals.format(period.startDate, 'yyyy-MM-dd')}">Start Date</span> to
<span th:text="${#temporals.format(period.endDate, 'yyyy-MM-dd')}">End Date</span>
</p>
<h2>GRI 302: Energy</h2>
<table>
<thead>
<tr>
<th>Metric</th>
<th>Value</th>
<th>Unit</th>
</tr>
</thead>
<tbody>
<tr th:each="metric : ${metrics}" th:if="${metric.disclosure.code == '302-1'}">
<td th:text="${metric.name}">Metric Name</td>
<td th:text="${#numbers.formatDecimal(metric.value, 1, 2)}">Value</td>
<td th:text="${metric.unit}">Unit</td>
</tr>
</tbody>
</table>
<div th:if="${restatements != null and !restatements.isEmpty()}">
<h2>GRI 2-4: Restatements of Information</h2>
<table>
<thead>
<tr>
<th>Metric</th>
<th>Original</th>
<th>Restated</th>
<th>Reason</th>
</tr>
</thead>
<tbody>
<tr th:each="r : ${restatements}">
<td th:text="${r.metricName}">Metric Name</td>
<td th:text="${r.beforeValue}">Original Value</td>
<td th:text="${r.afterValue}">Restated Value</td>
<td th:text="${r.description}">Reason</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
Audit Trail
auditLogRepository.save(
AuditLog(
id = UUID.randomUUID(),
action = "report.generated",
entityType = "Report",
entityId = report.id,
actorUserId = userId,
metadata = mapOf(
"report_type" to reportType,
"period_id" to period.id.toString(),
"file_format" to "pdf",
"file_size_bytes" to storageService.getFileSize(report.filePath)
),
timestamp = Instant.now()
)
)
Acceptance Criteria
- GRI Sustainability Report includes all approved metrics
- Report generation runs asynchronously with @Async (timeout 10 min)
- PDF reports generated with Thymeleaf templates
- XLSX exports include separate sheets per category
- Report versioning tracks draft/final/restated
- Content hash generated for integrity verification (SHA-256)
- All report generation logged to audit trail
Stakeholder Engagement Reporting (GRI 2-29, 2-30, Grievance Mechanism)
Overview
This section defines the output format for stakeholder engagement reports, including GRI 2-29 (Approach to Stakeholder Engagement), GRI 2-30 (Collective Bargaining), and Grievance Mechanism logs. These reports support compliance with GRI organizational governance disclosures.
Report Sections
B.1 GRI 2-30: Collective Bargaining Coverage
Output Format: Quarterly percentage table
| Quarter | Percentage Covered |
|---|---|
| Q1 | 66% |
| Q2 | 66% |
| Q3 | 66% |
| Q4 | - |
Description: Percentage of total full-time permanent employees covered by collective bargaining, including membership in National Employment Council (NEC) or Trade Unions.
Data Requirements: - Collection frequency: Quarterly - Data type: Percentage (0-100%) - Dimensionality: Organisation-level - Calculation: (Employees covered by collective bargaining / Total full-time permanent employees) × 100
CSV/XLSX Export Columns:
B.2 GRI 2-29: Stakeholder Engagement
Stakeholder Categories
The platform maintains a master list of stakeholder categories:
- Employees
- Government
- Regulatory bodies
- Shareholders
- Community (villagers, schools, farmers, ASMs)
- Vendors (Contractors and Suppliers)
- Press/Media
- Non-governmental organisations
- Financial institutions
Engagement Platforms
Supported engagement mechanisms:
- In-person meeting
- Virtual meeting
- Phone call
- Letter
- Conference
- Other
Quarterly Stakeholder Engagements Log
| Column | Description | Data Type | Required | Example |
|---|---|---|---|---|
| NO. | Sequential engagement number | Integer | Yes | 1 |
| Initial Date of Engagement | Start date of engagement | Date (DD-MMM-YY) | Yes | 24-Jan-25 |
| Stakeholder Category | Categories from master list (can be multiple) | String (comma-separated IDs) | Yes | "2, 3, 5" |
| Stakeholder Name | Name of stakeholder group or organisation | String | Yes | "Guruve Local Gvt, OPC, Ministry of Education" |
| Purpose of Engagement | Description of engagement objective | Text | Yes | "Muroiwa Primary School Additional Block Construction" |
| Outcome of Engagement | Results, decisions, or actions from engagement | Text | Yes | "The block is currently at ring beam level..." |
| Person Responsible for Closing Out | Owner(s) responsible for follow-up | String | Yes | "T.Tinago/L.Khumalo/D. Tavenhave" |
| Status of Engagement | Current status | Enum: Open, WIP, Closed | Yes | WIP |
| Status Date | Target or actual completion date | Date (DD-MMM-YY) | Yes | 30-Apr-25 |
CSV/XLSX Export Format:
NO.,INITIAL_DATE_OF_ENGAGEMENT,STAKEHOLDER_CATEGORY,STAKEHOLDER_NAME,PURPOSE_OF_ENGAGEMENT,OUTCOME_OF_ENGAGEMENT,PERSON_RESPONSIBLE_FOR_CLOSING_OUT,STATUS_OF_ENGAGEMENT,STATUS_DATE
1,24-Jan-25,"2,3,5","Guruve Local Gvt, OPC, Ministry of Education","Muroiwa Primary School Additional Block Construction","The block is currently at ring beam level...","T.Tinago/L.Khumalo/D. Tavenhave",WIP,30-Apr-25
Filters & Ordering: - Filters: Reporting period (fiscal year, quarter), site/business unit, organisation, status (Open/WIP/Closed), stakeholder category - Ordering: By initial date of engagement (ascending), then by engagement number - Grouping: Optional grouping by quarter, stakeholder category, or status
B.3 Grievance Mechanism Log
Output Format: Table of grievances reported during the period
| Column | Description | Data Type | Required | Example |
|---|---|---|---|---|
| NO. | Sequential grievance number | Integer | Yes | 1 |
| Date Grievance Reported | Date grievance was received | Date (DD-MMM-YY) | Yes | 13-Mar-25 |
| Internal/External Grievance | Source of grievance | Enum: Internal, External | Yes | External |
| Department/Stakeholder Group Grievance Raised By | General group (no individual names) | String | Yes | Community |
| General Nature of Grievance | Description of the issue | Text | Yes | "The host communities raised a plea for the mine to construct a Clinic..." |
| Intervention Measure | Action taken or planned | Text | Yes | "Construction of a Clinic at Bome is underway..." |
| Resolved/Outstanding | Resolution status | Enum: RESOLVED, OUTSTANDING | Yes | RESOLVED |
CSV/XLSX Export Format:
NO.,DATE_GRIEVANCE_REPORTED,INTERNAL_EXTERNAL_GRIEVANCE,DEPARTMENT_STAKEHOLDER_GROUP,GENERAL_NATURE_OF_GRIEVANCE,INTERVENTION_MEASURE,RESOLVED_OUTSTANDING
1,13-Mar-25,External,Community,"The host communities raised a plea for the mine to construct a Clinic...","Construction of a Clinic at Bome is underway...",RESOLVED
Filters & Ordering: - Filters: Reporting period (fiscal year, quarter), internal/external, stakeholder group, resolution status, organisation, site/business unit - Ordering: By date grievance reported (ascending), then by grievance number - Grouping: Optional grouping by quarter, internal/external classification, or resolution status
Export Templates
CSV Export Structure
File Naming Convention: {Organisation}_{ReportType}_{FiscalYear}_{ExportDate}.csv
Example: Eureka_Gold_Stakeholder_Engagement_FY2025_2026-01-17.csv
Sheet Structure for XLSX: - Sheet 1: GRI 2-30 Collective Bargaining (quarterly percentages) - Sheet 2: Stakeholder Categories & Platforms (reference lists) - Sheet 3: GRI 2-29 Stakeholder Engagements (full log) - Sheet 4: Grievance Mechanism Log
Column Mapping
| Report Field | Database Column | Transform |
|---|---|---|
| NO. | engagement.sequence_number or grievance.sequence_number | Direct |
| Initial Date of Engagement | engagement.initial_date | Format: DD-MMM-YY |
| Stakeholder Category | engagement.stakeholder_categories (join table) | Comma-separated category IDs or names |
| Stakeholder Name | engagement.stakeholder_name | Direct |
| Purpose of Engagement | engagement.purpose | Direct |
| Outcome of Engagement | engagement.outcome | Direct |
| Person Responsible | engagement.owner | Direct (support multiple owners with "/" delimiter) |
| Status of Engagement | engagement.status | Enum: Open, WIP, Closed |
| Status Date | engagement.status_date | Format: DD-MMM-YY |
| Date Grievance Reported | grievance.date_reported | Format: DD-MMM-YY |
| Internal/External | grievance.source_type | Enum: Internal, External |
| Department/Stakeholder Group | grievance.stakeholder_group | Direct (no individual names) |
| General Nature of Grievance | grievance.nature | Direct |
| Intervention Measure | grievance.intervention | Direct |
| Resolved/Outstanding | grievance.resolution_status | Enum: RESOLVED, OUTSTANDING |
Validation Rules
Stakeholder Engagements: - Initial date must be within the reporting period - At least one stakeholder category must be selected - Status transitions: Open → WIP → Closed (no reverse transitions) - Status date must be >= initial date - If status is Closed, outcome field is required
Grievances: - Date reported must be within the reporting period - Internal/External classification is mandatory - Stakeholder group should be a general category, not individual names (PII protection) - Resolution status required (RESOLVED or OUTSTANDING) - If RESOLVED, intervention measure is required
Collective Bargaining: - Percentage must be between 0 and 100 - Quarterly data required (Q1-Q4) - Missing quarters acceptable if not yet reached in fiscal year
Access Control & PII Handling
Role-Based Access: - Data Collector: Can view and edit engagements/grievances for their assigned sites - Site Manager: Can view and approve engagements/grievances for their site - Org Admin: Can view all engagements/grievances across organisation - External Auditor: Read-only access to approved/locked period data
PII Protection: - Stakeholder names should reference groups/organisations, not individuals where possible - Individual names in grievances should be anonymised in exports (use department/group labels) - Person responsible can use initials or role titles (e.g., "CSIR Manager", "T.Tinago") - Evidence attachments containing PII must be restricted to internal use only
Human Capital Reporting (GRI 405-1, GRI 401, Employee Age)
Overview
This section defines the output format for human capital reports, including GRI 405-1 (Diversity of governance bodies and employees), GRI 401 (Employment type and turnover), and employee age demographics. These reports support compliance with GRI social disclosures related to employment and labor practices.
Report Sections
E.1 GRI 405-1: Employee Demographics
Output Format: Quarterly headcount and percentage table by employment level
Data Structure:
| Employment Level | Quarter | Male | Female | From Local Community | % Male | % Female | % From Local Community |
|---|---|---|---|---|---|---|---|
| Executive | Q1 2025 | 7 | 0 | 0 | 100% | 0% | 0% |
| Executive | Q2 2025 | 8 | 0 | 0 | 100% | 0% | 0% |
| Salaried Staff (Non-NEC) | Q1 2025 | 145 | 29 | 22 | 83% | 17% | 13% |
| Salaried Staff (Non-NEC) | Q2 2025 | 152 | 33 | 24 | 82% | 18% | 0% |
| Waged Staff (NEC) | Q1 2025 | 380 | 53 | 351 | 88% | 12% | 81% |
| Waged Staff (NEC) | Q2 2025 | 386 | 58 | 355 | 87% | 13% | 80% |
Description: Quarterly snapshot of employee headcount by employment level, disaggregated by gender and local community status. Includes derived percentage metrics for diversity analysis.
Data Requirements: - Collection frequency: Quarterly (end of quarter snapshot) - Employment levels: Executive, Salaried Staff (Non-NEC), Waged Staff (NEC) - Dimensions: Gender (Male, Female), Local Community flag (Yes/No) - Calculation: Percentages derived from counts - % Male = (Male / Total) × 100 - % Female = (Female / Total) × 100 - % From Local Community = (From Local Community / Total) × 100 - Dimensionality: Organisation-level and Site-level - Total = Male + Female
CSV/XLSX Export Columns:
Employment_Level, Quarter, Male, Female, From_Local_Community, Percent_Male, Percent_Female, Percent_From_Local_Community, Total_Employees, Reporting_Period, Organisation_ID, Site_ID, Collection_Date
E.2 GRI 401: Employment Type and Turnover
Output Format: Monthly tables for employment type, recruitment, departures, and casual workers
E.2.1 Permanent vs. Fixed Term Employment
Data Structure:
| Employment Type | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | Average |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Permanent | 417 | 417 | 418 | 429 | 427 | 426 | 429 | 429 | 433 | - | - | - | 319 |
| Fixed Term | 204 | 184 | 196 | 199 | 191 | 205 | 174 | 169 | 148 | - | - | - | 139 |
Description: Monthly headcount for permanent and fixed-term employees with annual average.
Data Requirements: - Collection frequency: Monthly - Employment types: Permanent, Fixed Term - Calculation: Average = (Sum of monthly values) / (Number of months with data) - Monthly snapshot taken at end of month
E.2.2 New Recruitments (Permanent Staff by Gender)
Data Structure:
| Gender | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | Average |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Male | 0 | 0 | 4 | 12 | 1 | 2 | 1 | 10 | 17 | - | - | - | 4 |
| Female | 0 | 0 | 0 | 3 | 3 | 1 | 4 | 4 | 1 | - | - | - | 1 |
Description: Monthly count of new permanent staff recruited, disaggregated by gender.
Data Requirements: - Collection frequency: Monthly - Dimensions: Gender (Male, Female) - Scope: Permanent staff only (excludes fixed-term and casual) - Calculation: Average = (Sum of monthly values) / (Number of months with data)
E.2.3 Departures (Total Permanent Staff)
Data Structure:
| Metric | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | Total |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| No. of Departures | 2 | 1 | 2 | 1 | 3 | 3 | 33 | 19 | 35 | - | - | - | 99 |
Description: Monthly count of departures for permanent staff with annual total.
Data Requirements: - Collection frequency: Monthly - Scope: Permanent staff only - Calculation: Total = Sum of monthly departures for the fiscal year
E.2.4 Casual Workers
Data Structure:
| Metric | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | Total |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| No. of Casual Workers | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | - | - | 0 |
Description: Monthly headcount of casual workers (non-permanent, non-fixed-term) employed.
Data Requirements: - Collection frequency: Monthly - Definition: Workers employed on a casual/daily basis (not permanent or fixed-term contracts) - Calculation: Total = Sum of monthly values (cumulative unique workers for the year)
CSV/XLSX Export Columns (E.2 Combined):
Metric_Type, Employment_Type_Or_Gender, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, Aggregate_Value, Aggregate_Type, Reporting_Period, Organisation_ID, Site_ID
Where:
- Metric_Type: "Employment_Type", "Recruitment", "Departures", "Casual_Workers"
- Aggregate_Value: Average for employment type/recruitment, Total for departures/casual workers
- Aggregate_Type: "AVERAGE" or "TOTAL"
E.3 Employee Age Demographics
Output Format: Monthly age group distribution table
Data Structure:
| Age Group | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | Total |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Under 30 | 189 | 182 | 188 | 197 | 190 | 199 | 200 | 197 | 195 | - | - | - | 1737 |
| Aged 30-50 | 358 | 346 | 352 | 356 | 355 | 357 | 330 | 329 | 314 | - | - | - | 3097 |
| Over 50 | 74 | 73 | 74 | 75 | 75 | 75 | 73 | 72 | 72 | - | - | - | 663 |
| Total | 621 | 601 | 614 | 628 | 620 | 631 | 603 | 598 | 581 | - | - | - | 5497 |
Description: Monthly headcount by age group with annual totals. The total row shows the sum of all age groups for validation.
Data Requirements: - Collection frequency: Monthly - Age groups: Under 30, Aged 30-50, Over 50 - Monthly snapshot taken at end of month - Calculation: - Monthly Total = Under 30 + Aged 30-50 + Over 50 - Annual Total = Sum of monthly unique employee counts (not simple sum of monthly totals) - Dimensionality: Organisation-level and Site-level
CSV/XLSX Export Columns:
Age_Group, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, Annual_Total, Reporting_Period, Organisation_ID, Site_ID
Export Templates
CSV Export Structure
File Naming Convention: {Organisation}_{ReportType}_{FiscalYear}_{ExportDate}.csv
Example: Eureka_Gold_Human_Capital_FY2025_2026-01-17.csv
Sheet Structure for XLSX: - Sheet 1: E.1 Employee Demographics (quarterly by employment level) - Sheet 2: E.2 Employment Type and Turnover (monthly) - Sub-table: Permanent vs. Fixed Term - Sub-table: New Recruitments by Gender - Sub-table: Departures - Sub-table: Casual Workers - Sheet 3: E.3 Employee Age (monthly by age group) - Sheet 4: Reference Data (employment levels, age group definitions)
Column Mapping
| Report Field | Database Column | Transform |
|---|---|---|
| Employment Level | metric_submission.dimensions['employment_level'] | Enum: Executive, Salaried Staff (Non-NEC), Waged Staff (NEC) |
| Quarter | reporting_period.quarter | Format: Q1 2025, Q2 2025, etc. |
| Male | metric_submission.value WHERE gender='Male' | Direct |
| Female | metric_submission.value WHERE gender='Female' | Direct |
| From Local Community | metric_submission.value WHERE local_community=true | Direct |
| % Male | Calculated field | (Male / Total) × 100, format: 0% - 100% |
| % Female | Calculated field | (Female / Total) × 100, format: 0% - 100% |
| % From Local Community | Calculated field | (From Local Community / Total) × 100, format: 0% - 100% |
| Employment Type | metric_submission.dimensions['employment_type'] | Enum: Permanent, Fixed Term |
| Jan-Dec (months) | metric_submission.value WHERE month=X | Direct, grouped by month |
| Average | Calculated field | Sum of monthly values / Count of non-null months |
| Total | Calculated field | Sum of monthly values for fiscal year |
| Age Group | metric_submission.dimensions['age_group'] | Enum: Under 30, Aged 30-50, Over 50 |
Validation Rules
E.1 Employee Demographics: - Total = Male + Female for each employment level and quarter - Percentages must sum to 100% (Male + Female = 100%) - % From Local Community must be ≤ 100% - From Local Community count ≤ Total employees - No negative values - Quarterly data required (Q1-Q4, with missing quarters acceptable if not yet reached in fiscal year)
E.2 Employment Type and Turnover: - All values must be non-negative integers - Monthly data required for each fiscal year month - Average calculation: (Sum of monthly values) / (Count of non-null months), rounded to nearest integer - Total calculation: Sum of monthly values for the fiscal year - Fixed Term + Permanent should approximately equal total workforce (minus casual workers) - Recruitment metrics (Male + Female) should align with net changes in permanent headcount
E.3 Employee Age: - All values must be non-negative integers - Monthly Total row must equal sum of age groups (Under 30 + Aged 30-50 + Over 50) for each month - Annual Total represents unique employee counts across the year (may not equal simple sum of monthly totals) - Missing months acceptable if not yet reached in fiscal year
Filters & Ordering
Available Filters: - Reporting Period: Fiscal year, quarter (for E.1), month (for E.2, E.3) - Organisation: Select specific organisation or group - Site/Business Unit: Filter to specific site or across multiple sites - Employment Level: Filter E.1 by Executive, Salaried Staff (Non-NEC), Waged Staff (NEC) - Employment Type: Filter E.2 by Permanent, Fixed Term - Gender: Filter E.2 recruitment by Male, Female - Age Group: Filter E.3 by Under 30, Aged 30-50, Over 50
Ordering: - E.1: By employment level (Executive → Salaried → Waged), then by quarter (Q1 → Q4) - E.2: By metric type (Employment Type → Recruitment → Departures → Casual Workers), then by month (Jan → Dec) - E.3: By age group (Under 30 → Aged 30-50 → Over 50), then by month (Jan → Dec)
Grouping: - Optional grouping by site, employment level, or quarter for E.1 - Optional grouping by site or employment type for E.2 - Optional grouping by site or age group for E.3
Access Control & PII Handling
Role-Based Access: - Data Collector: Can view and edit human capital metrics for their assigned sites - HR Manager: Can view and approve HR metrics for their organisation - Site Manager: Can view headcount metrics for their site (no individual-level access) - Org Admin: Can view all HR metrics across organisation - External Auditor: Read-only access to approved/locked period data
PII Protection: - All human capital metrics are aggregated at group level (no individual employee records in reports) - Minimum aggregation threshold: At least 5 employees per reported category to prevent identification - Individual employee names, IDs, or personal details must not appear in exports - Age groups are broad ranges (not specific ages) to protect privacy - Gender dimension limited to Male/Female aggregates (no individual-level data) - Evidence attachments containing individual HR records must be restricted to internal use only and encrypted - Local community status reported as counts/percentages, not individual employee flags
Data Minimization: - Reports include only demographic aggregates required for GRI compliance - Individual recruitment or departure events are counted but not attributed to specific employees - Casual worker counts are totals only (no individual worker details)
Occupational Health and Safety (OHS) Reporting (GRI 403-9, GRI 403-10)
Overview
This section defines the output format for Occupational Health and Safety (OHS) reports, including GRI 403-9 (work-related injuries) and GRI 403-10 (work-related ill health). These reports support compliance with GRI social disclosures related to workplace safety, incident tracking, and lost time injury frequency rates (LTIFR).
Report Sections
F.1 Quarterly Incident Statistics
Output Format: Quarterly incident counts table by workforce type
Data Structure:
| Incident Type | Workforce Type | Q1 | Q2 | Q3 | Q4 | Total |
|---|---|---|---|---|---|---|
| Near Miss | Mine | 45 | 52 | 48 | 50 | 195 |
| Near Miss | Contractors | 12 | 15 | 10 | 14 | 51 |
| First Aid | Mine | 23 | 28 | 25 | 22 | 98 |
| First Aid | Contractors | 8 | 6 | 9 | 7 | 30 |
| Restricted Work | Mine | 5 | 4 | 6 | 3 | 18 |
| Restricted Work | Contractors | 2 | 1 | 3 | 2 | 8 |
| Medical Treatment | Mine | 12 | 15 | 10 | 13 | 50 |
| Medical Treatment | Contractors | 4 | 3 | 5 | 4 | 16 |
| LTI (Lost Time Injury) | Mine | 3 | 2 | 4 | 1 | 10 |
| LTI (Lost Time Injury) | Contractors | 1 | 0 | 1 | 0 | 2 |
| Fatality | Mine | 0 | 0 | 0 | 0 | 0 |
| Fatality | Contractors | 0 | 0 | 0 | 0 | 0 |
| High Potential Incident | Mine | 8 | 6 | 7 | 5 | 26 |
| High Potential Incident | Contractors | 2 | 1 | 3 | 1 | 7 |
| Property Damage | Mine | 6 | 5 | 4 | 7 | 22 |
| Property Damage | Contractors | 1 | 2 | 1 | 2 | 6 |
| Silicosis/Pneumoconiosis | Mine | 0 | 1 | 0 | 0 | 1 |
| Silicosis/Pneumoconiosis | Contractors | 0 | 0 | 0 | 0 | 0 |
| Other Clinic Visits | Mine | 78 | 82 | 75 | 80 | 315 |
| Other Clinic Visits | Contractors | 15 | 18 | 12 | 16 | 61 |
Description: Quarterly count of occupational health and safety incidents by type and workforce type (Mine employees vs. Contractors). Includes total across all quarters for the fiscal year.
Data Requirements: - Collection frequency: Quarterly - Incident types: Near Miss, First Aid, Restricted Work, Medical Treatment, LTI (Lost Time Injury), Fatality, High Potential Incident, Property Damage, Silicosis/Pneumoconiosis, Other Clinic Visits - Workforce types: Mine, Contractors - Dimensions: incident_type, workforce_type, quarter - Calculation: Total = Q1 + Q2 + Q3 + Q4 - Dimensionality: Organisation-level and Site-level - Zero values allowed for quarters with no incidents
CSV/XLSX Export Columns:
Incident_Type, Workforce_Type, Q1, Q2, Q3, Q4, Total, Reporting_Period, Organisation_ID, Site_ID, Collection_Date
F.2 Lost Time Injury (LTI) Days and LTIFR
Output Format: Quarterly LTI days and LTIFR table by workforce type
Data Structure:
| Metric | Workforce Type | Q1 | Q2 | Q3 | Q4 | YTD |
|---|---|---|---|---|---|---|
| LTI Days | Mine | 45 | 30 | 60 | 15 | 150 |
| LTI Days | Contractors | 15 | 0 | 12 | 0 | 27 |
| LTIFR | Mine | 1.25 | 0.83 | 1.67 | 0.42 | 1.04 |
| LTIFR | Contractors | 0.71 | 0.00 | 0.68 | 0.00 | 0.35 |
Description: Quarterly Lost Time Injury (LTI) days and Lost Time Injury Frequency Rate (LTIFR) by workforce type. Year-to-date (YTD) values represent cumulative totals and averages for the fiscal year.
Data Requirements: - Collection frequency: Quarterly - Metrics: - LTI Days: Total days lost due to lost time injuries - LTIFR: Lost Time Injury Frequency Rate - Workforce types: Mine, Contractors - Calculation: - YTD LTI Days = Q1 + Q2 + Q3 + Q4 (cumulative sum) - LTIFR = (Number of LTIs × 1,000,000) / Total hours worked - YTD LTIFR = (Total LTIs YTD × 1,000,000) / Total hours worked YTD - Dimensionality: Organisation-level and Site-level - Precision: LTIFR reported to 2 decimal places
CSV/XLSX Export Columns:
Metric, Workforce_Type, Q1, Q2, Q3, Q4, YTD, Reporting_Period, Organisation_ID, Site_ID, Collection_Date
LTIFR Formula Reference:
Where: - Number of LTIs = Count of lost time injuries for the period - Total hours worked = Sum of hours worked by all employees/contractors for the period - Multiplier = 1,000,000 (standard frequency rate per million hours)
Export Templates
CSV Export Structure
File Naming Convention: {Organisation}_{ReportType}_{FiscalYear}_{ExportDate}.csv
Example: Eureka_Gold_OHS_Report_FY2025_2026-01-18.csv
Sheet Structure for XLSX: - Sheet 1: F.1 Quarterly Incident Statistics (all incident types by workforce type) - Sheet 2: F.2 LTI Days and LTIFR (quarterly and YTD) - Sheet 3: Reference Data (incident type definitions, workforce type categories, LTIFR formula) - Sheet 4: Hours Worked (quarterly hours by workforce type for LTIFR calculation reference)
Column Mapping
| Report Field | Database Column | Transform |
|---|---|---|
| Incident Type | metric_submission.dimensions['incident_type'] | Enum: Near Miss, First Aid, Restricted Work, Medical Treatment, LTI, Fatality, High Potential Incident, Property Damage, Silicosis/Pneumoconiosis, Other Clinic Visits |
| Workforce Type | metric_submission.dimensions['workforce_type'] | Enum: Mine, Contractors |
| Q1, Q2, Q3, Q4 | metric_submission.value WHERE quarter=X | Direct, grouped by quarter |
| Total (F.1) | Calculated field | Sum of Q1 + Q2 + Q3 + Q4 for incident counts |
| YTD (F.2) | Calculated field | Cumulative sum for LTI Days, weighted average for LTIFR |
| LTI Days | metric_submission.value WHERE metric='lti_days' | Direct |
| LTIFR | Calculated field | (Number of LTIs × 1,000,000) / Total hours worked, rounded to 2 decimal places |
Validation Rules
F.1 Quarterly Incident Statistics: - All values must be non-negative integers - Quarterly data required (Q1-Q4, with missing quarters acceptable if not yet reached in fiscal year) - Total = Q1 + Q2 + Q3 + Q4 for each incident type and workforce type - Fatality count requires mandatory evidence attachment (accident report, investigation report) - High Potential Incident count requires evidence attachment - Zero values explicitly allowed for no-incident periods (do not leave blank)
F.2 LTI Days and LTIFR: - LTI Days must be non-negative integers - LTIFR must be non-negative decimal (0.00 or greater) - LTIFR precision: 2 decimal places - YTD LTI Days = Q1 + Q2 + Q3 + Q4 (cumulative sum) - LTIFR calculation requires total hours worked metric for the same period - Referential check: Number of LTIs from F.1 must match LTI count used in LTIFR calculation - If LTI count is zero for a quarter, LTIFR should be 0.00 (not blank) - YTD LTIFR should reflect cumulative LTIs over cumulative hours worked
Cross-Validation: - LTI count from F.1 (LTI rows for Mine and Contractors) must align with LTIFR calculation input - Total hours worked must be submitted for each workforce type and quarter to enable LTIFR calculation - If LTI Days > 0, corresponding LTI count in F.1 must be > 0
Filters & Ordering
Available Filters: - Reporting Period: Fiscal year, quarter (Q1-Q4) - Organisation: Select specific organisation or group - Site/Business Unit: Filter to specific site or across multiple sites - Workforce Type: Filter by Mine, Contractors, or Both - Incident Type: Filter F.1 by specific incident types (e.g., only Fatalities, only LTIs) - Metric Type: Filter F.2 by LTI Days or LTIFR
Ordering: - F.1: By incident type (severity-based: Fatality → LTI → Medical Treatment → Restricted Work → First Aid → High Potential → Property Damage → Silicosis/Pneumoconiosis → Near Miss → Other Clinic Visits), then by workforce type (Mine → Contractors), then by quarter (Q1 → Q4) - F.2: By metric (LTI Days → LTIFR), then by workforce type (Mine → Contractors), then by quarter (Q1 → Q4)
Grouping: - Optional grouping by site, workforce type, or quarter - Optional aggregation at organisation level for multi-site reporting
Handling Missing Quarters: - If fiscal year is incomplete (e.g., only Q1-Q2 data available), Q3 and Q4 columns should display "-" or "N/A" - Total/YTD calculations should sum only available quarters - Export metadata should indicate which quarters are included in the report
Access Control & Evidence Requirements
Role-Based Access: - Data Collector: Can view and edit OHS metrics for their assigned sites - HSE Manager: Can view and approve OHS metrics for their organisation - Site Manager: Can view incident statistics for their site - Org Admin: Can view all OHS metrics across organisation - External Auditor: Read-only access to approved/locked period data
Evidence Requirements by Incident Type: - Fatality: MANDATORY - Accident report, investigation report, regulatory notification, medical examiner report - LTI: MANDATORY - Accident report, medical treatment record, LTI register entry - High Potential Incident: MANDATORY - Incident investigation report, root cause analysis - Medical Treatment: RECOMMENDED - Medical treatment record, clinic register entry - Restricted Work: RECOMMENDED - Accident report, medical assessment - Silicosis/Pneumoconiosis: MANDATORY - Medical diagnosis, occupational health assessment, regulatory notification - First Aid: OPTIONAL - Clinic register entry - Near Miss: OPTIONAL - Near miss report (if formal reporting system in place) - Property Damage: RECOMMENDED - Property damage report, cost estimate - Other Clinic Visits: OPTIONAL - Clinic register log
Confidentiality: - All OHS incident data classified as CONFIDENTIAL - Individual employee names must not appear in aggregated reports (use incident numbers only) - Medical records and health-related evidence must be encrypted and access-restricted to HSE managers and authorised personnel only - Evidence attachments containing personal health information (PHI) require additional access controls beyond standard confidential classification
Environmental Reporting (GRI 301, 302, 303, 305, 306, 307)
Overview
This section defines the output format for environmental reports, including production metrics, materials consumption, energy usage, water management, air emissions, waste management, TSF (Tailings Storage Facility) operations, rehabilitation activities, and environmental incidents. These reports support compliance with GRI environmental disclosures and operational monitoring requirements.
Report Sections
G.1 Production
Output Format: Monthly production tables with totals and averages
Data Structure:
| Production Metric | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | Total | Average |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Crushed Ore (tonnes) | 125,000 | 130,000 | 128,000 | 135,000 | 132,000 | 140,000 | 138,000 | 142,000 | 145,000 | - | - | - | 1,215,000 | 135,000 |
| Milled Ore (tonnes) | 120,000 | 125,000 | 123,000 | 130,000 | 127,000 | 135,000 | 133,000 | 137,000 | 140,000 | - | - | - | 1,170,000 | 130,000 |
| Gold Produced (oz) | 3,200 | 3,350 | 3,280 | 3,450 | 3,380 | 3,600 | 3,540 | 3,650 | 3,720 | - | - | - | 30,170 | 3,352 |
Description: Monthly production volumes for crushed ore, milled ore, and gold produced. Total represents the sum across all months in the fiscal year, and Average is the mean monthly production.
Data Requirements: - Collection frequency: Monthly - Metrics: Crushed ore (tonnes), Milled ore (tonnes), Gold produced (oz) - Calculation: - Total = Sum of monthly values for the fiscal year - Average = Total / Number of months with data - Dimensionality: Site-level and Organisation-level - Units: Tonnes (ore), Troy ounces (gold)
CSV/XLSX Export Columns:
Production_Metric, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, Total, Average, Reporting_Period, Organisation_ID, Site_ID
G.2 Materials Consumption
Output Format: Monthly consumables table with per-tonne intensity metrics
Data Structure:
| Material | Unit | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | Total | Intensity (per tonne crushed) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Activated Carbon | kg | 2,500 | 2,600 | 2,550 | 2,700 | 2,650 | 2,800 | 2,750 | 2,850 | 2,900 | - | - | - | 24,300 | 0.020 |
| Cyanide | kg | 15,000 | 15,600 | 15,300 | 16,200 | 15,900 | 16,800 | 16,500 | 17,100 | 17,400 | - | - | - | 145,800 | 0.120 |
| Hydrogen Peroxide | L | 8,000 | 8,300 | 8,150 | 8,600 | 8,450 | 8,900 | 8,750 | 9,050 | 9,200 | - | - | - | 77,400 | 0.064 |
| Caustic Soda | kg | 12,000 | 12,500 | 12,250 | 13,000 | 12,750 | 13,500 | 13,250 | 13,700 | 14,000 | - | - | - | 117,000 | 0.096 |
| Blasting Emulsion | kg | 45,000 | 46,800 | 45,900 | 48,600 | 47,700 | 50,400 | 49,500 | 51,300 | 52,200 | - | - | - | 437,400 | 0.360 |
| Mill Balls | kg | 18,000 | 18,700 | 18,350 | 19,400 | 19,100 | 20,200 | 19,800 | 20,500 | 20,900 | - | - | - | 174,950 | 0.144 |
Description: Monthly consumption of materials and consumables used in mining and processing operations. Intensity metrics show consumption per tonne of crushed ore for efficiency analysis.
Data Requirements: - Collection frequency: Monthly - Materials: Activated carbon, Cyanide, Hydrogen peroxide, Caustic soda, Blasting emulsion, Mill balls - Calculation: - Total = Sum of monthly values for the fiscal year - Intensity = Total material consumed / Total crushed ore (from G.1) - Dimensionality: Site-level and Organisation-level - Units: kg (kilograms), L (litres) - Precision: Intensity to 3 decimal places
CSV/XLSX Export Columns:
Material, Unit, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, Total, Intensity_Per_Tonne_Crushed, Reporting_Period, Organisation_ID, Site_ID
G.3 Energy Usage
Output Format: Monthly energy tables with specific consumption metrics
Data Structure:
G.3.1 Electricity Consumption
| Source | Jan (kWh) | Feb (kWh) | Mar (kWh) | Apr (kWh) | May (kWh) | Jun (kWh) | Jul (kWh) | Aug (kWh) | Sep (kWh) | Oct (kWh) | Nov (kWh) | Dec (kWh) | Total (kWh) | Specific (kWh/t) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Grid-Supplied | 850,000 | 880,000 | 865,000 | 910,000 | 895,000 | 945,000 | 930,000 | 960,000 | 980,000 | - | - | - | 8,215,000 | 6.76 |
| Generator-Supplied | 125,000 | 130,000 | 127,500 | 135,000 | 132,500 | 140,000 | 137,500 | 142,500 | 145,000 | - | - | - | 1,215,000 | 1.00 |
G.3.2 Fuel Consumption
| Fuel Type & Use | Jan (L) | Feb (L) | Mar (L) | Apr (L) | May (L) | Jun (L) | Jul (L) | Aug (L) | Sep (L) | Oct (L) | Nov (L) | Dec (L) | Total (L) | Specific (L/t) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Diesel - Other | 45,000 | 46,800 | 45,900 | 48,600 | 47,700 | 50,400 | 49,500 | 51,300 | 52,200 | - | - | - | 437,400 | 0.360 |
| Diesel - Mining/Drilling | 120,000 | 125,000 | 122,500 | 130,000 | 127,500 | 135,000 | 132,500 | 137,500 | 140,000 | - | - | - | 1,170,000 | 0.963 |
| Diesel - Generators | 28,000 | 29,100 | 28,550 | 30,200 | 29,650 | 31,300 | 30,750 | 31,850 | 32,400 | - | - | - | 271,800 | 0.224 |
| Petrol - Other | 8,000 | 8,300 | 8,150 | 8,600 | 8,450 | 8,900 | 8,750 | 9,050 | 9,200 | - | - | - | 77,400 | 0.064 |
G.3.3 Generator Electric Consumption Rate
| Metric | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | Average |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Generator Consumption Rate (L/kWh) | 0.224 | 0.224 | 0.224 | 0.224 | 0.224 | 0.224 | 0.224 | 0.224 | 0.224 | - | - | - | 0.224 |
Description: Monthly electricity and fuel consumption for mining and processing operations. Specific consumption metrics show energy intensity per tonne of crushed ore. Generator consumption rate shows diesel fuel efficiency.
Data Requirements: - Collection frequency: Monthly - Electricity sources: Grid-supplied (kWh), Generator-supplied (kWh) - Fuel types: Diesel (other, mining/drilling, generators), Petrol (other) - Calculation: - Total = Sum of monthly values for the fiscal year - Specific consumption = Total energy consumed / Total crushed ore (from G.1) - Generator consumption rate = Total diesel for generators (L) / Total generator-supplied electricity (kWh) - Dimensionality: Site-level and Organisation-level - Units: kWh (electricity), L (litres for fuel) - Precision: Specific consumption and generator rate to 3 decimal places
CSV/XLSX Export Columns:
Energy_Type, Energy_Source_Or_Use, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, Total, Specific_Per_Tonne_Crushed, Reporting_Period, Organisation_ID, Site_ID
G.4 Water Consumption and Water Quality
Output Format: Monthly water tables and quarterly water quality monitoring
G.4.1 Water Abstraction by Source
| Water Source | Jan (m³) | Feb (m³) | Mar (m³) | Apr (m³) | May (m³) | Jun (m³) | Jul (m³) | Aug (m³) | Sep (m³) | Oct (m³) | Nov (m³) | Dec (m³) | Total (m³) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Fresh Groundwater | 18,000 | 18,700 | 18,350 | 19,400 | 19,100 | 20,200 | 19,800 | 20,500 | 20,900 | - | - | - | 174,950 |
| Fresh Surface Water | 12,000 | 12,500 | 12,250 | 13,000 | 12,750 | 13,500 | 13,250 | 13,700 | 14,000 | - | - | - | 117,000 |
| Low Quality Groundwater | 8,000 | 8,300 | 8,150 | 8,600 | 8,450 | 8,900 | 8,750 | 9,050 | 9,200 | - | - | - | 77,400 |
G.4.2 Recycled Water Streams
| Recycle Stream | Jan (m³) | Feb (m³) | Mar (m³) | Apr (m³) | May (m³) | Jun (m³) | Jul (m³) | Aug (m³) | Sep (m³) | Oct (m³) | Nov (m³) | Dec (m³) | Total (m³) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TSF Return Water | 45,000 | 46,800 | 45,900 | 48,600 | 47,700 | 50,400 | 49,500 | 51,300 | 52,200 | - | - | - | 437,400 |
| Other Recycle Streams | 15,000 | 15,600 | 15,300 | 16,200 | 15,900 | 16,800 | 16,500 | 17,100 | 17,400 | - | - | - | 145,800 |
G.4.3 Water Consumed by Use
| Water Use | Jan (m³) | Feb (m³) | Mar (m³) | Apr (m³) | May (m³) | Jun (m³) | Jul (m³) | Aug (m³) | Sep (m³) | Oct (m³) | Nov (m³) | Dec (m³) | Total (m³) | Specific (m³/t) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Processing Plant | 55,000 | 57,200 | 56,100 | 59,400 | 58,300 | 61,600 | 60,500 | 62,700 | 63,800 | - | - | - | 534,600 | 0.440 |
| Mining Operations | 18,000 | 18,700 | 18,350 | 19,400 | 19,100 | 20,200 | 19,800 | 20,500 | 20,900 | - | - | - | 174,950 | 0.144 |
| Potable Water | 5,000 | 5,200 | 5,100 | 5,400 | 5,300 | 5,600 | 5,500 | 5,700 | 5,800 | - | - | - | 48,600 | 0.040 |
G.4.4 Water Quality Monitoring
| Sampling Point | Quarter | pH | Turbidity (NTU) | Suspended Solids (mg/L) | Cyanide (mg/L) | Heavy Metals (mg/L) | Quality Band | Non-Compliance Parameters |
|---|---|---|---|---|---|---|---|---|
| Upstream River | Q1 2025 | 7.2 | 12 | 18 | 0.001 | 0.005 | Green | None |
| Downstream River | Q1 2025 | 7.5 | 45 | 52 | 0.015 | 0.025 | Amber | Turbidity, Suspended Solids |
| TSF Seepage Point | Q1 2025 | 8.1 | 85 | 120 | 0.045 | 0.080 | Red | Turbidity, Suspended Solids, Cyanide, Heavy Metals |
| Groundwater Borehole 1 | Q1 2025 | 7.0 | 8 | 10 | 0.001 | 0.003 | Green | None |
Description: Monthly water abstraction, recycling, and consumption metrics with quarterly water quality monitoring at designated sampling points. Quality bands indicate compliance with environmental standards.
Data Requirements: - Collection frequency: Monthly (abstraction, recycling, consumption), Quarterly (water quality) - Water sources: Fresh groundwater, Fresh surface water, Low quality groundwater - Recycle streams: TSF return water, Other recycle streams - Water uses: Processing plant, Mining operations, Potable water - Calculation: - Total = Sum of monthly values for the fiscal year - Specific water use = Total water consumed / Total crushed ore (from G.1) - Quality bands: Green (compliant), Amber (minor exceedance), Red (major exceedance) - Dimensionality: Site-level and Organisation-level - Units: m³ (cubic metres), NTU (turbidity), mg/L (milligrams per litre) - Precision: Specific consumption to 3 decimal places, quality parameters to 3 decimal places
CSV/XLSX Export Columns (Water Volumes):
Water_Category, Water_Source_Or_Use, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, Total, Specific_Per_Tonne_Crushed, Reporting_Period, Organisation_ID, Site_ID
CSV/XLSX Export Columns (Water Quality):
Sampling_Point, Quarter, pH, Turbidity_NTU, Suspended_Solids_mg_L, Cyanide_mg_L, Heavy_Metals_mg_L, Quality_Band, Non_Compliance_Parameters, Reporting_Period, Organisation_ID, Site_ID, Collection_Date
G.5 Air Emissions
Output Format: Quarterly air pollutant measurements by monitoring area
Data Structure:
| Monitoring Area | Pollutant | Q1 (μg/m³) | Q2 (μg/m³) | Q3 (μg/m³) | Q4 (μg/m³) | Quality Band |
|---|---|---|---|---|---|---|
| Processing Plant | PM10 | 45 | 48 | 42 | 46 | Amber |
| Processing Plant | SO₂ | 15 | 18 | 14 | 16 | Green |
| Processing Plant | NO₂ | 25 | 28 | 23 | 26 | Green |
| Processing Plant | CO | 350 | 380 | 340 | 370 | Green |
| Mine Site Boundary | PM10 | 85 | 92 | 88 | 90 | Red |
| Mine Site Boundary | SO₂ | 12 | 14 | 11 | 13 | Green |
| Mine Site Boundary | NO₂ | 22 | 25 | 20 | 23 | Green |
| Mine Site Boundary | CO | 280 | 310 | 270 | 300 | Green |
| Residential Area | PM10 | 32 | 35 | 30 | 33 | Green |
| Residential Area | SO₂ | 8 | 10 | 7 | 9 | Green |
| Residential Area | NO₂ | 18 | 20 | 16 | 19 | Green |
| Residential Area | CO | 220 | 245 | 210 | 235 | Green |
Description: Quarterly air emissions monitoring for particulate matter (PM10), sulfur dioxide (SO₂), nitrogen dioxide (NO₂), and carbon monoxide (CO) at designated monitoring areas. Quality bands indicate compliance with air quality standards.
Data Requirements: - Collection frequency: Quarterly - Pollutants: PM10 (particulate matter ≤10 micrometers), SO₂ (sulfur dioxide), NO₂ (nitrogen dioxide), CO (carbon monoxide) - Monitoring areas: Processing plant, Mine site boundary, Residential area, Other designated areas - Quality bands: Green (compliant), Amber (minor exceedance), Red (major exceedance) - Dimensionality: Site-level and Organisation-level - Units: μg/m³ (micrograms per cubic metre) - Precision: 1 decimal place for measurements
CSV/XLSX Export Columns:
Monitoring_Area, Pollutant, Q1, Q2, Q3, Q4, Quality_Band, Reporting_Period, Organisation_ID, Site_ID, Collection_Date
G.6 Non-Mineralised Waste
Output Format: Monthly waste generation table with disposal methods
Data Structure:
| Waste Type | Jan (tonnes) | Feb (tonnes) | Mar (tonnes) | Apr (tonnes) | May (tonnes) | Jun (tonnes) | Jul (tonnes) | Aug (tonnes) | Sep (tonnes) | Oct (tonnes) | Nov (tonnes) | Dec (tonnes) | Total (tonnes) | Specific (kg/t crushed) | Disposal Method |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| General Waste | 45 | 47 | 46 | 49 | 48 | 50 | 49 | 51 | 52 | - | - | - | 437 | 0.360 | Landfill |
| Recyclables (Metal) | 12 | 13 | 12 | 13 | 13 | 14 | 13 | 14 | 14 | - | - | - | 118 | 0.097 | Recycled |
| Recyclables (Plastic) | 8 | 8 | 8 | 9 | 9 | 9 | 9 | 9 | 9 | - | - | - | 78 | 0.064 | Recycled |
| Hazardous Waste | 5 | 5 | 5 | 5 | 5 | 6 | 5 | 6 | 6 | - | - | - | 48 | 0.040 | Licensed Facility |
| Contaminated Soil | 25 | 26 | 25 | 27 | 27 | 28 | 27 | 29 | 29 | - | - | - | 243 | 0.200 | Treatment & Disposal |
Description: Monthly non-mineralised waste generation by type with total annual volumes, specific waste per tonne of crushed ore, and disposal methods. Non-mineralised waste includes general operational waste but excludes mining waste (waste rock and tailings).
Data Requirements: - Collection frequency: Monthly - Waste types: General waste, Recyclables (metal, plastic, paper), Hazardous waste, Contaminated soil, Other non-mineralised waste - Disposal methods: Landfill, Recycled, Licensed facility, Treatment & disposal, Other - Calculation: - Total = Sum of monthly values for the fiscal year - Specific waste = (Total waste in kg) / Total crushed ore - Dimensionality: Site-level and Organisation-level - Units: Tonnes (monthly and total), kg/t (specific waste intensity) - Precision: Specific waste to 3 decimal places
CSV/XLSX Export Columns:
Waste_Type, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, Total, Specific_Per_Tonne_Crushed, Disposal_Method, Reporting_Period, Organisation_ID, Site_ID
G.7 Mineralised Waste
Output Format: Monthly mineralised waste table
Data Structure:
| Waste Type | Jan (tonnes) | Feb (tonnes) | Mar (tonnes) | Apr (tonnes) | May (tonnes) | Jun (tonnes) | Jul (tonnes) | Aug (tonnes) | Sep (tonnes) | Oct (tonnes) | Nov (tonnes) | Dec (tonnes) | Total (tonnes) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Waste Rock | 450,000 | 468,000 | 459,000 | 486,000 | 477,000 | 504,000 | 495,000 | 513,000 | 522,000 | - | - | - | 4,374,000 |
| Tailings | 120,000 | 125,000 | 122,500 | 130,000 | 127,500 | 135,000 | 132,500 | 137,500 | 140,000 | - | - | - | 1,170,000 |
Description: Monthly mineralised waste generation including waste rock (overburden and non-ore bearing rock) and tailings (processed ore residue). Total represents cumulative waste generated during the fiscal year.
Data Requirements: - Collection frequency: Monthly - Waste types: Waste rock (overburden, non-ore rock), Tailings (processing residue) - Calculation: - Total = Sum of monthly values for the fiscal year - Dimensionality: Site-level and Organisation-level - Units: Tonnes - Relationship: Tailings volume should approximately correspond to milled ore volume (from G.1)
CSV/XLSX Export Columns:
Waste_Type, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, Total, Reporting_Period, Organisation_ID, Site_ID
G.8 TSF Management
Output Format: Monthly TSF monitoring table
Data Structure:
| TSF Metric | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | Average | Unit |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Slurry Density | 1.35 | 1.36 | 1.35 | 1.37 | 1.36 | 1.38 | 1.37 | 1.39 | 1.38 | - | - | - | 1.37 | g/cm³ |
| Freeboard | 2.5 | 2.4 | 2.6 | 2.3 | 2.5 | 2.2 | 2.4 | 2.1 | 2.3 | - | - | - | 2.4 | m |
| Surface Area | 45.2 | 45.3 | 45.4 | 45.5 | 45.6 | 45.7 | 45.8 | 45.9 | 46.0 | - | - | - | 45.6 | ha |
| Rate of Rise | 0.08 | 0.09 | 0.08 | 0.10 | 0.09 | 0.11 | 0.10 | 0.12 | 0.11 | - | - | - | 0.10 | m/month |
Description: Monthly Tailings Storage Facility (TSF) management metrics including slurry density, freeboard (distance from tailings surface to dam crest), surface area, and rate of rise. These metrics are critical for TSF stability and environmental compliance monitoring.
Data Requirements: - Collection frequency: Monthly - Metrics: - Slurry density: Density of tailings slurry (g/cm³) - Freeboard: Vertical distance from tailings surface to dam crest (m) - Surface area: Area of tailings impoundment surface (ha) - Rate of rise: Monthly increase in tailings elevation (m/month) - Calculation: - Average = Mean of monthly values for the fiscal year - Dimensionality: Site-level (each TSF separately) and Organisation-level - Units: g/cm³ (density), m (metres), ha (hectares), m/month (rate) - Precision: Slurry density to 2 decimal places, other metrics to 2 decimal places
CSV/XLSX Export Columns:
TSF_Metric, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, Average, Unit, Reporting_Period, Organisation_ID, Site_ID, TSF_Name
G.9 Rehabilitation Activities Log
Output Format: Quarterly rehabilitation activities table
Data Structure:
| NO. | Date Started | Rehabilitation Activity | Cost (USD) | Status | Status Date | Site/Area |
|---|---|---|---|---|---|---|
| 1 | 15-Jan-25 | Topsoil replacement - Pit 1 North Wall | 45,000 | Completed | 28-Feb-25 | Pit 1 |
| 2 | 20-Feb-25 | Vegetation establishment - Waste Rock Dump A | 28,500 | WIP | 30-Jun-25 | WRD-A |
| 3 | 10-Mar-25 | Erosion control - Haul Road Section 3 | 12,000 | Completed | 15-Apr-25 | Haul Road |
| 4 | 05-Apr-25 | Contouring and reshaping - Old TSF Beach | 85,000 | WIP | 31-Dec-25 | TSF-1 |
| 5 | 12-May-25 | Water diversion channel construction | 35,000 | WIP | 30-Sep-25 | Pit 2 |
Description: Quarterly log of rehabilitation activities undertaken at the mine site, including mine closure preparation, progressive rehabilitation, and environmental restoration work. Tracks activity status, costs, and completion dates.
Data Requirements: - Collection frequency: Quarterly (activities ongoing throughout the year) - Fields: - NO.: Sequential activity number - Date Started: Date rehabilitation work commenced - Rehabilitation Activity: Description of the activity - Cost: Estimated or actual cost in USD - Status: Current status (Planned, WIP, Completed, On Hold) - Status Date: Target or actual completion date - Site/Area: Location of rehabilitation work - Status transitions: Planned → WIP → Completed - Dimensionality: Site-level and Organisation-level - Currency: USD (or organisation default currency)
CSV/XLSX Export Columns:
NO, Date_Started, Rehabilitation_Activity, Cost_USD, Status, Status_Date, Site_Area, Reporting_Period, Organisation_ID, Site_ID
G.10 Environmental Incidents Log
Output Format: Quarterly environmental incidents table
Data Structure:
| NO. | Date Reported | Incident Description | Severity | Actions Taken | Status | Status Date | Site/Area |
|---|---|---|---|---|---|---|---|
| 1 | 22-Jan-25 | Minor diesel spill (approx. 50L) during refueling | Low | Spill contained, contaminated soil removed and disposed at licensed facility | Closed | 25-Jan-25 | Generator Yard |
| 2 | 15-Feb-25 | TSF seepage detected at monitoring point SP-3 | Medium | Additional monitoring boreholes installed, seepage collection system activated | WIP | 30-Apr-25 | TSF-1 |
| 3 | 08-Mar-25 | Exceedance of PM10 limit at boundary monitoring station | Medium | Increased water spraying on haul roads, dust suppression measures implemented | Closed | 20-Mar-25 | Mine Boundary |
| 4 | 25-Apr-25 | Cyanide concentration in downstream river above guideline | High | Process water discharge stopped, investigation ongoing, regulatory authority notified | WIP | 31-Jul-25 | Processing Plant |
Description: Quarterly log of environmental incidents including spills, permit exceedances, emissions events, and other environmental non-conformances. Tracks incident severity, response actions, and closure status.
Data Requirements: - Collection frequency: Quarterly (incidents recorded as they occur) - Fields: - NO.: Sequential incident number - Date Reported: Date incident was identified/reported - Incident Description: Description of the environmental incident - Severity: Incident severity level (Low, Medium, High, Critical) - Actions Taken: Response and corrective actions - Status: Current status (Open, WIP, Closed) - Status Date: Target or actual closure date - Site/Area: Location of incident - Severity levels: - Low: Minor, localized impact, no regulatory notification required - Medium: Moderate impact, regulatory notification required, no long-term environmental damage - High: Significant impact, regulatory notification and investigation required, potential long-term environmental damage - Critical: Major impact, regulatory enforcement, significant environmental damage, community impact - Dimensionality: Site-level and Organisation-level - Confidentiality: Environmental incidents classified as CONFIDENTIAL
CSV/XLSX Export Columns:
NO, Date_Reported, Incident_Description, Severity, Actions_Taken, Status, Status_Date, Site_Area, Reporting_Period, Organisation_ID, Site_ID
Export Templates
CSV Export Structure
File Naming Convention: {Organisation}_{ReportType}_{FiscalYear}_{ExportDate}.csv
Example: Eureka_Gold_Environment_Report_FY2025_2026-01-18.csv
Sheet Structure for XLSX: - Sheet 1: G.1 Production (monthly) - Sheet 2: G.2 Materials Consumption (monthly with intensity) - Sheet 3: G.3 Energy Usage (electricity, fuel, generator rate) - Sheet 4: G.4.1-4.3 Water Volumes (abstraction, recycling, consumption) - Sheet 5: G.4.4 Water Quality (quarterly monitoring) - Sheet 6: G.5 Air Emissions (quarterly by area) - Sheet 7: G.6 Non-Mineralised Waste (monthly with disposal methods) - Sheet 8: G.7 Mineralised Waste (monthly) - Sheet 9: G.8 TSF Management (monthly monitoring) - Sheet 10: G.9 Rehabilitation Activities (quarterly log) - Sheet 11: G.10 Environmental Incidents (quarterly log) - Sheet 12: Reference Data (material types, water sources, waste types, quality band definitions)
Column Mapping
| Report Field | Database Column | Transform |
|---|---|---|
| Production Metric | metric_submission.dimensions['production_metric'] | Enum: Crushed Ore, Milled Ore, Gold Produced |
| Material | metric_submission.dimensions['material'] | Enum: Activated Carbon, Cyanide, etc. |
| Energy Source/Use | metric_submission.dimensions['energy_source'] or ['fuel_use'] | Enum values for electricity sources and fuel uses |
| Water Source/Use | metric_submission.dimensions['water_source'] or ['water_use'] | Enum values for abstraction sources and consumption uses |
| Sampling Point | metric_submission.dimensions['sampling_point'] | Master data: Sampling point names |
| Monitoring Area | metric_submission.dimensions['monitoring_area'] | Master data: Air monitoring area names |
| Pollutant | metric_submission.dimensions['pollutant'] | Enum: PM10, SO₂, NO₂, CO |
| Waste Type | metric_submission.dimensions['waste_type'] | Enum values for mineralised and non-mineralised waste |
| Disposal Method | metric_submission.dimensions['disposal_method'] | Enum: Landfill, Recycled, Licensed Facility, etc. |
| TSF Metric | metric_submission.dimensions['tsf_metric'] | Enum: Slurry Density, Freeboard, Surface Area, Rate of Rise |
| Quality Band | Calculated field | Green/Amber/Red based on regulatory thresholds |
| Jan-Dec (months) | metric_submission.value WHERE month=X | Direct, grouped by month |
| Q1-Q4 (quarters) | metric_submission.value WHERE quarter=X | Direct, grouped by quarter |
| Total | Calculated field | Sum of monthly or quarterly values |
| Average | Calculated field | Mean of monthly values |
| Intensity/Specific | Calculated field | Material or energy / Crushed ore |
Validation Rules
G.1 Production: - All values must be non-negative - Monthly data required for each fiscal year month - Total = Sum of monthly values - Average = Total / Count of non-null months - Milled ore should be ≤ Crushed ore (processing losses acceptable)
G.2 Materials Consumption: - All values must be non-negative - Monthly data required - Total = Sum of monthly values - Intensity = Total material / Total crushed ore (from G.1) - Units must be consistent (kg or L as specified)
G.3 Energy Usage: - All values must be non-negative - Monthly data required - Total = Sum of monthly values - Specific consumption = Total energy / Total crushed ore (from G.1) - Generator consumption rate = Diesel for generators / Generator-supplied electricity - Referential check: Generator fuel consumption must align with generator electricity output
G.4 Water: - All volumes must be non-negative - Monthly data required for volumes, quarterly for quality - Total abstraction should approximately equal total consumption + recycled water (accounting for losses/evaporation) - Specific water use = Total water consumed / Total crushed ore (from G.1) - Quality bands: - Green: All parameters within regulatory limits - Amber: 1-2 parameters slightly exceed limits (≤20% exceedance) - Red: ≥3 parameters exceed limits or any parameter >20% exceedance - Non-compliance parameters: List parameters that exceed regulatory limits
G.5 Air Emissions: - All measurements must be non-negative - Quarterly data required - Quality bands based on local air quality standards - Monitoring areas must be from approved master data list
G.6 Non-Mineralised Waste: - All values must be non-negative - Monthly data required - Total = Sum of monthly values - Specific waste = (Total in kg) / Total crushed ore - Disposal method required for each waste type - Hazardous waste must have licensed facility disposal method
G.7 Mineralised Waste: - All values must be non-negative - Monthly data required - Total = Sum of monthly values - Tailings volume should approximately equal milled ore (from G.1) accounting for water content
G.8 TSF Management: - All values must be positive (except where zero is valid) - Monthly data required - Average = Mean of monthly values - Freeboard must be ≥ minimum regulatory requirement (typically ≥0.8m) - Rate of rise must be monitored against design specifications - Surface area should show gradual increase over time
G.9 Rehabilitation Activities: - Date started must be within or before the reporting period - Status transitions: Planned → WIP → Completed (no reverse transitions) - Status date must be ≥ date started - If status is Completed, status date is actual completion date - If status is WIP or Planned, status date is target completion date - Cost must be non-negative
G.10 Environmental Incidents: - Date reported must be within the reporting period - Severity classification required (Low, Medium, High, Critical) - High and Critical incidents require evidence attachment (incident report, investigation report) - Status transitions: Open → WIP → Closed (no reverse transitions) - If status is Closed, actions taken must be documented - Incidents involving regulatory notification must be flagged
Cross-Validation: - Crushed ore (G.1) used as denominator for all intensity calculations (G.2, G.3, G.4, G.6) - Milled ore (G.1) should align with tailings generation (G.7) - Generator fuel consumption (G.3) should align with generator electricity output (G.3) - Water abstracted + recycled (G.4) should balance with water consumed (G.4) + losses - TSF tailings received (G.8) should align with tailings generated (G.7)
Filters & Ordering
Available Filters: - Reporting Period: Fiscal year, quarter (for quarterly metrics), month (for monthly metrics) - Organisation: Select specific organisation or group - Site/Business Unit: Filter to specific site or across multiple sites - Production Metric: Filter G.1 by Crushed Ore, Milled Ore, Gold Produced - Material Type: Filter G.2 by specific consumables - Energy Type: Filter G.3 by electricity or fuel - Water Source/Use: Filter G.4 by abstraction sources or consumption uses - Pollutant: Filter G.5 by PM10, SO₂, NO₂, CO - Waste Type: Filter G.6/G.7 by specific waste categories - Quality Band: Filter G.4/G.5 by Green/Amber/Red compliance status - Incident Severity: Filter G.10 by Low, Medium, High, Critical - Status: Filter G.9/G.10 by Planned, WIP, Completed, Closed
Ordering: - G.1-G.8: By month (Jan → Dec) or quarter (Q1 → Q4) - G.9: By date started (ascending), then by activity number - G.10: By date reported (ascending), then by incident number
Grouping: - Optional grouping by site, production metric, material type, energy type, water source, waste type - Optional aggregation at organisation level for multi-site reporting
Handling Missing Months/Quarters: - If fiscal year is incomplete (e.g., only Jan-Sep data available), Oct-Dec columns should display "-" or "N/A" - Total/Average calculations should sum only available months/quarters - Export metadata should indicate which months/quarters are included in the report
Access Control & Evidence Requirements
Role-Based Access: - Data Collector: Can view and edit environmental metrics for their assigned sites - Environmental Manager: Can view and approve environmental metrics for their organisation - Site Manager: Can view environmental metrics for their site - Org Admin: Can view all environmental metrics across organisation - External Auditor: Read-only access to approved/locked period data
Evidence Requirements by Section: - G.1 Production: Production logs, shift reports, processing plant logs - G.2 Materials: Purchase invoices, stock cards, material consumption logs - G.3 Energy: Utility bills, fuel invoices, meter readings, generator logs - G.4 Water: Water meter readings, laboratory test reports (quality), sampling records - G.5 Air Emissions: Emissions monitoring reports, laboratory analysis certificates, calibration records - G.6 Non-Mineralised Waste: Waste manifests, disposal certificates, recycling receipts - G.7 Mineralised Waste: Tailings deposition logs, waste rock dump surveys - G.8 TSF Management: TSF inspection reports, survey data, freeboard measurements - G.9 Rehabilitation: Rehabilitation completion reports, cost invoices, photographic evidence - G.10 Incidents: MANDATORY - Incident reports, investigation reports, regulatory notifications, corrective action records
Confidentiality: - G.1-G.8: General environmental data classified as INTERNAL (may be disclosed in sustainability reports) - G.9: Rehabilitation activities classified as INTERNAL (costs may be commercially sensitive) - G.10: Environmental incidents classified as CONFIDENTIAL (regulatory and reputational sensitivity) - Evidence attachments containing regulatory correspondence or investigation reports require additional access controls
Community Investment & Development (GRI 203)
Overview
This section defines the output format for the H. Community Investment & Development report (GRI 203), specifically covering H.1 Quarterly CSR/CSIR Activities. This report tracks corporate social responsibility initiatives, budget vs. actual spend, variances, and beneficiary details.
Report Sections
H.1 Quarterly CSR/CSIR Activities
Output Format: Activity Log Table with financial totals
Data Structure:
| Date Carried Out | Description of Initiative | Pillar | Budget (USD) | Actual Investment (USD) | Variance (USD) | Description of Stakeholder(s) Affected | Comments |
|---|---|---|---|---|---|---|---|
| 28-Feb-25 | Muroiwa Primary School Additional Block Construction | Education & Sports | 37,000.00 | 37,000.00 | 0.00 | Muroiwa Primary school and Ministry of Education | CSIR to absorb the adhoc cost. |
| 06-Jun-25 | Community Brick Moulding Project | Social Empowerment | 0.00 | 13,000.00 | 13,000.00 | Host Community | CSIR to absorb the adhoc cost. |
| July - September | Fuel Donations | Donations & Sponsorship | 24,300.00 | 4,518.47 | 19,782.00 | Government Stakeholders | Enabled Eureka Gold Mine and government events / activities |
| TOTAL | 279,130.00 | 235,500.50 | 43,629.50 |
Description: Detailed log of community investment activities, donations, and sponsorships. Tracks financial performance against budget and identifies beneficiaries.
Data Requirements: - Collection Frequency: Quarterly (activities recorded as they occur or aggregated by quarter) - Columns: - Date Carried Out: Specific date (DD-MMM-YY) OR date range label (e.g., "July - September") if activity spans a period. - Description: Details of the initiative. - Pillar: Category of investment (e.g., Education & Sports, Social Empowerment, Community Development, Donations & Sponsorship, Other). - Budget: Planned expenditure (in report currency). Optional (can be 0.00 if unbudgeted). - Actual Investment: Actual expenditure (in report currency). - Variance: Calculated as (Budget - Actual) or (Actual - Budget) depending on financial view. Standard spec: Budget - Actual (Positive = Under Budget, Negative = Over Budget) OR Actual - Budget (Positive = Over Budget). - Note based on Source Report: Source shows Variance = Actual - Budget (e.g., Budget 0, Actual 13000 -> Variance 13000). But also shows Budget 50k, Actual 2950 -> Variance -47050. This implies Variance = Actual - Budget. - Stakeholder(s) Affected: Beneficiaries or partners. - Comments: Remarks, justifications, or internal notes. - Totals: Sum of Budget, Actual, and Variance columns at the bottom.
CSV/XLSX Export Columns:
Date_Carried_Out, Description_Of_Initiative, Pillar, Budget, Actual_Investment, Variance, Currency, Description_Of_Stakeholders_Affected, Comments, Reporting_Period, Organisation_ID, Site_ID
Export Templates
CSV Export Structure
File Naming Convention: {Organisation}_Community_Investment_{FiscalYear}_{ExportDate}.csv
Example: Eureka_Gold_Community_Investment_FY2025_2026-01-19.csv
Sheet Structure for XLSX: - Sheet 1: H.1 Quarterly CSR Activities - Sheet 2: Reference Data (Pillars, Stakeholder Categories)
Column Mapping
| Report Field | Database Column | Transform |
|---|---|---|
| Date Carried Out | activity.start_date, activity.end_date | If start==end: DD-MMM-YY. If start!=end: "Month - Month" or "DD-MMM - DD-MMM" label based on logic. |
| Description of Initiative | activity.description | Direct |
| Pillar | activity.pillar | Enum: Education & Sports, Social Empowerment, Community Development, Donations & Sponsorship, Other |
| Budget | activity.budget_amount | Direct (Decimal) |
| Actual Investment | activity.actual_amount | Direct (Decimal) |
| Variance | Calculated | Actual - Budget |
| Description of Stakeholder(s) Affected | activity.beneficiaries | Direct |
| Comments | activity.comments | Direct |
| Currency | activity.currency_code | ISO Code (e.g., ZWD, USD). Report generation uses this to format values or convert if rate provided. |
Example Output (CSV Snippet)
Date_Carried_Out,Description_Of_Initiative,Pillar,Budget,Actual_Investment,Variance,Currency,Description_Of_Stakeholders_Affected,Comments,Reporting_Period,Organisation_ID,Site_ID
28-Feb-25,"Muroiwa Primary School Additional Block Construction","Education & Sports",37000.00,37000.00,0.00,USD,"Muroiwa Primary school and Ministry of Education","CSIR to absorb the adhoc cost.","Q1 2025","ORG-001","SITE-001"
06-Jun-25,"Community Brick Moulding Project","Social Empowerment",0.00,13000.00,13000.00,USD,"Host Community","CSIR to absorb the adhoc cost.","Q2 2025","ORG-001","SITE-001"
"July - September","Fuel Donations","Donations & Sponsorship",24300.00,4518.47,-19781.53,USD,"Government Stakeholders","Enabled Eureka Gold Mine and government events / activities","Q3 2025","ORG-001","SITE-001"
Validation Rules
H.1 Community Investment: - Date Logic: Activity dates must fall within the reporting period. - Currency: All amounts in the export should ideally be normalized to a single reporting currency (e.g., USD) OR the export must explicitly state the currency per row. Source report implies mixed or single currency display. - Totals: Total rows must sum the numeric values of the column. - Variance: Must be automatically calculated to ensure arithmetic correctness. - Mandatory Fields: Description, Pillar, Actual Investment, Stakeholder Description. - Budget: Optional (defaults to 0.00 if missing).
Filters & Ordering
Available Filters: - Reporting Period: Fiscal year, quarter - Organisation: Select specific organisation or group - Site/Business Unit: Filter to specific site or across multiple sites - Pillar: Filter by investment category (Education & Sports, Social Empowerment, etc.) - Currency: Filter by currency code (e.g., ZWD, USD)
Ordering: - By Date Carried Out (ascending)
Grouping: - Optional grouping by Pillar, Site, or Quarter (if annual rollup)
Access Control & Evidence Requirements
Role-Based Access: - Data Collector: Can view and edit CSR activities for their assigned sites. - CSR Manager: Can view and approve CSR reports. - Org Admin: Can view all CSR data.
Evidence Requirements: - Financial: Invoices, receipts, proof of payment (MANDATORY for Actual > 0). - Non-Financial: Acknowledgement letters, photos of handover/event, MOUs (RECOMMENDED). - Confidentiality: Beneficiary PII (individual names) should be minimized; use group names (e.g., "Muroiwa Primary School") where possible.
Related Documentation
- Collection Template: COMMUNITY_INVESTMENT_LOG_V1
- Data Model: Community Investment Activities
- Validation Rules: Community Investment Validation
- API Reference: Community Investment API
Cross-References
Change Log
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0 | 2026-01-03 | Senior Product Architect | Initial reporting outputs specification |
| 1.1 | 2026-01-17 | Ralph (Autonomous Agent) | Added stakeholder engagement reporting (GRI 2-29, 2-30, Grievance Mechanism) |
| 1.2 | 2026-01-17 | Ralph (Autonomous Agent) | Added human capital reporting (GRI 405-1, GRI 401, Employee Age) with E.1, E.2, E.3 table schemas |
| 1.3 | 2026-01-18 | Ralph (Autonomous Agent) | Added OHS report type and sections F.1 (Quarterly Incident Statistics) and F.2 (LTI Days and LTIFR) with GRI 403-9/403-10 mapping |
| 1.4 | 2026-01-18 | Ralph (Autonomous Agent) | Added Environment report type and sections G.1-G.10 (Production, Materials, Energy, Water, Air Emissions, Waste, TSF, Rehabilitation, Incidents) with GRI 301-307 mapping |
| 1.5 | 2026-01-19 | Ralph (Autonomous Agent) | Added Community Investment report type and section H.1 (Quarterly CSR/CSIR Activities) with GRI 203 mapping |
| 1.6 | 2026-01-21 | Ralph (Autonomous Agent) | Added example export and cross-references for Community Investment |