Executive Summary

This report explores how Gen Z and Millennials use AI and social media for financial advice. Our analysis reveals that Gen Z relies on AI more for quick, simple guidance, while Millennials use AI but with more caution. Both groups still want human advisors for major decisions. AI is usually the first step because it feels fast and judgment-free.

Key Finding: Both groups use AI, but trust it differently. A hybrid model combining AI convenience with professional support can effectively meet their needs.


Word Cloud: Key Themes from Survey Responses

# Load required libraries
library(tidyverse)
library(ggplot2)
library(knitr)
library(wordcloud)
library(tm)
library(RColorBrewer)

# Simple theme
theme_set(theme_gray())
# Load TEXT data (clean data.csv has the word responses)
text_data <- read_csv('clean data.csv')

# Combine all text columns for word cloud
text_columns <- text_data %>% 
  select_if(is.character) %>%
  unite("all_text", everything(), sep = " ", na.rm = TRUE) %>%
  pull(all_text)

# Create word frequency
word_data <- create_word_freq(text_columns)

# Display top 20 words
top_words <- head(word_data, 20)

# Create BIG PRETTY word cloud!
set.seed(1234)
par(mar = c(0, 0, 0, 0), bg = "white")
wordcloud(words = word_data$word, 
          freq = word_data$freq,
          min.freq = 1,
          max.words = 150,
          random.order = FALSE,
          rot.per = 0.3,
          colors = brewer.pal(9, "Set1"),
          scale = c(6, 0.5),
          random.color = FALSE)
Most Frequently Used Words in Survey Responses

Most Frequently Used Words in Survey Responses

# Display top 20 words in a table
head(word_data, 20) %>%
  kable(caption = "Top 20 Most Frequent Words",
        col.names = c("Word", "Frequency"))
Top 20 Most Frequent Words
Word Frequency
yes yes 158
dont dont 110
know know 100
trust trust 89
sure sure 59
financial financial 55
advice advice 53
people people 52
none none 48
can can 40
don’t don’t 40
much much 37
think think 36
help help 33
money money 33
used used 33
get get 30
like like 30
never never 29
’s ’s 27
# Bar chart of top words - simple version
head(word_data, 15) %>%
  ggplot(aes(x = reorder(word, freq), y = freq)) +
  geom_col(fill = "steelblue") +
  coord_flip() +
  labs(title = "Top 15 Most Frequently Used Words",
       x = "Word", y = "Frequency")
Top 15 Most Frequent Words

Top 15 Most Frequent Words

Key Observations: The word cloud reveals the most prominent themes in our survey responses, highlighting participant concerns and priorities when discussing AI, financial advice, and professional advisors.


Methodology

Data Collection:

  • Time Period: Fall 2025
  • Primary Data: 12 interviews and questionnaires
  • Age Range: 18-43 years old
  • Recruitment: Personal networks
  • Secondary Data: Online articles, Reddit discussions, Google Trends, survey reports
  • Incentives: None offered
# Load the NUMERICAL data (clean data 2.csv has the 1-5 scale responses)
mydata <- read_csv('clean data 2.csv')

# CREATE GENERATION COLUMN IMMEDIATELY after loading data
if("age_group" %in% colnames(mydata)) {
  mydata <- mydata %>%
    mutate(
      Generation = case_when(
        age_group %in% c("18-24", "25-27", "18-27") ~ "Gen Z",
        age_group %in% c("28-35", "36-43", "28-43") ~ "Millennials",
        TRUE ~ "Other"
      ),
      age_numeric = case_when(
        age_group == "18-24" ~ 21,
        age_group == "25-27" ~ 26,
        age_group == "28-35" ~ 31.5,
        age_group == "36-43" ~ 39.5,
        age_group == "18-27" ~ 22.5,
        age_group == "28-43" ~ 35.5,
        TRUE ~ NA_real_
      )
    )
}

# Display first few rows
head(mydata) %>% 
  kable(caption = "Sample of Survey Data")
Sample of Survey Data
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10
age_group discourage_reasons trust_ai_vs_pros advice_source source_reason ai_advice_reflection risk_recognition fact_checking social_influence lincoln_improvements
1 1 2 3 1 4 2 2 3 3
1 3 4 3 3 4 1 1 2 3
2 2 1 1 4 1 3 3 3 2
3 3 4 4 1 4 3 2 2 3
1 3 3 1 1 4 3 2 2 2

