# ---------------------------------------------------------------------
# Plot 1: Token multiplier by architecture (deployment-independent —
# tokens are a property of the topology, not the model mix).
# ---------------------------------------------------------------------
arch_tokens = (arch_df.drop_duplicates("architecture")
.set_index("architecture")
.sort_values("token_multiplier"))
fig, ax = plt.subplots(figsize=(10, 5))
ax.bar(arch_tokens.index, arch_tokens["token_multiplier"], color="#E51837")
ax.set_title("Token multiplier by architecture (vs. Single-shot)")
ax.set_ylabel("Relative expected tokens")
ax.set_xlabel("Architecture")
for i, v in enumerate(arch_tokens["token_multiplier"]):
ax.text(i, v + 0.05, f"{v:.2f}x", ha="center")
plt.xticks(rotation=20, ha="right")
plt.tight_layout()
plt.show()
# ---------------------------------------------------------------------
# Plot 2: Cost per request — grouped by deployment, error bars show the
# low/high band from calls_per_request uncertainty. The "same topology,
# different deployment" comparison is the whole reason we split behavior
# from deployment.
# ---------------------------------------------------------------------
architectures = list(arch_df["architecture"].drop_duplicates())
deployments = list(DEPLOYMENT_PROFILES.keys())
x = np.arange(len(architectures))
width = 0.38
colors = {"openai_default": "#E51837", "openai_cost_optimized": "#2F80ED"}
fig, ax = plt.subplots(figsize=(11, 5.5))
for i, dep in enumerate(deployments):
sub = (arch_df[arch_df["deployment"] == dep]
.set_index("architecture").reindex(architectures))
point = sub["total_cost_point"].values
err_low = point - sub["total_cost_low"].values
err_high = sub["total_cost_high"].values - point
bars = ax.bar(x + (i - 0.5) * width, point, width,
yerr=[err_low, err_high], capsize=5,
label=dep, color=colors.get(dep, "#888"))
for xi, p in zip(x + (i - 0.5) * width, point):
ax.text(xi, p, f"${p:.4f}", ha="center", va="bottom", fontsize=8)
ax.set_xticks(x)
ax.set_xticklabels(architectures, rotation=20, ha="right")
#ax.set_title("Estimated API cost per request\n"
# "(error bars = low/high band on calls_per_request)")
ax.set_ylabel("USD per request")
ax.legend()
plt.tight_layout()
plt.show()
# ---------------------------------------------------------------------
# Plot 3: Token growth vs cost growth, colored by deployment. Each
# architecture shows up twice — once per deployment. A line connects the
# two deployment points per architecture: the slope tells you how much
# moving the heavy role from gpt-5.4 → gpt-5.4-mini actually bought you.
# ---------------------------------------------------------------------
fig, ax = plt.subplots(figsize=(9, 6))
for arch in arch_df["architecture"].unique():
sub = arch_df[arch_df["architecture"] == arch]
xs = sub["token_multiplier"].values
ys = sub["cost_multiplier"].values
ax.plot(xs, ys, color="#aaa", linewidth=1, zorder=1)
for dep in arch_df["deployment"].unique():
sub = arch_df[arch_df["deployment"] == dep]
ax.scatter(sub["token_multiplier"], sub["cost_multiplier"],
color=colors.get(dep, "#888"), s=90, label=dep, zorder=2)
for _, row in sub.iterrows():
ax.annotate(row["architecture"],
(row["token_multiplier"], row["cost_multiplier"]),
xytext=(6, 4), textcoords="offset points", fontsize=9)
ax.axline((1, 1), slope=1, color="#ccc", linestyle="--", linewidth=1,
label="cost = tokens (same $/token as Single-shot)")
ax.set_xlabel("Token multiplier (vs Single-shot, within deployment)")
ax.set_ylabel("Cost multiplier (vs Single-shot, within deployment)")
ax.set_title("Token growth vs cost growth — slope of the gray line\n"
"shows how much a deployment swap moved $/token")
ax.legend(loc="upper left")
plt.tight_layout()
plt.show()
[3m Agent Alpha · 7 steps · 21.422s [0m
┏━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃[1m [0m[1mStep [0m[1m [0m┃[1m [0m[1mTool [0m[1m [0m┃[1m [0m[1m Conf[0m[1m [0m┃[1m [0m[1mCache [0m[1m [0m┃[1m [0m[1mState [0m[1m [0m┃[1m [0m[1m Facts[0m[1m [0m┃[1m [0m[1mReasoning [0m[1m [0m┃
┡━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1 │ search │ 0.72 │ [31mLLM[0m │ [32mnew[0m │ 0 │ To assess competitive threat, we first │
│ │ │ │ │ │ │ need baseline information on │
│ │ │ │ │ │ │ SolidState Gen 2 (spec │
│ 2 │ search │ 0.74 │ [31mLLM[0m │ [2msame[0m │ 6 │ We need up-to-date specifics on │
│ │ │ │ │ │ │ 'SolidState Gen 2' (who makes it, │
│ │ │ │ │ │ │ technical claims, commer │
│ 3 │ search │ 0.74 │ [31mLLM[0m │ [2msame[0m │ 12 │ We need specific, verifiable details │
│ │ │ │ │ │ │ on SolidState Gen 2 (company, specs, │
│ │ │ │ │ │ │ deployment statu │
│ 4 │ search │ 0.76 │ [31mLLM[0m │ [2msame[0m │ 18 │ We need specific, verifiable │
│ │ │ │ │ │ │ information about what the "SolidState │
│ │ │ │ │ │ │ Gen 2" battery is (com │
│ 5 │ sentiment │ 0.64 │ [31mLLM[0m │ [2msame[0m │ 18 │ To assess the competitive threat, we │
│ │ │ │ │ │ │ need signals of market and │
│ │ │ │ │ │ │ investor/customer sentimen │
│ 6 │ search │ 0.72 │ [31mLLM[0m │ [2msame[0m │ 21 │ We need specific, verifiable details │
│ │ │ │ │ │ │ on the product/company behind │
│ │ │ │ │ │ │ "SolidState Gen 2" (per │
│ 7 │ SYNTHESIZE │ 0.42 │ [35mSYNTH[0m │ [32mnew[0m │ 21 │ SolidState Gen 2 appears to align with │
│ │ │ │ │ │ │ the broader industry shift toward │
│ │ │ │ │ │ │ solid-state and s │
└───────┴──────────────┴────────┴──────────────────┴────────────┴────────┴────────────────────────────────────────┘
[36m╭─[0m[36m─────────────────────────────────────────────[0m[36m 📊 Alpha Synthesis [0m[36m──────────────────────────────────────────────[0m[36m─╮[0m
[36m│[0m Verdict: [33mMEDIUM[0m Confidence: 0.42 [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m SolidState Gen 2 appears to align with the broader industry shift toward solid-state and semi-solid battery [36m│[0m
[36m│[0m roadmaps, which implies potential performance and adoption upside. However, the provided evidence does not [36m│[0m
[36m│[0m establish concrete differentiation for “SolidState Gen 2” (e.g., validated specs, manufacturing readiness, [36m│[0m
[36m│[0m customers, or deployment timelines), so competitive threat remains plausible but unproven. [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Evidence: search_0b9e927b_snippet: Industry adoption of solid-state batteries is typically staged (R&D → pilot [36m│[0m
[36m│[0m → commercialization → deployment), suggesting a structured path where a 'Gen 2' product could fit if it is [36m│[0m
[36m│[0m moving into commercialization., search_ee5615ac_snippet: Technological advances and improving performance are [36m│[0m
[36m│[0m cited as key drivers of solid-state adoption, indicating the competitive environment favors validated [36m│[0m
[36m│[0m next-generation designs., search_4cdf4f3b_snippet: Major incumbents are accelerating battery and charging [36m│[0m
[36m│[0m innovations (e.g., BYD related advancements), increasing competitive pressure and implying newcomers must [36m│[0m
[36m│[0m demonstrate material improvements to compete. [36m│[0m
[36m│[0m Gaps: No product-specific facts for 'SolidState Gen 2' (cell chemistry, energy density, cycle life, safety [36m│[0m
[36m│[0m metrics, temperature range, charging rate, cost targets)., No evidence of manufacturing readiness (pilot line [36m│[0m
[36m│[0m throughput, yield, scale-up timeline, supply-chain partners, yields/capex)., No customer/program adoption [36m│[0m
[36m│[0m indicators (OEM qualification status, contracts, pilot deployments, field data). [36m│[0m
[36m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[3m Agent Bravo · 3 steps · 3.929s [0m
┏━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃[1m [0m[1mStep [0m[1m [0m┃[1m [0m[1mTool [0m[1m [0m┃[1m [0m[1m Conf[0m[1m [0m┃[1m [0m[1mCache [0m[1m [0m┃[1m [0m[1mState [0m[1m [0m┃[1m [0m[1m Facts[0m[1m [0m┃[1m [0m[1mReasoning [0m[1m [0m┃
┡━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1 │ search │ 0.72 │ [32mEXACT[0m │ [32mnew[0m │ 21 │ We need specific, verifiable details │
│ │ │ │ │ │ │ on the product/company behind │
│ │ │ │ │ │ │ "SolidState Gen 2" (per │
│ 2 │ DONE │ 0.22 │ [31mLLM[0m │ [2msame[0m │ 21 │ No new targeted competitor-specific │
│ │ │ │ │ │ │ facts for 'SolidState Gen 2' can be │
│ │ │ │ │ │ │ derived from the e │
│ 3 │ SYNTHESIZE │ 0.32 │ [35mSYNTH[0m │ [32mnew[0m │ 21 │ The broader solid-state battery sector │
│ │ │ │ │ │ │ is intensifying, with multiple players │
│ │ │ │ │ │ │ pushing road │
└───────┴──────────────┴────────┴──────────────────┴────────────┴────────┴────────────────────────────────────────┘
[36m╭─[0m[36m─────────────────────────────────────────────[0m[36m 📊 Bravo Synthesis [0m[36m──────────────────────────────────────────────[0m[36m─╮[0m
[36m│[0m Verdict: [33mMEDIUM[0m Confidence: 0.32 [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m The broader solid-state battery sector is intensifying, with multiple players pushing roadmaps from R&D through [36m│[0m
[36m│[0m pilot production toward commercialization, which increases competitive pressure. However, the provided evidence [36m│[0m
[36m│[0m does not include any concrete performance, manufacturing readiness, partnerships, or market signals specific to [36m│[0m
[36m│[0m “SolidState Gen 2,” limiting confidence in its individual threat level. [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Evidence: search_0b9e927b_snippet: Solid-state adoption is described as a phased progression (R&D → pilot [36m│[0m
[36m│[0m production → commercialization → widespread deployment), indicating the sector is moving toward competitive [36m│[0m
[36m│[0m impact timelines., search_1e1a68c1_snippet: Competitive landscape is characterized as a race between startups [36m│[0m
[36m│[0m with potentially disruptive technologies and incumbents leveraging manufacturing scale—conditions under which [36m│[0m
[36m│[0m new generations (e.g., Gen 2) can pose threats if they reach production., search_ee5615ac_snippet: Key drivers [36m│[0m
[36m│[0m (technological push via materials science and cell design) suggest continued innovation that can narrow [36m│[0m
[36m│[0m performance gaps and enable new entrants’ competitiveness. [36m│[0m
[36m│[0m Gaps: No source mentions “SolidState Gen 2” specifically (no cell chemistry, architecture, specs, or claimed [36m│[0m
[36m│[0m performance)., No evidence of “SolidState Gen 2” pilot production, manufacturing partners, supply chain [36m│[0m
[36m│[0m agreements, or customer engagements., No validation of technical maturity (cycling life, safety, temperature [36m│[0m
[36m│[0m performance, cost/KWh projections, yield, scale-up results). [36m│[0m
[36m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[3m Agent Charlie · 3 steps · 2.691s [0m
┏━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃[1m [0m[1mStep [0m[1m [0m┃[1m [0m[1mTool [0m[1m [0m┃[1m [0m[1m Conf[0m[1m [0m┃[1m [0m[1mCache [0m[1m [0m┃[1m [0m[1mState [0m[1m [0m┃[1m [0m[1m Facts[0m[1m [0m┃[1m [0m[1mReasoning [0m[1m [0m┃
┡━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1 │ search │ 0.72 │ [32mEXACT[0m │ [32mnew[0m │ 21 │ We need specific, verifiable details │
│ │ │ │ │ │ │ on the product/company behind │
│ │ │ │ │ │ │ "SolidState Gen 2" (per │
│ 2 │ DONE │ 0.22 │ [32mEXACT[0m │ [2msame[0m │ 21 │ No new targeted competitor-specific │
│ │ │ │ │ │ │ facts for 'SolidState Gen 2' can be │
│ │ │ │ │ │ │ derived from the e │
│ 3 │ SYNTHESIZE │ 0.35 │ [35mSYNTH[0m │ [32mnew[0m │ 21 │ Based on the provided material, │
│ │ │ │ │ │ │ SolidState Gen 2 appears to be part of │
│ │ │ │ │ │ │ the broader competi │
└───────┴──────────────┴────────┴──────────────────┴────────────┴────────┴────────────────────────────────────────┘
[36m╭─[0m[36m────────────────────────────────────────────[0m[36m 📊 Charlie Synthesis [0m[36m─────────────────────────────────────────────[0m[36m─╮[0m
[36m│[0m Verdict: [33mMEDIUM[0m Confidence: 0.35 [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Based on the provided material, SolidState Gen 2 appears to be part of the broader competitive push toward [36m│[0m
[36m│[0m solid-state batteries rather than a clearly documented, differentiated product with proven performance and [36m│[0m
[36m│[0m deployment scale. However, the overall market trajectory (phased adoption, multiple major competitors [36m│[0m
[36m│[0m investing) suggests that if SolidState Gen 2 achieves key breakthroughs early, it could become a meaningful [36m│[0m
[36m│[0m competitive pressure. [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Evidence: adoption_roadmap_phased_approach: Solid-state adoption is described as moving through R&D → pilot [36m│[0m
[36m│[0m production → commercialization → widespread deployment, implying near- to mid-term competitive pressure is [36m│[0m
[36m│[0m likely incremental unless a specific product clears commercialization hurdles., [36m│[0m
[36m│[0m market_race_between_startups_and_incumbents: The competitive landscape is characterized as a race between [36m│[0m
[36m│[0m disruptive startups and incumbents with manufacturing scale, meaning any new Gen 2 effort faces strong [36m│[0m
[36m│[0m competitive counterpressure but can still threaten incumbents if it is on a fast commercialization path., [36m│[0m
[36m│[0m progress_drives_transition: Evidence indicates accelerated innovation could expedite transition from [36m│[0m
[36m│[0m lithium-ion to solid-state alternatives, which increases potential threat from improved next-gen solid-state [36m│[0m
[36m│[0m offerings. [36m│[0m
[36m│[0m Gaps: solidstate_gen_2_specifics_missing: No concrete technical specs, validation results, or claims for [36m│[0m
[36m│[0m “SolidState Gen 2” (e.g., energy density, cycle life, safety, temperature performance, charging rate)., [36m│[0m
[36m│[0m commercial_status_unknown: No evidence of manufacturing readiness, pilot customers, supply chain agreements, [36m│[0m
[36m│[0m cost targets, or deployment timelines specifically for SolidState Gen 2., competitive_position_unclear: No [36m│[0m
[36m│[0m comparison versus named competitors (e.g., CATL, BYD, Solid Power) on performance and maturity for SolidState [36m│[0m
[36m│[0m Gen 2. [36m│[0m
[36m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[3m Agent Delta · 3 steps · 2.684s [0m
┏━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃[1m [0m[1mStep [0m[1m [0m┃[1m [0m[1mTool [0m[1m [0m┃[1m [0m[1m Conf[0m[1m [0m┃[1m [0m[1mCache [0m[1m [0m┃[1m [0m[1mState [0m[1m [0m┃[1m [0m[1m Facts[0m[1m [0m┃[1m [0m[1mReasoning [0m[1m [0m┃
┡━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1 │ search │ 0.72 │ [32mEXACT[0m │ [32mnew[0m │ 21 │ We need specific, verifiable details │
│ │ │ │ │ │ │ on the product/company behind │
│ │ │ │ │ │ │ "SolidState Gen 2" (per │
│ 2 │ DONE │ 0.22 │ [32mEXACT[0m │ [2msame[0m │ 21 │ No new targeted competitor-specific │
│ │ │ │ │ │ │ facts for 'SolidState Gen 2' can be │
│ │ │ │ │ │ │ derived from the e │
│ 3 │ SYNTHESIZE │ 0.35 │ [35mSYNTH[0m │ [32mnew[0m │ 21 │ Based on available information, the │
│ │ │ │ │ │ │ broader solid-state battery segment is │
│ │ │ │ │ │ │ moving through │
└───────┴──────────────┴────────┴──────────────────┴────────────┴────────┴────────────────────────────────────────┘
[36m╭─[0m[36m─────────────────────────────────────────────[0m[36m 📊 Delta Synthesis [0m[36m──────────────────────────────────────────────[0m[36m─╮[0m
[36m│[0m Verdict: [33mMEDIUM[0m Confidence: 0.35 [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Based on available information, the broader solid-state battery segment is moving through an expected R&D to [36m│[0m
[36m│[0m commercialization roadmap, suggesting competitive pressure from multiple players. However, the provided [36m│[0m
[36m│[0m evidence does not establish SolidState Gen 2’s specific technical merits, production readiness, or deployment [36m│[0m
[36m│[0m traction, so its incremental competitive threat cannot be validated as high. [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Evidence: search_0b9e927b_snippet: Solid-state battery adoption is described as phased (R&D → pilot → [36m│[0m
[36m│[0m commercialization → widespread deployment), indicating a sector-wide trajectory that can translate into [36m│[0m
[36m│[0m competitive threats over time., search_d5e0d5e8_snippet: SolidPower’s progress is framed as potentially [36m│[0m
[36m│[0m accelerating the move from lithium-ion to solid-state alternatives, implying momentum that other solid-state [36m│[0m
[36m│[0m efforts may leverage., search_ee5615ac_snippet: Technological push (materials science and cell design) is cited [36m│[0m
[36m│[0m as a key driver for viability improvements, supporting the general competitiveness of solid-state approaches., [36m│[0m
[36m│[0m search_249c1406_snippet: Companies aligning via partnerships/supply-chain agreements/early adoption are [36m│[0m
[36m│[0m positioned to shape the next decade, indicating that early mover coordination can amplify threat. [36m│[0m
[36m│[0m Gaps: No source mentions 'SolidState Gen 2' directly; its performance (energy density, safety, cycle life), [36m│[0m
[36m│[0m cost, manufacturing approach, or differentiation versus incumbents is unknown., No evidence of deployment [36m│[0m
[36m│[0m status (pilot customers, certifications, factory scale, timeline to volume production) for SolidState Gen 2., [36m│[0m
[36m│[0m No benchmarking against near-term competitors using established chemistries (e.g., BYD Blade/charging [36m│[0m
[36m│[0m advancements cited in one snippet) to determine whether Gen 2 materially outperforms alternatives. [36m│[0m
[36m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[3m Agent Echo · 3 steps · 3.007s [0m
┏━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃[1m [0m[1mStep [0m[1m [0m┃[1m [0m[1mTool [0m[1m [0m┃[1m [0m[1m Conf[0m[1m [0m┃[1m [0m[1mCache [0m[1m [0m┃[1m [0m[1mState [0m[1m [0m┃[1m [0m[1m Facts[0m[1m [0m┃[1m [0m[1mReasoning [0m[1m [0m┃
┡━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1 │ search │ 0.72 │ [32mEXACT[0m │ [32mnew[0m │ 21 │ We need specific, verifiable details │
│ │ │ │ │ │ │ on the product/company behind │
│ │ │ │ │ │ │ "SolidState Gen 2" (per │
│ 2 │ DONE │ 0.22 │ [32mEXACT[0m │ [2msame[0m │ 21 │ No new targeted competitor-specific │
│ │ │ │ │ │ │ facts for 'SolidState Gen 2' can be │
│ │ │ │ │ │ │ derived from the e │
│ 3 │ SYNTHESIZE │ 0.35 │ [35mSYNTH[0m │ [32mnew[0m │ 21 │ The competitive threat from a product │
│ │ │ │ │ │ │ labeled “SolidState Gen 2” appears │
│ │ │ │ │ │ │ plausible within │
└───────┴──────────────┴────────┴──────────────────┴────────────┴────────┴────────────────────────────────────────┘
[36m╭─[0m[36m──────────────────────────────────────────────[0m[36m 📊 Echo Synthesis [0m[36m──────────────────────────────────────────────[0m[36m─╮[0m
[36m│[0m Verdict: [33mMEDIUM[0m Confidence: 0.35 [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m The competitive threat from a product labeled “SolidState Gen 2” appears plausible within the broader, [36m│[0m
[36m│[0m fast-moving solid-state battery race, but the provided evidence does not establish concrete differentiators [36m│[0m
[36m│[0m (performance, cost, manufacturing readiness, or commercial adoption) for Gen 2 specifically. Overall market [36m│[0m
[36m│[0m momentum and incumbent investment suggest solid-state concepts can become meaningful competitors, yet the lack [36m│[0m
[36m│[0m of company/product-specific data keeps threat confidence moderate. [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Evidence: search_0b9e927b_snippet: Solid-state battery roadmaps typically require phased progress from R&D to [36m│[0m
[36m│[0m pilot production to commercialization, implying that competitors with credible deployment plans can gain [36m│[0m
[36m│[0m advantage., search_0c59184e_title: IDTechEx market framing highlights multiple players and technology variants [36m│[0m
[36m│[0m (all-solid-state and hybrid approaches), indicating a crowded competitive landscape where new “generations” can [36m│[0m
[36m│[0m emerge., search_1e1a68c1_snippet: Competitive landscape described as startups with disruptive tech vs [36m│[0m
[36m│[0m incumbents leveraging manufacturing scale—suggesting Gen 2’s threat depends heavily on manufacturability and [36m│[0m
[36m│[0m scaling., search_ee5615ac_title: Adoption drivers emphasize materials science and cell design advances, [36m│[0m
[36m│[0m consistent with why newer generations could matter if they deliver measurable performance improvements. [36m│[0m
[36m│[0m Gaps: No evidence identifies what company “SolidState Gen 2” belongs to, its target applications, or whether it [36m│[0m
[36m│[0m is all-solid-state vs semi-solid/hybrid., Missing product specs (energy density, cycle life, safety metrics, [36m│[0m
[36m│[0m temperature performance, fast-charge capability) and how Gen 2 compares to leading alternatives., No [36m│[0m
[36m│[0m information on TRL/pilot status, yields/cost estimates, supply chain readiness, or partnerships with [36m│[0m
[36m│[0m automakers/pack integrators. [36m│[0m
[36m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[35m╭─[0m[35m──────────────────────────────[0m[35m 🧪 Semantic Equivalence Test [0m[35m───────────────────────────────[0m[35m─╮[0m
[35m│[0m Set A: ['battery_cycles=1200 cycles', 'market_mood=generally positive', 'price_point=$50k'] [35m│[0m
[35m│[0m Set B: ['cycle_life_count=1200', 'msrp_usd=50000', 'sentiment_score=0.72'] [35m│[0m
[35m│[0m [35m│[0m
[35m│[0m A → search (cached=False) [35m│[0m
[35m│[0m B → search (cached=True, tier=semantic, sim=0.9706) [35m│[0m
[35m│[0m [35m│[0m
[35m│[0m Result: [1;32m✓ PASSED[0m [35m│[0m
[35m╰─────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[13:14:37] INFO swarm Report saved to swarm_report.json
INFO:swarm:Report saved to swarm_report.json
[3m Agent Alpha · 7 steps · 17.207s [0m
┏━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃[1m [0m[1mStep [0m[1m [0m┃[1m [0m[1mTool [0m[1m [0m┃[1m [0m[1m Conf[0m[1m [0m┃[1m [0m[1mCache [0m[1m [0m┃[1m [0m[1mState [0m[1m [0m┃[1m [0m[1m Facts[0m[1m [0m┃[1m [0m[1mReasoning [0m[1m [0m┃
┡━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1 │ search │ 0.74 │ [31mLLM[0m │ [32mnew[0m │ 0 │ Need baseline market intelligence on │
│ │ │ │ │ │ │ SolidState Gen 2 (product claims, │
│ │ │ │ │ │ │ availability, targe │
│ 2 │ search │ 0.70 │ [31mLLM[0m │ [2msame[0m │ 6 │ Need targeted market and product │
│ │ │ │ │ │ │ specifics (performance, │
│ │ │ │ │ │ │ commercialization status, pricing │
│ 3 │ sentiment │ 0.62 │ [31mLLM[0m │ [2msame[0m │ 10 │ To evaluate competitive threat, we │
│ │ │ │ │ │ │ need market/customer sentiment and │
│ │ │ │ │ │ │ adoption signals spe │
│ 4 │ sentiment │ 0.67 │ [31mLLM[0m │ [2msame[0m │ 13 │ To evaluate the competitive threat, we │
│ │ │ │ │ │ │ should gauge recent market/press │
│ │ │ │ │ │ │ sentiment and trac │
│ 5 │ search │ 0.66 │ [31mLLM[0m │ [2msame[0m │ 13 │ We need specific, │
│ │ │ │ │ │ │ non-publication-level information │
│ │ │ │ │ │ │ about the product (who makes it, perfo │
│ 6 │ search │ 0.67 │ [31mLLM[0m │ [2msame[0m │ 19 │ Need concrete details on what │
│ │ │ │ │ │ │ 'SolidState Gen 2' is (vendor, │
│ │ │ │ │ │ │ chemistry, performance, deplo │
│ 7 │ SYNTHESIZE │ 0.35 │ [35mSYNTH[0m │ [32mnew[0m │ 19 │ Based on the provided materials, there │
│ │ │ │ │ │ │ is no direct evidence about │
│ │ │ │ │ │ │ “SolidState Gen 2” spec │
└───────┴──────────────┴────────┴──────────────────┴────────────┴────────┴────────────────────────────────────────┘
[36m╭─[0m[36m─────────────────────────────────────────────[0m[36m 📊 Alpha Synthesis [0m[36m──────────────────────────────────────────────[0m[36m─╮[0m
[36m│[0m Verdict: [33mMEDIUM[0m Confidence: 0.35 [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Based on the provided materials, there is no direct evidence about “SolidState Gen 2” specifically [36m│[0m
[36m│[0m (performance, partnerships, manufacturing readiness, or customer adoption). The surrounding market context [36m│[0m
[36m│[0m suggests solid-state batteries are attracting investment and collaborations, but without Gen 2-specific proof [36m│[0m
[36m│[0m points, its competitive threat cannot be rated as high. [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Evidence: search_ad13a990_snippet: Market reports describe growing competitive activity and collaborations [36m│[0m
[36m│[0m across solid-state battery manufacturers, implying a dynamic competitive field (but not specifically Gen 2)., [36m│[0m
[36m│[0m search_2eee0f9e_snippet: OEM-oriented benchmarking/forecast work indicates increasing industry focus on [36m│[0m
[36m│[0m solid-state adoption, which can amplify competitive pressure on new entrants (not Gen 2-specific)., [36m│[0m
[36m│[0m search_fc726892_snippet: Partnerships (e.g., Mercedes-Benz with Factorial Energy) demonstrate that credible [36m│[0m
[36m│[0m players are pursuing commercialization pathways, raising general competitive risk in solid-state segments. [36m│[0m
[36m│[0m Gaps: No source evidence identifies what “SolidState Gen 2” is (company, chemistry type: sulfide/oxide/polymer, [36m│[0m
[36m│[0m format, or claims)., No performance data provided (energy density, cycle life, charge rate, safety [36m│[0m
[36m│[0m characteristics, temperature range, degradation)., No commercialization indicators (pilot line, scale-up [36m│[0m
[36m│[0m timeline, cost targets, manufacturing partners, yields). [36m│[0m
[36m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[3m Agent Bravo · 4 steps · 9.122s [0m
┏━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃[1m [0m[1mStep [0m[1m [0m┃[1m [0m[1mTool [0m[1m [0m┃[1m [0m[1m Conf[0m[1m [0m┃[1m [0m[1mCache [0m[1m [0m┃[1m [0m[1mState [0m[1m [0m┃[1m [0m[1m Facts[0m[1m [0m┃[1m [0m[1mReasoning [0m[1m [0m┃
┡━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1 │ search │ 0.67 │ [32mEXACT[0m │ [32mnew[0m │ 19 │ Need concrete details on what │
│ │ │ │ │ │ │ 'SolidState Gen 2' is (vendor, │
│ │ │ │ │ │ │ chemistry, performance, deplo │
│ 2 │ search │ 0.74 │ [31mLLM[0m │ [2msame[0m │ 25 │ To evaluate the competitive threat, we │
│ │ │ │ │ │ │ first need concrete details on │
│ │ │ │ │ │ │ SolidState Gen 2 (co │
│ 3 │ DONE │ 0.42 │ [31mLLM[0m │ [2msame[0m │ 25 │ Known facts provide only high-level │
│ │ │ │ │ │ │ solid-state market context and │
│ │ │ │ │ │ │ sentiment, with no spec │
│ 4 │ SYNTHESIZE │ 0.28 │ [35mSYNTH[0m │ [32mnew[0m │ 25 │ The available information does not │
│ │ │ │ │ │ │ provide specific, verifiable details │
│ │ │ │ │ │ │ about a product/co │
└───────┴──────────────┴────────┴──────────────────┴────────────┴────────┴────────────────────────────────────────┘
[36m╭─[0m[36m─────────────────────────────────────────────[0m[36m 📊 Bravo Synthesis [0m[36m──────────────────────────────────────────────[0m[36m─╮[0m
[36m│[0m Verdict: [33mMEDIUM[0m Confidence: 0.28 [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m The available information does not provide specific, verifiable details about a product/company named [36m│[0m
[36m│[0m "SolidState Gen 2" (e.g., performance metrics, manufacturing status, customer deployments, or named partners). [36m│[0m
[36m│[0m Given the broader competitive field is active with major automotive and technology players pursuing solid-state [36m│[0m
[36m│[0m commercialization, "SolidState Gen 2" may pose a competitive threat only if it can demonstrate comparable [36m│[0m
[36m│[0m readiness and differentiation, but current evidence is insufficient to judge that. [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Evidence: search_3e420bf4_title: Indicates the broader solid-state sector is shipping sample cells to partners [36m│[0m
[36m│[0m and working toward commercialization, suggesting new entrants can compete, but it does not tie to "SolidState [36m│[0m
[36m│[0m Gen 2"., search_4cdf4f3b_title: Highlights ongoing performance/range and charging/EV innovation in the [36m│[0m
[36m│[0m solid-state-adjacent landscape, implying competitive pressure is real across technologies., [36m│[0m
[36m│[0m search_b63e59e3_title: Notes major automakers and consortia pushing solid-state commercialization (e.g., via [36m│[0m
[36m│[0m partnerships), which increases the likelihood that credible next-gen products become competitive quickly—yet [36m│[0m
[36m│[0m again not specific to "SolidState Gen 2"., sentiment_score: Positive sentiment (0.72 over a 30-day window) [36m│[0m
[36m│[0m suggests interest in the solid-state theme, but the sentiment feed is not explicitly linked to "SolidState Gen [36m│[0m
[36m│[0m 2". [36m│[0m
[36m│[0m Gaps: No sources identify what "SolidState Gen 2" refers to (company vs. product line vs. project), and no [36m│[0m
[36m│[0m official webpage/press release was provided., Missing technical differentiation: no data on electrolyte type [36m│[0m
[36m│[0m (sulfide/oxide/polymer), cell format, energy density, cycle life, safety claims, charge rates, or temperature [36m│[0m
[36m│[0m performance., Missing commercialization evidence: no pilot/volume manufacturing status, yield/cost estimates, [36m│[0m
[36m│[0m qualification timelines, or verified partner adoption. [36m│[0m
[36m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[3m Agent Charlie · 3 steps · 2.746s [0m
┏━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃[1m [0m[1mStep [0m[1m [0m┃[1m [0m[1mTool [0m[1m [0m┃[1m [0m[1m Conf[0m[1m [0m┃[1m [0m[1mCache [0m[1m [0m┃[1m [0m[1mState [0m[1m [0m┃[1m [0m[1m Facts[0m[1m [0m┃[1m [0m[1mReasoning [0m[1m [0m┃
┡━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1 │ search │ 0.74 │ [32mEXACT[0m │ [32mnew[0m │ 25 │ To evaluate the competitive threat, we │
│ │ │ │ │ │ │ first need concrete details on │
│ │ │ │ │ │ │ SolidState Gen 2 (co │
│ 2 │ DONE │ 0.42 │ [32mEXACT[0m │ [2msame[0m │ 25 │ Known facts provide only high-level │
│ │ │ │ │ │ │ solid-state market context and │
│ │ │ │ │ │ │ sentiment, with no spec │
│ 3 │ SYNTHESIZE │ 0.45 │ [35mSYNTH[0m │ [32mnew[0m │ 25 │ Based on the provided materials, │
│ │ │ │ │ │ │ “SolidState Gen 2” is not evidenced as │
│ │ │ │ │ │ │ a clearly differen │
└───────┴──────────────┴────────┴──────────────────┴────────────┴────────┴────────────────────────────────────────┘
[36m╭─[0m[36m────────────────────────────────────────────[0m[36m 📊 Charlie Synthesis [0m[36m─────────────────────────────────────────────[0m[36m─╮[0m
[36m│[0m Verdict: [33mMEDIUM[0m Confidence: 0.45 [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Based on the provided materials, “SolidState Gen 2” is not evidenced as a clearly differentiated or widely [36m│[0m
[36m│[0m adopted product versus the broader field of solid-state initiatives and partnerships. Competitive pressure is [36m│[0m
[36m│[0m therefore assessed as moderate: solid-state remains strategically important, but the specific Gen 2 offering’s [36m│[0m
[36m│[0m performance, customers, and deployment status are not substantiated in the provided evidence. [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Evidence: market_competitive_context: Search results indicate broad ongoing growth and commercialization [36m│[0m
[36m│[0m activity in the solid-state batteries market, implying competitive intensity generally (e.g., market reports [36m│[0m
[36m│[0m and “key players” framing)., customer_and_partner_activity: Multiple snippets describe companies shipping [36m│[0m
[36m│[0m samples/engaging partners and automakers pursuing solid-state commercialization—suggesting competitors are [36m│[0m
[36m│[0m active and moving through qualification cycles., industry_partnerships_exist: Evidence of OEM/partner [36m│[0m
[36m│[0m collaboration (e.g., automotive OEMs and battery-focused firms) indicates that winning threats typically come [36m│[0m
[36m│[0m from validated partnerships and qualification progress. [36m│[0m
[36m│[0m Gaps: no_specific_product_evidence: No provided fact explicitly describes what “SolidState Gen 2” is [36m│[0m
[36m│[0m (chemistry, architecture, claimed metrics, or differentiation)., no_adoption_or_sales: No evidence shows [36m│[0m
[36m│[0m customer adoption, volume production timelines, or installed base for SolidState Gen 2., [36m│[0m
[36m│[0m no_performance_benchmark: No stated comparisons (energy density, cycle life, safety, charging rate, [36m│[0m
[36m│[0m manufacturing yield) versus leading solid-state efforts. [36m│[0m
[36m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[3m Agent Delta · 3 steps · 2.998s [0m
┏━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃[1m [0m[1mStep [0m[1m [0m┃[1m [0m[1mTool [0m[1m [0m┃[1m [0m[1m Conf[0m[1m [0m┃[1m [0m[1mCache [0m[1m [0m┃[1m [0m[1mState [0m[1m [0m┃[1m [0m[1m Facts[0m[1m [0m┃[1m [0m[1mReasoning [0m[1m [0m┃
┡━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1 │ search │ 0.74 │ [32mEXACT[0m │ [32mnew[0m │ 25 │ To evaluate the competitive threat, we │
│ │ │ │ │ │ │ first need concrete details on │
│ │ │ │ │ │ │ SolidState Gen 2 (co │
│ 2 │ DONE │ 0.42 │ [32mEXACT[0m │ [2msame[0m │ 25 │ Known facts provide only high-level │
│ │ │ │ │ │ │ solid-state market context and │
│ │ │ │ │ │ │ sentiment, with no spec │
│ 3 │ SYNTHESIZE │ 0.42 │ [35mSYNTH[0m │ [32mnew[0m │ 25 │ “SolidState Gen 2” appears to be │
│ │ │ │ │ │ │ positioned within the broader │
│ │ │ │ │ │ │ competitive solid-state bat │
└───────┴──────────────┴────────┴──────────────────┴────────────┴────────┴────────────────────────────────────────┘
[36m╭─[0m[36m─────────────────────────────────────────────[0m[36m 📊 Delta Synthesis [0m[36m──────────────────────────────────────────────[0m[36m─╮[0m
[36m│[0m Verdict: [33mMEDIUM[0m Confidence: 0.42 [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m “SolidState Gen 2” appears to be positioned within the broader competitive solid-state battery landscape, but [36m│[0m
[36m│[0m the provided evidence does not establish its specific technical differentiation, commercialization status, or [36m│[0m
[36m│[0m customer adoption. Given that the market narrative is dominated by multiple well-funded efforts and [36m│[0m
[36m│[0m partnerships, the competitive threat is plausible but unproven from the supplied facts. [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Evidence: search_0bbc99cd_snippet: Market-level sources indicate active competitive dynamics in USA solid-state [36m│[0m
[36m│[0m batteries; however, they do not name or substantiate “SolidState Gen 2” specifically., search_2eee0f9e_snippet: [36m│[0m
[36m│[0m Consulting/market-request content suggests ongoing benchmarking of solid-state adoption in EVs, implying [36m│[0m
[36m│[0m competitive pressure on entrants, though it does not reference “SolidState Gen 2.”, search_3e420bf4_snippet: [36m│[0m
[36m│[0m Evidence of sample-cell shipments to partners in 2025 across the ecosystem indicates that many competitors are [36m│[0m
[36m│[0m approaching commercialization timelines (baseline competitive threat exists broadly)., search_b63e59e3_snippet: [36m│[0m
[36m│[0m Mentions major OEM push (e.g., BMW/Ford via partnerships) for commercialization, raising the bar for any single [36m│[0m
[36m│[0m “Gen 2” product to be a meaningful threat. [36m│[0m
[36m│[0m Gaps: No direct evidence that “SolidState Gen 2” exists as a specific product/company offering (e.g., vendor [36m│[0m
[36m│[0m name, official launch, or technical datasheet)., No performance metrics for Gen 2 (energy density, cycle life, [36m│[0m
[36m│[0m temperature range, safety, fast-charge capability) to compare versus leading solid-state contenders., No [36m│[0m
[36m│[0m commercialization indicators (pilot line, mass production readiness, partnerships/contracts, or customer [36m│[0m
[36m│[0m qualifications) specifically tied to “SolidState Gen 2.” [36m│[0m
[36m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[3m Agent Echo · 3 steps · 3.079s [0m
┏━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃[1m [0m[1mStep [0m[1m [0m┃[1m [0m[1mTool [0m[1m [0m┃[1m [0m[1m Conf[0m[1m [0m┃[1m [0m[1mCache [0m[1m [0m┃[1m [0m[1mState [0m[1m [0m┃[1m [0m[1m Facts[0m[1m [0m┃[1m [0m[1mReasoning [0m[1m [0m┃
┡━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1 │ search │ 0.74 │ [32mEXACT[0m │ [32mnew[0m │ 25 │ To evaluate the competitive threat, we │
│ │ │ │ │ │ │ first need concrete details on │
│ │ │ │ │ │ │ SolidState Gen 2 (co │
│ 2 │ DONE │ 0.42 │ [32mEXACT[0m │ [2msame[0m │ 25 │ Known facts provide only high-level │
│ │ │ │ │ │ │ solid-state market context and │
│ │ │ │ │ │ │ sentiment, with no spec │
│ 3 │ SYNTHESIZE │ 0.35 │ [35mSYNTH[0m │ [32mnew[0m │ 25 │ Based on the provided information, │
│ │ │ │ │ │ │ there is no direct, verifiable │
│ │ │ │ │ │ │ evidence about the exist │
└───────┴──────────────┴────────┴──────────────────┴────────────┴────────┴────────────────────────────────────────┘
[36m╭─[0m[36m──────────────────────────────────────────────[0m[36m 📊 Echo Synthesis [0m[36m──────────────────────────────────────────────[0m[36m─╮[0m
[36m│[0m Verdict: [33mMEDIUM[0m Confidence: 0.35 [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Based on the provided information, there is no direct, verifiable evidence about the existence, performance, [36m│[0m
[36m│[0m manufacturing readiness, or customer traction of a specific product called “SolidState Gen 2.” The broader [36m│[0m
[36m│[0m market context indicates strong competitive pressure from established players and active commercialization [36m│[0m
[36m│[0m efforts, but SolidState Gen 2’s relative positioning is unclear. [36m│[0m
[36m│[0m [36m│[0m
[36m│[0m Evidence: search_0bbc99cd_snippet: Competitive landscape exists for solid-state batteries in the USA market, [36m│[0m
[36m│[0m implying competitive pressure generally (but does not identify SolidState Gen 2)., search_2eee0f9e_title / [36m│[0m
[36m│[0m search_2eee0f9e_snippet: Indicates industry benchmarking and forecast work on solid-state adoption, suggesting [36m│[0m
[36m│[0m the category is moving toward commercialization (not specific to SolidState Gen 2)., search_3e420bf4_title / [36m│[0m
[36m│[0m search_3e420bf4_snippet: Mentions sample cell shipments to partners (August 2025) by a company in the [36m│[0m
[36m│[0m solid-state space, indicating real customer engagement by some competitors (not tied to SolidState Gen 2)., [36m│[0m
[36m│[0m search_b63e59e3_title / search_b63e59e3_snippet: Notes major automakers (e.g., BMW/Ford) pushing [36m│[0m
[36m│[0m commercialization via partnerships, increasing competitive intensity in the category., sentiment_score: [36m│[0m
[36m│[0m Positive sentiment (0.72) over a 30-day window suggests market interest in solid-state generally, though this [36m│[0m
[36m│[0m does not confirm SolidState Gen 2 specifically. [36m│[0m
[36m│[0m Gaps: No source in known_facts mentions “SolidState Gen 2” by name (existence, company, or product line are [36m│[0m
[36m│[0m unconfirmed)., No performance metrics for SolidState Gen 2 (energy density, cycle life, charging rate, [36m│[0m
[36m│[0m temperature range, safety characteristics)., No evidence of manufacturing scale or readiness (pilot/production [36m│[0m
[36m│[0m status, yields, cost targets). [36m│[0m
[36m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[35m╭─[0m[35m──────────────────────────────[0m[35m 🧪 Semantic Equivalence Test [0m[35m───────────────────────────────[0m[35m─╮[0m
[35m│[0m Set A: ['battery_cycles=1200 cycles', 'market_mood=generally positive', 'price_point=$50k'] [35m│[0m
[35m│[0m Set B: ['cycle_life_count=1200', 'msrp_usd=50000', 'sentiment_score=0.72'] [35m│[0m
[35m│[0m [35m│[0m
[35m│[0m A → search (cached=False) [35m│[0m
[35m│[0m B → search (cached=True, tier=semantic, sim=0.9706) [35m│[0m
[35m│[0m [35m│[0m
[35m│[0m Result: [1;32m✓ PASSED[0m [35m│[0m
[35m╰─────────────────────────────────────────────────────────────────────────────────────────────╯[0m
# Threshold sensitivity sweep — no LLM calls, just embeddings.
import numpy as np
import matplotlib.pyplot as plt
# Three topical groups. Within a group: same facts, different surface form.
# Across groups: different topics — should NOT cache-match.
LABELED_GROUPS = {
"pricing": [
frozenset([
Fact("price_point", "$50k", "Sales", 0.9),
Fact("battery_cycles", "1200 cycles", "Lab", 0.95),
]),
frozenset([
Fact("msrp_usd", 50000, "InternalDB", 0.95),
Fact("cycle_life_count", 1200, "TestingDB", 0.95),
]),
frozenset([
Fact("sticker_price", "fifty thousand dollars", "Press", 0.7),
Fact("cycle_durability", "1200 charge cycles", "Spec", 0.9),
]),
],
"patents": [
frozenset([
Fact("active_patents", 47, "USPTO", 0.9),
Fact("recent_filings_18mo", 12, "USPTO", 0.9),
]),
frozenset([
Fact("patent_count", 47, "PatentDB", 0.9),
Fact("recent_patent_apps", 12, "PatentDB", 0.9),
]),
frozenset([
Fact("granted_patents", 47, "Filings", 0.9),
Fact("filings_last_18_months", 12, "Filings", 0.9),
]),
],
"supply_chain": [
frozenset([
Fact("tier1_supplier_count", 3, "SCM", 0.9),
Fact("lead_time_weeks", 14, "SCM", 0.9),
]),
frozenset([
Fact("primary_suppliers", 3, "Logistics", 0.9),
Fact("delivery_lead_weeks", 14, "Logistics", 0.9),
]),
frozenset([
Fact("vendor_count_tier1", 3, "Procurement", 0.9),
Fact("avg_lead_time", "14 weeks", "Procurement", 0.9),
]),
],
}
task = "Evaluate the competitive threat of the 'SolidState Gen 2' battery."
embeddings = OpenAIEmbeddings(model="text-embedding-3-small",
openai_api_key=OPENAI_API_KEY)
# Embed each set once (24 embedding calls total).
labeled_vecs = []
for group, sets in LABELED_GROUPS.items():
for facts in sets:
ctx = PlannerContext.make(task, WorldView.from_facts(facts),
tools_available=[], stale_tools=[])
text = TieredCache._facts_to_text(ctx)
v = np.array(embeddings.embed_query(text), dtype=np.float32)
labeled_vecs.append((group, v))
def cosine(a, b):
d = np.linalg.norm(a) * np.linalg.norm(b)
return float(np.dot(a, b) / d) if d > 0 else 0.0
# Pre-compute pairwise similarity + within-group label
pairs = []
for i in range(len(labeled_vecs)):
for j in range(i + 1, len(labeled_vecs)):
gi, vi = labeled_vecs[i]
gj, vj = labeled_vecs[j]
pairs.append((gi == gj, cosine(vi, vj)))
n_same = sum(1 for s, _ in pairs if s)
n_diff = sum(1 for s, _ in pairs if not s)
# Sweep threshold
thresholds = np.arange(0.70, 0.99, 0.01)
tpr, fpr, precision, recall = [], [], [], []
for t in thresholds:
tp = sum(1 for s, sim in pairs if s and sim >= t)
fp = sum(1 for s, sim in pairs if not s and sim >= t)
fn = sum(1 for s, sim in pairs if s and sim < t)
tpr.append(tp / max(1, n_same))
fpr.append(fp / max(1, n_diff))
precision.append(tp / max(1, tp + fp))
recall.append(tp / max(1, tp + fn))
# ---- Plots ----
fig, axes = plt.subplots(1, 2, figsize=(14, 4.8))
ax = axes[0]
ax.plot(thresholds, tpr, marker="o", label="True positive rate (recall)", color="#2ca02c")
ax.plot(thresholds, fpr, marker="s", label="False positive rate", color="#d62728")
ax.axvline(0.90, color="grey", linestyle="--", alpha=0.7,
label="Default threshold = 0.90")
ax.set_xlabel("Similarity threshold")
ax.set_ylabel("Rate")
ax.set_title(f"Threshold sensitivity\n({n_same} same-group + {n_diff} cross-group pairs)")
ax.legend(fontsize=9)
ax.grid(alpha=0.3)
ax = axes[1]
ax.plot(recall, precision, marker="o", color="#1f77b4")
for k in range(0, len(thresholds), 3):
ax.annotate(f"t={thresholds[k]:.2f}", (recall[k], precision[k]),
fontsize=8, alpha=0.7,
xytext=(4, 4), textcoords="offset points")
ax.set_xlabel("Recall (caught real paraphrases)")
ax.set_ylabel("Precision (avoided wrong cache hits)")
ax.set_title("Precision / recall trade-off across thresholds")
ax.set_xlim(-0.02, 1.05)
ax.set_ylim(-0.02, 1.05)
ax.grid(alpha=0.3)
plt.tight_layout()
plt.show()
default_idx = int(np.argmin(np.abs(thresholds - 0.90)))
print(f"At default threshold 0.90: TPR={tpr[default_idx]:.2f}, "
f"FPR={fpr[default_idx]:.2f}, "
f"precision={precision[default_idx]:.2f}")
print("If you see false-positive cache hits in production, raise the threshold.")
print("If you see obvious paraphrases missing the cache, lower it.")
At default threshold 0.90: TPR=1.00, FPR=0.67, precision=0.33
If you see false-positive cache hits in production, raise the threshold.
If you see obvious paraphrases missing the cache, lower it.
import csv
from datetime import datetime
from tabulate import tabulate
def run_llm_analysis(num_gpu=1, prompt_sz=4096, response_sz=256, n_concurrent_req=4,
gpu_specs=None, model_specs=None):
"""
Estimate memory footprint, capacity, and latency across every (model, GPU) pair.
Returns:
tuple[str, str]: (memory_csv_path, performance_csv_path)
"""
gpu_specs = gpu_specs if gpu_specs is not None else GPU_SPECS
model_specs = model_specs if model_specs is not None else MODEL_SPECS
ctx = prompt_sz + response_sz
print(f" num_gpu={num_gpu}, prompt_size={prompt_sz} tokens, response_size={response_sz} tokens")
print(f" n_concurrent_request={n_concurrent_req}")
# ------------------------------------------------------------------ memory
print("\n******************** Estimate LLM Memory Footprint ********************")
memory_table = []
for m in model_specs:
kv_seq_gib = kv_cache_gib_for_context(m, ctx)
footprint = memory_footprint_gib(m, ctx, n_concurrent_req)
memory_table.append({
"Model": m["name"],
"Total / Active (B)": f"{m['total_params_billion']} / {m['active_params_billion']}",
"Full-attn / layers": f"{m['n_full_attention_layers']} / {m['n_layers']}",
"Input Size (tokens)": prompt_sz,
"Output Size (tokens)": response_sz,
"Concurrent Requests": n_concurrent_req,
"KV / seq @ ctx": f"{kv_seq_gib*1024:.1f} MiB",
"Memory Footprint": f"{footprint:.2f} GiB",
})
print(tabulate(memory_table, headers="keys", tablefmt="orgtbl"))
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
memory_csv = f"llm_memory_footprint_{timestamp}.csv"
with open(memory_csv, "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=memory_table[0].keys())
writer.writeheader()
writer.writerows(memory_table)
# OOM flags for this (prompt, concurrency) workload
for m in model_specs:
footprint = memory_footprint_gib(m, ctx, n_concurrent_req)
for g in gpu_specs:
avail = num_gpu * g["memory_gb"]
if footprint > avail:
cap = max_concurrent_at_context(m, avail, ctx)
print(f" !! OOM {m['name']} on {num_gpu}x {g['name']} ({avail} GiB): "
f"needs {footprint:.1f} GiB. Max concurrent @ this ctx = {cap}")
# ------------------------------------------------------------ performance
print("\n******************** Estimate LLM Capacity and Latency ********************")
perf_table = []
for m in model_specs:
for g in gpu_specs:
avail = num_gpu * g["memory_gb"]
weight_gib = m["total_params_billion"] * 2
if weight_gib >= avail:
perf_table.append({
"Model": m["name"], "GPU": g["name"],
"Input Size (tokens)": prompt_sz, "Output Size (tokens)": response_sz,
"Concurrent Requests": n_concurrent_req,
"Max # KV Cache Tokens": "OOM (weights)",
"Prefill Time": "OOM", "TPOT (ms)": "OOM", "TTFT": "OOM",
"E2E Latency": "OOM", "Output Tokens Throughput": "OOM",
})
continue
free_gib = avail - weight_gib
growth = kv_growth_per_token_gib(m)
kv_tokens = int(free_gib / growth) if growth > 0 else 10**9
pft = prefill_ms_per_token(m["active_params_billion"], num_gpu, g["fp16_tflops"])
tpt = tpot_ms(m["active_params_billion"], num_gpu, g["memory_bandwidth_gbps"])
ttft = pft / 1000 + tpt / 1000 # seconds
e2e = e2e_latency_s(pft, tpt, prompt_sz, response_sz)
throughput = response_sz / e2e if e2e > 0 else float("inf")
perf_table.append({
"Model": m["name"],
"GPU": g["name"],
"Input Size (tokens)": prompt_sz,
"Output Size (tokens)": response_sz,
"Concurrent Requests": n_concurrent_req,
"Max # KV Cache Tokens": kv_tokens,
"Prefill Time": f"{pft:.3f} ms",
"TPOT (ms)": f"{tpt:.3f} ms",
"TTFT": f"{ttft:.3f} s",
"E2E Latency": f"{e2e:.1f} s",
"Output Tokens Throughput": f"{throughput:.2f} tokens/sec",
})
print(tabulate(perf_table, headers="keys", tablefmt="orgtbl"))
perf_csv = f"llm_performance_{timestamp}.csv"
with open(perf_csv, "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=perf_table[0].keys())
writer.writeheader()
writer.writerows(perf_table)
print(f"\nResults saved to CSV files:\n1. {memory_csv}\n2. {perf_csv}")
return memory_csv, perf_csv
LAST_MEMORY_CSV, LAST_PERF_CSV = run_llm_analysis(**DEFAULT_ANALYSIS)
num_gpu=4, prompt_size=4096 tokens, response_size=256 tokens
n_concurrent_request=8
******************** Estimate LLM Memory Footprint ********************
| Model | Total / Active (B) | Full-attn / layers | Input Size (tokens) | Output Size (tokens) | Concurrent Requests | KV / seq @ ctx | Memory Footprint |
|--------------------+----------------------+----------------------+-----------------------+------------------------+-----------------------+------------------+--------------------|
| Qwen3.5-4B | 4.0 / 4.0 | 8 / 32 | 4096 | 256 | 8 | 136.0 MiB | 9.06 GiB |
| ModernBERT-large | 0.395 / 0.395 | 28 / 28 | 4096 | 256 | 8 | 476.0 MiB | 4.51 GiB |
| Gemma-4-26B-A4B-it | 26.0 / 4.0 | 5 / 30 | 4096 | 256 | 8 | 285.0 MiB | 54.23 GiB |
| Qwen3.6-35B-A3B | 35.0 / 3.0 | 10 / 40 | 4096 | 256 | 8 | 85.0 MiB | 70.66 GiB |
******************** Estimate LLM Capacity and Latency ********************
| Model | GPU | Input Size (tokens) | Output Size (tokens) | Concurrent Requests | Max # KV Cache Tokens | Prefill Time | TPOT (ms) | TTFT | E2E Latency | Output Tokens Throughput |
|--------------------+-----------------+-----------------------+------------------------+-----------------------+-------------------------+----------------+-------------+---------+---------------+----------------------------|
| Qwen3.5-4B | L4 | 4096 | 256 | 8 | 2883584 | 0.008 ms | 6.667 ms | 0.007 s | 1.7 s | 147.08 tokens/sec |
| Qwen3.5-4B | L40s | 4096 | 256 | 8 | 6029312 | 0.006 ms | 2.315 ms | 0.002 s | 0.6 s | 416.11 tokens/sec |
| Qwen3.5-4B | A100 80 GB PCIe | 4096 | 256 | 8 | 10223616 | 0.006 ms | 1.034 ms | 0.001 s | 0.3 s | 880.16 tokens/sec |
| Qwen3.5-4B | A100 80 GB SXM | 4096 | 256 | 8 | 10223616 | 0.006 ms | 0.981 ms | 0.001 s | 0.3 s | 922.99 tokens/sec |
| Qwen3.5-4B | H100 PCIe | 4096 | 256 | 8 | 10223616 | 0.003 ms | 1.000 ms | 0.001 s | 0.3 s | 959.39 tokens/sec |
| Qwen3.5-4B | H100 SXM | 4096 | 256 | 8 | 10223616 | 0.002 ms | 0.597 ms | 0.001 s | 0.2 s | 1588.89 tokens/sec |
| Qwen3.5-4B | H100 NVL | 4096 | 256 | 8 | 12058624 | 0.002 ms | 0.513 ms | 0.001 s | 0.1 s | 1814.41 tokens/sec |
| Qwen3.5-4B | H200 | 4096 | 256 | 8 | 18219008 | 0.002 ms | 0.417 ms | 0.000 s | 0.1 s | 2227.06 tokens/sec |
| Qwen3.5-4B | B200 | 4096 | 256 | 8 | 24903680 | 0.001 ms | 0.250 ms | 0.000 s | 0.1 s | 3784.69 tokens/sec |
| ModernBERT-large | L4 | 4096 | 256 | 8 | 891383 | 0.001 ms | 0.658 ms | 0.001 s | 0.2 s
import os
from pathlib import Path
import pandas as pd
def _resolve_analysis_csvs():
"""Prefer paths from the last in-notebook run; else latest CSV pair in cwd."""
mem, perf = globals().get("LAST_MEMORY_CSV"), globals().get("LAST_PERF_CSV")
if mem and perf and Path(mem).exists() and Path(perf).exists():
return str(Path(mem).resolve()), str(Path(perf).resolve())
roots = [Path.cwd()]
if Path("/content").exists():
roots.append(Path("/content"))
mem_candidates = []
perf_candidates = []
for root in roots:
mem_candidates.extend(root.glob("llm_memory_footprint_*.csv"))
perf_candidates.extend(root.glob("llm_performance_*.csv"))
if not mem_candidates or not perf_candidates:
raise FileNotFoundError(
"No llm_memory_footprint_*.csv / llm_performance_*.csv found. Run the previous cell first."
)
mem = max(mem_candidates, key=lambda p: p.stat().st_mtime)
perf = max(perf_candidates, key=lambda p: p.stat().st_mtime)
return str(mem), str(perf)
memory_footprint_file, throughput_file = _resolve_analysis_csvs()
memory_footprint_df = pd.read_csv(memory_footprint_file)
throughput_df = pd.read_csv(throughput_file)
new_memory_footprint_df = memory_footprint_df
new_throughput_df = throughput_df
print(f"Loaded:\n {throughput_file}\n {memory_footprint_file}")
throughput_df.head(), memory_footprint_df.head()