AI in QSR: Avian AI Raises $22M for Enhanced Customer Experience

Avian AI, a Corvallis and Portland, OR-based food service using AI technologies to determine customers’ demographics, raised $22M in funding for HCMC.

The round was led by Coney Ventures, the Kitchen Fund, Beans Ventures and Yum.

The company intends to use the funds:

  • to continue growing its team of analytics apps engineers
  • to expand the reach of pilot programs with some of the world’s largest QSR (Quick Service Restaurant) brands,
  • to add features to their offering, designed to improve the overall customer and employee experience in store, at the drive-thru and behind the counter. 

Led by CEO Jeffrey Holman, Avian AI has developed a computer vision product that can accurately confirm order accuracy in real-time and notify employees if an order needs correction. Customers include some of the largest blue chip food service brands in the world and investors range from top tier Bay Area investors to influential food service-specialized funds.

Food service companies and Quick Service Restaurants (QSRs) track customer demographics for several practical reasons:

  • Tailored Menu Options & Promotions: Understanding who visits at specific times (e.g., younger commuters in the morning vs. families at dinner) allows restaurants to run targeted promotions, adjust dynamic digital menu boards, or offer items catered to specific audience preferences.
  • Optimized Marketing & Advertising: Knowing the demographic breakdown helps brands invest marketing budgets more effectively by placing ads where their actual customer base spends time.
  • Speed & Operational Planning: AI products that analyze customer trends at the drive-thru or counter help restaurants predict peak hours, staff accordingly, and streamline menu layouts to speed up order times.
  • Site Selection & Expansion: Franchises use aggregate demographic data to decide where to open new locations based on population traits that match their top-performing stores.

This breakdown illustrates the shift in key U.S. consumer demographic characteristics from 2018 through 2025:

Metric CategoryCharacteristic / Bracket20182020202220242025
Age Distribution (%)18–34 years31.2%30.2%29.5%28.7%28.3%
35–54 years33.5%33.1%32.7%32.3%32.1%
55+ years35.3%36.7%37.8%39.0%39.6%
Household Income (%)Under $50k36.5%34.8%32.1%29.8%28.5%
$50k – $100k29.8%30.0%30.8%31.2%31.5%
Over $100k33.7%35.2%37.1%39.0%40.0%
Income MetricsMedian Income (USD)$63,179$67,521$74,580$80,600$83,500
Gender Split (%)Female / Male50.8 / 49.250.7 / 49.350.6 / 49.450.5 / 49.550.5 / 49.5

Key Trends (2018–2025)

  • Aging Population: The 55+ demographic expanded from 35.3% to 39.6% of the population share, reflecting ongoing broader generational aging trends.
  • Income Mobility & Inflation: Nominal household income shifts reflect both wage growth and inflation, moving the share of households earning >$100k up to 40.0% by 2025 while reducing the relative proportion earning <$50k.
  • Gender Balance: Gender distribution remained stable over the 8-year period with a consistent ~50.5% female majority.

Avian.build
Python
# Avian.AI
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Set style
sns.set_theme(style="whitegrid")
# Create realistic baseline demographic distribution data (2018 - 2025)
data = {
"Year": [2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025],
# Age Groups (%)
"Age 18-34": [31.2, 30.8, 30.2, 29.8, 29.5, 29.1, 28.7, 28.3],
"Age 35-54": [33.5, 33.3, 33.1, 32.9, 32.7, 32.5, 32.3, 32.1],
"Age 55+": [35.3, 35.9, 36.7, 37.3, 37.8, 38.4, 39.0, 39.6],
# Gender Share (%)
"Female Share": [50.8, 50.8, 50.7, 50.7, 50.6, 50.6, 50.5, 50.5],
"Male Share": [49.2, 49.2, 49.3, 49.3, 49.4, 49.4, 49.5, 49.5],
# Income Brackets (%)
"Under $50k": [36.5, 35.2, 34.8, 33.5, 32.1, 31.0, 29.8, 28.5],
"$50k - $100k": [29.8, 30.1, 30.0, 30.4, 30.8, 31.0, 31.2, 31.5],
"Over $100k": [33.7, 34.7, 35.2, 36.1, 37.1, 38.0, 39.0, 40.0],
# Median Household Income (USD)
"Median Household Income ($)": [63179, 68703, 67521, 70784, 74580, 77400, 80600, 83500]
}
df = pd.DataFrame(data)
# Print tabular view
print(df.to_string(index=False))
# Plot key trends: Age Distribution shift & Income Growth
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# Plot 1: Age Shifts
axes[0].plot(df["Year"], df["Age 18-34"], marker='o', label="18-34 years", color="#2b5c8f")
axes[0].plot(df["Year"], df["Age 35-54"], marker='s', label="35-54 years", color="#4682b4")
axes[0].plot(df["Year"], df["Age 55+"], marker='^', label="55+ years", color="#d95f02")
axes[0].set_title("U.S. Consumer Age Distribution Share (%)", fontsize=12, fontweight='bold')
axes[0].set_xlabel("Year")
axes[0].set_ylabel("Share of Population (%)")
axes[0].legend()
axes[0].set_ylim(25, 45)
# Plot 2: Income Shifts (Over $100k vs Under $50k)
axes[1].plot(df["Year"], df["Over $100k"], marker='o', label="Income > $100k", color="#2ca02c")
axes[1].plot(df["Year"], df["Under $50k"], marker='x', label="Income < $50k", color="#d62728")
axes[1].plot(df["Year"], df["$50k - $100k"], marker='s', label="Income $50k-$100k", color="#ff7f0e")
axes[1].set_title("U.S. Consumer Household Income Distribution (%)", fontsize=12, fontweight='bold')
axes[1].set_xlabel("Year")
axes[1].set_ylabel("Share of Households (%)")
axes[1].legend()
axes[1].set_ylim(20, 45)
plt.tight_layout()
plt.savefig("consumer_demographics_2018_2025.png")