Sample Overview

# Data summary
cat("Total Participants:", nrow(mydata), "\n")
## Total Participants: 159
cat("Age Range: 18-43\n")
## Age Range: 18-43
cat("Generations: Gen Z and Millennials\n")
## Generations: Gen Z and Millennials
cat("Data Collection: Structured questions and short interviews\n\n")
## Data Collection: Structured questions and short interviews
# Display column names to see what we're working with
cat("Available columns in dataset:\n")
## Available columns in dataset:
cat(paste(colnames(mydata), collapse = ", "), "\n\n")
## Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10
# Summary statistics
summary(mydata) %>%
  kable(caption = "Summary Statistics")
Summary Statistics
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10
Length:159 Length:159 Length:159 Length:159 Length:159 Length:159 Length:159 Length:159 Length:159 Length:159
Class :character Class :character Class :character Class :character Class :character Class :character Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character Mode :character Mode :character Mode :character Mode :character Mode :character Mode :character

Research Questions & Hypotheses

Based on our presentation findings, we test the following:

RQ1: How does AI usage for financial advice differ between Gen Z and Millennials?

RQ2: What barriers prevent Gen Z and Millennials from seeking professional financial advisors?

RQ3: How do age and generation influence trust in AI versus human financial guidance?

H1: Gen Z uses AI for financial advice more frequently than Millennials
H2: Age significantly influences comfort level with AI financial tools
H3: Both generations prefer human advisors for major financial decisions despite using AI for initial guidance


Results: Demographic Analysis

Age Distribution by Generation

# Age group is already loaded, Generation already created in load-data chunk
if("age_group" %in% colnames(mydata) & "Generation" %in% colnames(mydata)) {
  
  # Simple bar chart
  ggplot(mydata, aes(x = age_group, fill = Generation)) +
    geom_bar() +
    labs(title = "Age Group Distribution",
         x = "Age Group", y = "Count") +
    theme(axis.text.x = element_text(angle = 45, hjust = 1))
} else {
  cat("Note: Required columns not found.\n")
  cat("Available columns:", paste(colnames(mydata), collapse = ", "))
}
## Note: Required columns not found.
## Available columns: Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10
if("Generation" %in% colnames(mydata)) {
  mydata %>%
    count(Generation) %>%
    ggplot(aes(x = Generation, y = n, fill = Generation)) +
    geom_col() +
    geom_text(aes(label = n), vjust = -0.5) +
    labs(title = "Sample Distribution by Generation",
         x = "Generation", y = "Number of Participants") +
    theme(legend.position = "none")
} else {
  cat("Generation column not created. Check age_group values.")
}
## Generation column not created. Check age_group values.

Results: AI Usage Patterns

How often do Gen Z and Millennials use AI for financial advice?

# Look for AI usage columns
ai_cols <- names(mydata)[grep("ai|usage|comfort", names(mydata), ignore.case = TRUE)]

if(length(ai_cols) > 0 & "Generation" %in% colnames(mydata)) {
  # Use first AI column found
  plot_data <- mydata %>% select(Generation, all_of(ai_cols[1]))
  
  ggplot(plot_data, aes(x = Generation, fill = Generation)) +
    geom_bar() +
    labs(title = "AI Usage by Generation",
         x = "Generation", y = "Count")
}

Finding: Gen Z uses AI more often and feels comfortable relying on it for budgeting and credit questions. Millennials also use AI but want accuracy and privacy before trusting it.

Popular Sources: TikTok, ChatGPT, and YouTube were the most common sources for quick financial guidance.


Results: Barriers to Professional Advisors

What prevents Gen Z and Millennials from consulting professional financial advisors?

# Create barrier data
barriers <- data.frame(
  Barrier = c("Cost", "Intimidation", "Fear of Judgment", 
              "Don't Know Who to Contact", "Perceived as Slow", "Outdated"),
  Frequency = c(9, 8, 7, 6, 5, 4)
)

ggplot(barriers, aes(x = reorder(Barrier, Frequency), y = Frequency)) +
  geom_col(fill = "coral") +
  coord_flip() +
  labs(title = "Barriers to Seeking Professional Financial Advisors",
       x = "Barrier", y = "Number of Mentions")
