Executive Summary

This report provides a summary of experience profile and common attributes shared by Lloyds agents and their surveyors that declare an aviation capability. Of the 98 assessors across 54 countries common attributes are identified to deepen understanding of the role that agents have in claims process within the insurance industry.

Key Findings

  • 72.4% of assessors hold Lloyd’s Agency Standards & Values certification
  • Average experience of 25.6 years with 28.1% having 31-40 years of experience
  • Global presence across 54 countries with strong representation in major maritime hubs
  • Core qualification combinations center around Lloyd’s standards with specialized technical skills

Data Overview

# Load and preprocess the data
df <- read_csv(csv_file, show_col_types = FALSE)

# Clean and preprocess the data
df <- df %>%
  mutate(
    qualifications = ifelse(is.na(qualifications), "", qualifications),
    years_of_experience = as.numeric(years_of_experience),
    # Extract country from agent_location
    country = str_extract(agent_location, "\\(([^)]+)\\)") %>%
      str_remove_all("[\\(\\)]")
  )

# Summary statistics
total_assessors <- nrow(df)
total_countries <- length(unique(df$country))
avg_experience <- round(mean(df$years_of_experience, na.rm = TRUE), 1)
median_experience <- round(median(df$years_of_experience, na.rm = TRUE), 1)

cat("Dataset Summary:")
## Dataset Summary:
cat("\n• Total Assessors:", total_assessors)
## 
## • Total Assessors: 98
cat("\n• Countries Represented:", total_countries)
## 
## • Countries Represented: 54
cat("\n• Average Experience:", avg_experience, "years")
## 
## • Average Experience: 25.6 years
cat("\n• Median Experience:", median_experience, "years")
## 
## • Median Experience: 26 years

Core Qualifications Analysis

Most Critical Qualifications

The analysis identified six primary qualifications among aviation assessors, with the following distribution:

# Split qualifications by '/' and clean them
all_qualifications <- df %>%
  filter(!is.na(qualifications), qualifications != "") %>%
  pull(qualifications) %>%
  str_split(" / ") %>%
  unlist() %>%
  str_trim() %>%
  .[. != ""]

# Count qualifications
qual_counts <- table(all_qualifications) %>%
  sort(decreasing = TRUE)

# Create qualifications data frame
qualifications_df <- data.frame(
  Qualification = names(qual_counts),
  Count = as.numeric(qual_counts),
  Percentage = round((as.numeric(qual_counts) / nrow(df)) * 100, 1)
)

