Mathematical Model Description

We model firms as having two characteristics:

An AI tool with effectiveness \(\omega \in (0, 1)\) reduces labor demand to:

\[ \text{Effective headcount} = n(1 - \omega v) \]

The value (cost savings) for the firm is:

\[ \text{Value} = c \cdot n \cdot \omega v \]

The cost (price paid) to the vendor is:

\[ \text{Price paid} = p \cdot n \cdot (1 - \omega v) \]

The vendor also incurs a support cost:

\[ \text{Cost to vendor} = w \cdot n \cdot (1 - \omega v) \]

Participation Condition

A firm adopts the AI tool if:

\[ c n \omega v > p n (1 - \omega v) \quad \Rightarrow \quad v > \frac{p}{\omega c + p} \]

Let \(v^* = \frac{p}{\omega c + p}\) denote the threshold above which firms adopt.

Payment Function for Buyer Firm

Given \((n, v)\), if \(v > v^*\), the total payment by the firm is:

\[ \text{Payment}(n,v) = p \cdot n \cdot (1 - \omega v) \]

Profit of AI Vendor

The vendor’s profit from an \((n,v)\) adopter firm is \((p-w) n (1-\omega v)\). Total profit across all adopter firms (\(v > v^\ast)\) of given size \(n\) is \(\int_{v^\ast}^{1} (p-w) n (1-\omega v) dv\) = \((p-w) n \int_{v^\ast}^{1} (v - \omega \frac{v^2}{2}) \vert_{v^\ast}^{1} dv\) = \((p-w) n \left(1 - \frac{\omega}{2} - v^* + \frac{\omega}{2}(v^*)^2 \right)\).

Further, looking at this across all firm sizes involves a second integral over \(n\); that integral resolves differently depending on whether \(n\) follows a uniform or Beta distribution.

Introduction

This analysis models optimal pricing for an AI vendor. Each buyer firm has size \(n \in [0,1]\) and heterogeneity parameter \(v \in [0,1]\). The AI reduces workforce to \(n(1 - \omega v)\). Vendor charges \(p\) per supported seat and incurs a cost \(w\) per seat.

Model Setup

# Parameters
omega <- 0.8
c <- 1000  # Cost per employee
w <- 0.3   # Vendor per-seat cost

Participation Threshold

v_star <- function(p, omega, c) {
  p / (omega * c + p)
}

Profit Function

v_integral <- function(p, omega, c) {
  v_cut <- v_star(p, omega, c)
  1 - omega/2 - v_cut + (omega/2) * v_cut^2
}

profit_uniform_cost <- function(p, omega, c, w) {
  0.5 * (p - w) * v_integral(p, omega, c)
}

Plot Profit Curve

p_vals <- seq(1, 5000, by = 1)
profits <- sapply(p_vals, profit_uniform_cost, omega = omega, c = c, w = w)
df <- data.frame(p = p_vals, profit = profits)

ggplot(df, aes(x = p, y = profit)) +
  geom_line(color = "blue") +
  labs(title = "Profit vs Price (Uniform Distribution)", x = "Price (p)", y = "Profit")

Optimization

opt_result <- optimize(function(p) -profit_uniform_cost(p, omega, c, w),
                       interval = c(1, 5000), maximum = FALSE)

p_star <- opt_result$minimum
profit_star <- -opt_result$objective
v_cut_star <- v_star(p_star, omega, c)

cat("Optimal p:", round(p_star, 2), "\n")
## Optimal p: 2402.4
cat("Optimal profit:", round(profit_star, 2), "\n")
## Optimal profit: 89.99
cat("Cutoff v*:", round(v_cut_star, 4), "\n")
## Cutoff v*: 0.7502

Sample Payments Table

v_vals <- seq(v_cut_star + 0.01, 1, length.out = 10)
n_vals <- seq(0.1, 1, length.out = 10)
payment_grid <- expand.grid(n = n_vals, v = v_vals)
payment_grid <- expand.grid(n = n_vals, v = v_vals)
# payment_grid$payment <- with(payment_grid, p_star * n * (1 - omega * v))

payment_grid <- payment_grid %>% mutate(nv = n*v, payment = p_star * n * (1 - omega * v)) %>% arrange(nv)

kable(payment_grid[sample(nrow(payment_grid), 10), ]  %>% arrange(nv), digits = 4, caption = "Sample Buyer Payments (n, v > v*)")
Sample Buyer Payments (n, v > v*)
n v nv payment
0.2 0.8934 0.1787 137.0650
0.2 0.9467 0.1893 116.5805
0.3 0.9467 0.2840 174.8708
0.6 0.7602 0.4561 564.8285
0.5 0.9201 0.4600 317.0569
0.5 0.9467 0.4734 291.4513
0.9 0.7602 0.6842 847.2428
0.8 0.8668 0.6934 589.2289
0.9 0.8668 0.7801 662.8825
1.0 0.8934 0.8934 685.3249