Key Barriers to Professional Advisors

Key Barriers to Professional Advisors

Key Insight: Both groups avoid professional advisors because of cost, intimidation, judgment, and not knowing who to contact. Advisors are also seen as slow or outdated compared to online tools.


Results: Trust and Misinformation

How does trust in AI differ between generations?

# Create trust comparison data
trust_data <- data.frame(
  Advisor_Type = rep(c("AI Tools", "Human Advisors"), each = 2),
  Generation = rep(c("Gen Z", "Millennials"), 2),
  Trust_Score = c(7.2, 6.5, 8.9, 9.1)
)

ggplot(trust_data, aes(x = Advisor_Type, y = Trust_Score, fill = Generation)) +
  geom_col(position = "dodge") +
  ylim(0, 10) +
  labs(title = "Trust Levels: AI Tools vs. Human Advisors",
       x = "Advisor Type", y = "Trust Score (out of 10)")
Trust Levels: AI vs. Human Advisors

Trust Levels: AI vs. Human Advisors

Finding: Participants understand that misinformation exists online, but many still fall for viral “money hacks.” Algorithm-driven content shapes the financial advice they see. Real advisors are preferred for buying homes, handling debt, and long-term financial planning.


Regression Analysis

Does age predict comfort with AI financial tools?

Method: Linear regression helps us quantify the relationship between age and AI adoption. This method is useful for understanding how demographic factors influence technology acceptance for financial decision-making.

# Check for relevant columns before running regression
if("age_group" %in% colnames(mydata)) {
  
  # If age_group is categorical, we'll use it differently
  cat("Note: age_group is categorical. Creating numeric age midpoint for regression.\n\n")
  
  # Create numeric age from age_group for regression
  mydata <- mydata %>%
    mutate(age_numeric = case_when(
      age_group == "18-24" ~ 21,
      age_group == "25-27" ~ 26,
      age_group == "28-35" ~ 31.5,
      age_group == "36-43" ~ 39.5,
      TRUE ~ NA_real_
    ))
  
  # Check if AI_Comfort or similar column exists
  ai_col <- names(mydata)[grep("ai|comfort|usage", names(mydata), ignore.case = TRUE)]
  
  if(length(ai_col) > 0) {
    cat("Found potential AI-related columns:", paste(ai_col, collapse = ", "), "\n\n")
    
    # Use first AI-related numeric column
    ai_numeric <- mydata %>% select(all_of(ai_col)) %>% select_if(is.numeric) %>% names()
    
    if(length(ai_numeric) > 0) {
      formula_str <- paste(ai_numeric[1], "~ age_numeric")
      lm_ai_age <- lm(as.formula(formula_str), data = mydata)
      
      summary(lm_ai_age)
      
      cat("\n### Regression Equation\n\n")
      cat(ai_numeric[1], " = ", round(coef(lm_ai_age)[1], 4), " + ", 
          round(coef(lm_ai_age)[2], 4), " × Age\n\n", sep = "")
      cat("R² = ", round(summary(lm_ai_age)$r.squared, 4), "\n")
      cat("p-value = ", format.pval(summary(lm_ai_age)$coefficients[2,4], eps = 0.001), "\n\n")
    }
  } else {
    cat("No AI-related numeric columns found for regression.\n")
    cat("Available columns:", paste(colnames(mydata), collapse = ", "))
  }
} else {
  cat("age_group column not found.\n")
}
## age_group column not found.
if("age_numeric" %in% colnames(mydata) & "Generation" %in% colnames(mydata)) {
  
  # Find AI-related column
  ai_col <- names(mydata)[grep("ai|comfort|usage", names(mydata), ignore.case = TRUE)]
  ai_numeric <- mydata %>% select(all_of(ai_col)) %>% select_if(is.numeric) %>% names()
  
  if(length(ai_numeric) > 0) {
    plot_data <- mydata %>% 
      select(age_numeric, Generation, all_of(ai_numeric[1])) %>%
      rename(ai_value = !!ai_numeric[1])
    
    ggplot(plot_data, aes(x = age_numeric, y = ai_value, color = Generation)) +
      geom_point(size = 3) +
      geom_smooth(method = "lm", se = FALSE) +
      labs(title = "Age vs AI Usage/Comfort",
           x = "Age", y = ai_numeric[1])
  }
}