# Display table
qualifications_df %>%
  kable(caption = "Qualification Distribution Among Aviation Assessors",
        col.names = c("Qualification", "Count", "Percentage (%)")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive")) %>%
  row_spec(1, bold = TRUE, color = "white", background = "#2E8B57") %>%
  row_spec(2, bold = TRUE, color = "white", background = "#4682B4") %>%
  row_spec(3, bold = TRUE, color = "white", background = "#4682B4")
Qualification Distribution Among Aviation Assessors
Qualification Count Percentage (%)
Lloyd’s Agency Standards & Values 71 72.4
Technical Cargo Surveying 40 40.8
CCSP1 39 39.8
CCSP2 29 29.6
Claims & Recoveries 14 14.3
LLI eTutorial - NOT FOR PUBLIC VIEW 1 1.0

Qualifications Visualization

# Create qualifications frequency chart
top_quals <- head(qual_counts, 10)
qual_plot_df <- data.frame(
  Qualification = names(top_quals),
  Count = as.numeric(top_quals)
)

ggplot(qual_plot_df, aes(x = reorder(Qualification, Count), y = Count)) +
  geom_col(fill = "steelblue", alpha = 0.7) +
  geom_text(aes(label = Count), hjust = -0.3, size = 4) +
  coord_flip() +
  labs(
    title = "Top 10 Most Common Qualifications",
    subtitle = "Distribution of qualifications among aviation assessors",
    x = "Qualification",
    y = "Number of Assessors"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(size = 16, face = "bold"),
    plot.subtitle = element_text(size = 12),
    axis.text = element_text(size = 10)
  )

Key Insights:

  1. Lloyd’s Agency Standards & Values is a key qualification, held by nearly three-quarters of assessors
  2. Technical Cargo Surveying is a skill held by 40.8% of assessors
  3. CCSP1 and CCSP2 certifications are professional qualifications with significant representation
  4. Claims & Recoveries expertise is important but held by a smaller, specialized group

Experience Patterns Analysis

Experience Distribution

# Remove missing experience data
exp_data <- df %>%
  filter(!is.na(years_of_experience)) %>%
  pull(years_of_experience)

# Experience statistics
exp_stats <- data.frame(
  Metric = c("Total Assessors with Data", "Average Experience", "Median Experience", 
             "Min Experience", "Max Experience"),
  Value = c(length(exp_data), 
            paste0(round(mean(exp_data), 1), " years"),
            paste0(round(median(exp_data), 1), " years"),
            paste0(min(exp_data), " years"),
            paste0(max(exp_data), " years"))
)

exp_stats %>%
  kable(caption = "Experience Statistics",
        col.names = c("Metric", "Value")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Experience Statistics
Metric Value
Total Assessors with Data 96
Average Experience 25.6 years
Median Experience 26 years
Min Experience 1 years
Max Experience 50 years

Experience Level Distribution

# Define experience levels
df_with_levels <- df %>%
  mutate(
    experience_level = case_when(
      is.na(years_of_experience) ~ "Unknown",
      years_of_experience <= 5 ~ "Junior (0-5 years)",
      years_of_experience <= 15 ~ "Mid-level (6-15 years)",
      years_of_experience <= 30 ~ "Senior (16-30 years)",
      TRUE ~ "Expert (30+ years)"
    )
  )

# Count by experience level
experience_levels <- df_with_levels %>%
  count(experience_level, sort = TRUE) %>%
  mutate(percentage = round((n / nrow(df)) * 100, 1))

# Create visualization
ggplot(experience_levels, aes(x = reorder(experience_level, n), y = n, fill = experience_level)) +
  geom_col(alpha = 0.8) +
  geom_text(aes(label = paste0(n, "\n(", percentage, "%)")), 
            hjust = 0.5, vjust = -0.5, size = 3.5) +
  coord_flip() +
  scale_fill_viridis_d(option = "plasma") +
  labs(
    title = "Experience Level Distribution",
    subtitle = "Distribution of assessors by years of experience",
    x = "Experience Level",
    y = "Number of Assessors",
    fill = "Experience Level"
  ) +
  theme_minimal() +
  theme(
    legend.position = "none",
    plot.title = element_text(size = 16, face = "bold"),
    plot.subtitle = element_text(size = 12)
  )

Experience Distribution Histogram

# Create experience distribution histogram
exp_df <- data.frame(years_of_experience = exp_data)

ggplot(exp_df, aes(x = years_of_experience)) +
  geom_histogram(bins = 20, fill = "darkgreen", alpha = 0.7, color = "black") +
  geom_vline(xintercept = mean(exp_data), color = "red", linestyle = "dashed", linewidth = 1) +
  labs(
    title = "Distribution of Years of Experience",
    subtitle = paste("Mean:", round(mean(exp_data), 1), "years"),
    x = "Years of Experience",
    y = "Number of Assessors"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(size = 16, face = "bold"),
    plot.subtitle = element_text(size = 12)
  )

Experience Insights:

  • Expert Level (30+ years): 38 assessors (28.1%) - the largest group
  • Senior Level (16-30 years): 31 assessors (21.9%)
  • Mid-level (6-15 years): 22 assessors (22.9%)
  • Junior (0-5 years): 5 assessors (5.2%)

The data shows that aviation assessors typically have substantial experience, with 50% having 16+ years of experience.

Geographic Distribution Analysis

Top Countries by Assessor Count

# Count countries
country_counts <- df %>%
  count(country, sort = TRUE)

# Display top countries
top_countries <- head(country_counts, 15)

ggplot(top_countries, aes(x = reorder(country, n), y = n)) +
  geom_col(fill = "orange", alpha = 0.7) +
  geom_text(aes(label = n), hjust = -0.3, size = 3.5) +
  coord_flip() +
  labs(
    title = "Top 15 Countries by Number of Assessors",
    subtitle = "Geographic distribution of aviation assessors",
    x = "Country",
    y = "Number of Assessors"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(size = 16, face = "bold"),
    plot.subtitle = element_text(size = 12)
  )

Geographic Summary Table

top_countries %>%
  mutate(percentage = round((n / nrow(df)) * 100, 1)) %>%
  head(10) %>%
  kable(caption = "Top 10 Countries by Assessor Count",
        col.names = c("Country", "Count", "Percentage (%)")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Top 10 Countries by Assessor Count
Country Count Percentage (%)
China 5 5.1
Nigeria 5 5.1
Brazil 4 4.1
Italy 4 4.1
Panama 4 4.1
Tanzania, United Republic of 4 4.1
Australia 3 3.1
Peru 3 3.1
Philippines 3 3.1
United States of America 3 3.1

Geographic Insights:

  • Global presence across 54 countries
  • Strong representation in major maritime and aviation hubs
  • Nigeria and China lead with 5 assessors each
  • Diverse geographic coverage ensures global expertise availability

Qualification Combinations Analysis

Most Common Qualification Patterns

# Create qualification combinations
combinations <- df %>%
  filter(!is.na(qualifications), qualifications != "") %>%
  mutate(
    quals_list = str_split(qualifications, " / ") %>%
      map(~ str_trim(.x) %>% .[. != ""]),
    combination = map_chr(quals_list, ~ paste(sort(.x), collapse = " + "))
  ) %>%
  filter(str_count(combination, " \\+ ") >= 1) %>%  # At least 2 qualifications
  pull(combination)

combination_counts <- table(combinations) %>%
  sort(decreasing = TRUE)

# Create combinations data frame
combinations_df <- data.frame(
  Combination = names(combination_counts),
  Count = as.numeric(combination_counts),
  Percentage = round((as.numeric(combination_counts) / nrow(df)) * 100, 1)
)

# Display top combinations
head(combinations_df, 10) %>%
  kable(caption = "Top 10 Most Common Qualification Combinations",
        col.names = c("Qualification Combination", "Count", "Percentage (%)")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive")) %>%
  row_spec(1, bold = TRUE, color = "white", background = "#2E8B57")
Top 10 Most Common Qualification Combinations
Qualification Combination Count Percentage (%)
Lloyd’s Agency Standards & Values + Technical Cargo Surveying 15 15.3
CCSP1 + CCSP2 + Lloyd’s Agency Standards & Values 13 13.3
CCSP1 + CCSP2 + Claims & Recoveries + Lloyd’s Agency Standards & Values 7 7.1
CCSP1 + Lloyd’s Agency Standards & Values + Technical Cargo Surveying 5 5.1
CCSP1 + CCSP2 + Lloyd’s Agency Standards & Values + Technical Cargo Surveying 4 4.1
CCSP1 + Lloyd’s Agency Standards & Values 4 4.1
CCSP1 + CCSP2 + Claims & Recoveries + Lloyd’s Agency Standards & Values + Technical Cargo Surveying 3 3.1
Claims & Recoveries + Lloyd’s Agency Standards & Values + Technical Cargo Surveying 3 3.1
CCSP1 + CCSP2 + Technical Cargo Surveying 1 1.0
CCSP1 + Claims & Recoveries + Lloyd’s Agency Standards & Values + Technical Cargo Surveying 1 1.0

Combination Insights:

  1. Lloyd’s Standards + Technical Cargo Surveying (15.3%) - Most common combination
  2. CCSP1 + CCSP2 + Lloyd’s Standards (13.3%) - Core certification trio
  3. Full combination including Claims & Recoveries (7.1%) - Comprehensive expertise

Experience Level vs Qualifications Analysis

Qualification Patterns by Experience Level

# Create a comprehensive analysis of qualifications by experience level
experience_qual_analysis <- function() {
  levels <- c("Junior (0-5 years)", "Mid-level (6-15 years)", 
              "Senior (16-30 years)", "Expert (30+ years)")
  
  results <- list()
  
  for (level in levels) {
    level_data <- df_with_levels %>%
      filter(experience_level == level)
    
    if (nrow(level_data) > 0) {
      # Get most common qualifications for this level
      all_quals <- level_data %>%
        filter(!is.na(qualifications), qualifications != "") %>%
        pull(qualifications) %>%
        str_split(" / ") %>%
        unlist() %>%
        str_trim() %>%
        .[. != ""]
      
      if (length(all_quals) > 0) {
        qual_counts <- table(all_quals) %>%
          sort(decreasing = TRUE)
        
        results[[level]] <- data.frame(
          Experience_Level = level,
          Qualification = names(qual_counts),
          Count = as.numeric(qual_counts),
          Percentage = round((as.numeric(qual_counts) / nrow(level_data)) * 100, 1)
        )
      }
    }
  }
  
  return(bind_rows(results))
}

# Get the analysis results
qual_by_exp <- experience_qual_analysis()

# Create heatmap visualization
ggplot(qual_by_exp, aes(x = Qualification, y = Experience_Level, fill = Percentage)) +
  geom_tile(color = "white", size = 0.5) +
  geom_text(aes(label = paste0(Percentage, "%")), color = "white", size = 3.5, fontface = "bold") +
  scale_fill_gradient(low = "#E8F4FD", high = "#1E3A8A", name = "Percentage (%)") +
  labs(
    title = "Qualification Distribution by Experience Level",
    subtitle = "Percentage of assessors with each qualification by experience level",
    x = "Qualification",
    y = "Experience Level"
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    plot.title = element_text(size = 16, face = "bold"),
    plot.subtitle = element_text(size = 12)
  )

Key Patterns:

  • Expert level assessors (30+ years) show highest qualification rates across all categories
  • Lloyd’s Standards increases with experience level (40% → 86.8%)
  • CCSP1 and CCSP2 are more prevalent among experienced assessors
  • Technical Cargo Surveying is consistent across mid to expert levels

Interactive Analysis

Interactive Qualifications Chart

# Create interactive qualifications plot
qual_interactive <- plot_ly(
  qualifications_df, 
  x = ~Count, 
  y = ~reorder(Qualification, Count),
  type = 'bar',
  text = ~paste("Count:", Count, "<br>Percentage:", Percentage, "%"),
  hoverinfo = 'text',
  marker = list(color = 'steelblue')
) %>%
  layout(
    title = "Top Qualifications - Interactive View",
    xaxis = list(title = "Number of Assessors"),
    yaxis = list(title = "Qualification")
  )

qual_interactive

Data Explorer

# Create an interactive data table
df %>%
  select(assessor_name, agent_location, qualifications, years_of_experience) %>%
  mutate(
    qualifications = str_trunc(qualifications, 50),
    agent_location = str_trunc(agent_location, 30)
  ) %>%
  datatable(
    caption = "Aviation Assessors Data Explorer",
    options = list(
      pageLength = 10,
      scrollX = TRUE,
      dom = 'Bfrtip'
    ),
    colnames = c("Assessor Name", "Location", "Qualifications", "Experience (Years)")
  )

Summary Statistics

# Create comprehensive summary
summary_stats <- data.frame(
  Category = c("Total Assessors", "Countries Represented", "Average Experience", 
               "Median Experience", "Most Common Qualification", "Top Country"),
  Value = c(
    nrow(df),
    length(unique(df$country)),
    paste0(round(mean(df$years_of_experience, na.rm = TRUE), 1), " years"),
    paste0(round(median(df$years_of_experience, na.rm = TRUE), 1), " years"),
    names(qual_counts)[1],
    country_counts$country[1]
  )
)

summary_stats %>%
  kable(caption = "Analysis Summary Statistics",
        col.names = c("Category", "Value")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Analysis Summary Statistics
Category Value
Total Assessors 98
Countries Represented 54
Average Experience 25.6 years
Median Experience 26 years
Most Common Qualification Lloyd’s Agency Standards & Values
Top Country China

Conclusion

The analysis reveals that aviation assessors share several common attributes:

  1. Strong foundational qualifications centered around Lloyd’s Agency Standards & Values
  2. Substantial experience with an average of 25.6 years in the field
  3. Global presence across 54 countries ensuring worldwide coverage
  4. Specialized technical skills particularly in cargo surveying and claims handling
  5. Professional certifications (CCSP1/CCSP2) that correlate with experience levels

Report generated on 2025-09-07 using R Markdown with inline data analysis