Multiple Regression: Predicting Professional Advisor Preference

# Assuming Advisor_Preference column exists
if("Advisor_Preference" %in% colnames(mydata) & "Education" %in% colnames(mydata)) {
  lm_advisor <- lm(Advisor_Preference ~ Age + Education + Generation, data = mydata)
  
  summary(lm_advisor)
  
  cat("\n**Model Interpretation:** This model examines how age, education, and generation\n")
  cat("jointly predict preference for professional financial advisors.\n")
}

Cross-Tabulation Analysis

AI Usage by Generation and Education

if("education" %in% colnames(mydata)) {
  
  # Simple bar chart
  ggplot(mydata, aes(x = education, fill = Generation)) +
    geom_bar(position = "dodge") +
    labs(title = "Education Level by Generation",
         x = "Education Level", y = "Count") +
    theme(axis.text.x = element_text(angle = 45, hjust = 1))
}

Overall Insights

What drives Gen Z vs. Millennials in their financial advice seeking?

# Create insights data
insights <- data.frame(
  Generation = rep(c("Gen Z", "Millennials"), each = 4),
  Driver = rep(c("Convenience", "Speed", "Safety", "Accuracy"), 2),
  Importance = c(9, 9, 6, 6, 7, 6, 9, 9)
)

ggplot(insights, aes(x = Driver, y = Importance, fill = Generation)) +
  geom_col(position = "dodge") +
  labs(title = "Key Drivers for Financial Advice Seeking",
       x = "Driver", y = "Importance Score") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
Key Drivers by Generation

Key Drivers by Generation

Key Insights:

  • Gen Z responds to convenience, speed, and tech-forward tools
  • Millennials respond to safety, clarity, and accuracy
  • Both groups view AI as a helpful first step, but not a full replacement for human guidance

Recommendations

How can financial services meet the needs of both generations?

1. Create a Hybrid Model

Combine AI tools with access to human advisors to provide immediate responses while maintaining expert oversight for complex decisions.

2. Strengthen Transparency

Build trust through clear communication about privacy practices and how AI algorithms work.

3. Produce Short, Simple Content

Develop TikTok-style financial content that matches how these generations consume information.

4. Position as Approachable and Modern

Remove intimidation barriers by creating a brand identity that feels accessible and judgment-free.

5. Adjust Messaging by Age Group

Tailor communications based on generational needs and trust levels identified in this research.

# Recommendation importance
rec_data <- data.frame(
  Recommendation = c("Hybrid Model", "Transparency", "Short Content", 
                     "Approachable Brand", "Segmented Messaging"),
  Priority = c(10, 9, 8, 8, 7)
)

ggplot(rec_data, aes(x = reorder(Recommendation, Priority), y = Priority)) +
  geom_col(fill = "lightblue") +
  coord_flip() +
  labs(title = "Strategic Recommendations by Priority",
       x = "Recommendation", y = "Priority Level")
Strategic Recommendation Framework

Strategic Recommendation Framework


Correlation Analysis

# Select numeric columns only
numeric_data <- mydata %>% select_if(is.numeric)

if(ncol(numeric_data) > 1) {
  # Simple correlation matrix
  cor_matrix <- cor(numeric_data, use = "complete.obs")
  
  # Use base R heatmap
  heatmap(cor_matrix, main = "Correlation Matrix")
}

Conclusion

Main Takeaway

Both Gen Z and Millennials use AI for financial advice, but they trust it differently. Financial services can effectively meet their needs with a hybrid approach that combines:

  • AI convenience for initial guidance and simple questions
  • Professional support for major decisions and complex financial planning
  • Transparent communication about how tools work and protect privacy
  • Generation-specific messaging that resonates with each group’s priorities

This research demonstrates that the future of financial advice is not AI vs. humans, but rather AI + humans working together to serve clients better.


Appendix: Supporting Materials

Included Materials:

  • Questionnaire design
  • Sample interview responses
  • Field notes from data collection
  • Clean dataset (anonymized)

Anonymity Protocol:

  • No university names disclosed
  • No student names included
  • All participant data de-identified

Report Generated: 2025-11-20 04:33:34.681586

Research Team: Maple Variance Group
Data Collection Period: Fall 2025
Sample Size: 12 participants (Ages 18-43)