Vol. I  ·  No. 157 Established 2026  ·  AI-Generated Daily Free to Read  ·  Free to Print

The Trilogy Times

All the news that's fit to generate  —  AI • Business • Innovation
SATURDAY, JUNE 06, 2026 Powered by Anthropic Claude  ·  Published on Klair Trilogy International © 2026
🖶 Download PDF 🖿 Print 📰 All Editions
Today's Edition

Made-in-China AI Knocks Valley Sideways

DeepSeek's bargain-priced model matches American giants — built without the top-shelf chips Washington bans from export.

SAN FRANCISCO — A Chinese shop named DeepSeek has Silicon Valley reeling this week, claiming it built a champion artificial intelligence model on cut-rate chips for pennies on the dollar. The Hangzhou upstart turned its work loose over the weekend. The Valley's biggest names spent Monday picking their jaws off the floor.

"Amazing and impressive," they're calling it. The model goes punch-for-punch with the heavy hitters from OpenAI and Anthropic on the benchmarks that matter. DeepSeek says it did the job without Nvidia's top-shelf silicon — the very chips Washington bans from export to the People's Republic.

That news ought to keep tech bosses up nights. The whole American AI play rests on a single bet: money plus the fastest chips equals dominance. The math has been simple — pour billions into training runs, snap up every Nvidia H100 you can find, win.

DeepSeek just shoved a wrench in the works and laughed about the price tag. Trading desks spent the morning chewing over what cheaper AI means for the chip kings who rode the wave to the moon. Nvidia's run depends on every lab on Earth needing more silicon, not less.

The cost figure making the rounds: a sliver of what OpenAI or Anthropic spend on a flagship training run. If the number holds up, the floor under American AI valuations just dropped through the basement. If it doesn't — somebody's books need a closer look.

The export controls cut both ways. Washington meant to slow Peking's AI push by choking off advanced chips. DeepSeek's answer says Peking found another road, and the road runs through smarter software, not bigger hardware.

Engineers in Mountain View and Palo Alto were poring over the technical papers by sunup, hunting for the trick. Some say the gains came from clever training methods and architecture choices. Others smell smoke and want to see the fire before they cheer.

Meanwhile in Menlo Park, Reid Hoffman is changing seats. The LinkedIn co-founder is stepping off Microsoft's board after a decade and hauling $24.6 million into a new outfit called Manas AI. His partner on the venture is Siddhartha Mukherjee, the doctor who wrote "The Emperor of All Maladies."

The pitch is AI for cancer drug discovery. Hoffman calls it "founder mode." Microsoft loses a director who watched the company more than triple in value under Satya Nadella, riding the OpenAI partnership to the top of the heap.

Connect the dots and the picture sharpens. The compute arms race is shifting under the Valley's feet. DeepSeek showed you don't need the biggest pile of chips to play the game.

Hoffman's bet says the real prize isn't chatbots anymore — it's cures. The Valley spent two years certain that whoever bought the most Nvidia silicon would win the AI war. This week, the war got more complicated.

What to Know About China's DeepSeek AI  ·  Tech, Media & Telecom Roundup: Market Talk  ·  Silicon Valley Is Raving About a Made-in-China AI Model

White House AI Blueprint Seeks Federal Supremacy Over State Laws, Minimal Regulatory Burden

The Trump administration's new AI policy framework asks Congress to preempt a patchwork of state rules — while the Supreme Court quietly closes the door on AI authorship claims.

WASHINGTON, D.C. — Pursuant to the issuance of a comprehensive legislative blueprint by the White House, hereinafter referred to as "the Framework," the executive branch has formally communicated to the United States Congress its position that artificial intelligence regulation shall, to the maximum extent practicable, be characterized by a light regulatory touch, notwithstanding the existence of numerous and potentially conflicting state-level legislative efforts currently in various stages of enactment across the several states.

The aforementioned Framework, as analyzed by legal practitioners at Crowell & Moring LLP, is understood to contain provisions calling for the preemption of state artificial intelligence laws, thereby establishing a unified federal regulatory regime in lieu of the aforementioned patchwork of state-level enactments. It is further represented that the Framework includes provisions directed toward the protection of children in connection with artificial intelligence systems, the precise scope and enforceability of which remain, at the time of publication, subject to further legislative deliberation.

Notwithstanding the foregoing, it shall be noted that the Framework does not, in and of itself, constitute binding law, and that the realization of its stated objectives is contingent upon affirmative action by Congress, the likelihood and timeline of which cannot, at this juncture, be represented with any degree of certainty.

In a separate but related development of considerable legal significance, the Supreme Court of the United States has declined to hear a case concerning AI authorship and inventorship, thereby permitting to stand lower court rulings that artificial intelligence systems are not, under existing statutory frameworks, recognized as authors or inventors for purposes of intellectual property protection. The implications of the aforementioned denial of certiorari for enterprises engaged in AI-assisted creative and inventive activities are, it is submitted, substantial and as yet incompletely understood by affected parties.

White House urges Congress to take a light touch on AI regul  ·  White House National AI Policy Framework Calls for Preemptin  ·  Trump Administration AI Policy Framework Calls on Congress t

AI Funding Market Turns Into a Full-Contact Spending League

DriveNets, Anthropic and Commure all put fresh points on the board as investors keep blitzing anything that can feed, route or deploy artificial intelligence.

SAN FRANCISCO — We are HERE, folks, under the bright lights of the AI capital markets stadium, and the money cannons are not just firing — THEY ARE OVERHEATING.

The latest scoreboard shows a funding market that refuses to leave the field. DriveNets, the Israel-founded networking software player, raised $410 million in fresh capital, pushing its valuation to $8.5 billion as the AI infrastructure boom keeps demanding more pipes, more routing muscle and more back-end horsepower. In plain English: if GPUs are the star quarterbacks of this AI season, companies like DriveNets are fighting in the trenches so the plays can actually run.

That round arrived alongside an even louder siren from Anthropic, which announced a Series H financing of $65 billion at a $965 billion post-money valuation, according to the company’s own announcement. That is not a funding round; that is a moonshot scoreboard operator losing track of the digits. Anthropic, maker of the Claude family of AI models, has been one of the marquee franchises in the frontier model league, battling OpenAI, Google DeepMind and Meta in a heavyweight division where compute is cap space and distribution is home-field advantage. The company’s new financing announcement signals that investors still believe the frontier AI title fight is worth staggering sums.

Meanwhile, health care AI player Commure banked $70 million and hit a $7 billion valuation, keeping medical workflow automation in the playoff bracket. Health care remains one of the messiest, highest-stakes arenas for AI deployment: overloaded clinicians, fragmented data systems, billing complexity, compliance pressure — the whole defensive line is stacked. Commure is betting its platform can move the chains by embedding AI into hospital operations and clinical workflows.

And the broader league table backs it up. Crunchbase’s latest funding roundup pointed to massive deals across medical devices, futuristic AI gadgets and frontier labs, while also flagging a potential 2026 IPO window as momentum returns to the public markets. Translation: private investors are not just placing bets on products; they are positioning for exits.

For Trilogy watchers, the lesson is familiar. Whether it is ESW Capital squeezing enterprise software efficiency, Totogi chasing telecom cloud billing, or CloudFix cutting AWS costs, the playbook is shifting toward AI-enabled operating leverage. The market is rewarding companies that either build the models, fuel the infrastructure or apply the software where budgets are already massive.

The whistle has not blown. The AI financing game is still live — and the next drive could be even bigger.

DriveNets raises $410 million as AI boom pushes valuation to  ·  Anthropic raises $65B in Series H funding at $965B post-mone  ·  AI company Commure banks $70M funding round, hits $7B valuat
Haiku of the Day  ·  Claude HaikuPower flows like water
Yet we rush to drink the flood
Truth stays thirsty still
The New Yorker Style  ·  Art Desk
The New Yorker Style  ·  Art Desk
The Far Side Style  ·  Art Desk
The Far Side Style  ·  Art Desk
News in Brief
The Algorithm Already Decided Who You Are
AUSTIN, TEXAS — Here is a thing that happened, and is happening, and will keep happening with an efficiency that should terrify you: somewhere right now, an algorithm trained on historical data — data soaked in decades of redlining, discriminatory lending, racially skewed criminal justice outcomes, and a thousand other sins we've never fully reckoned with — is making a decision about a human being's life.
We Built a Machine That Broke Economics, Then Gave It a Social Life and an Ozzy Osbourne Costume
AUSTIN, TEXAS — Here's where we are, America.
Enterprise AI Doesn’t Need Another Demo, It Needs Its Netscape Moment
AUSTIN, TEXAS — Unpopular opinion: enterprise AI is not failing because the models are weak, it is failing because the workplace still has no browser for intelligence.
Nation’s Last Remaining Singles Bravely Agree To Sort Themselves By Firmware, Antibodies
SAN FRANCISCO — There was a time, older Americans claim, when dating involved such primitive rituals as conversation, mutual attraction, and the gradual discovery that another person possessed a catastrophic opinion about seed oils.
Contact Centers Get an AI Upgrade as OnviSource and Trilogy BPO Join Forces Across the Atlantic
LONDON — Two announcements landed this week that, read together, sketch the emerging battlefield for enterprise AI in the contact center industry.
A Trilogy Company
Crossover
The world's top 1% remote talent, rigorously tested and ready to ship.
A Trilogy Company
Alpha School
AI-powered learning. Two hours a day. Academic results that defy belief.
A Trilogy Company
Skyvera
Next-generation telecom software — built for the networks of tomorrow.
A Trilogy Company
Klair
Your AI-first operating system. Every workflow. Every team. One platform.
A Trilogy Company
Trilogy
We buy good software businesses and turn them into great ones — with AI.
The Builder Desk  —  AI Builder Team

Builder Team Ships Across Four Repos in One Dominant Day

From CEO-requested ARR intelligence in Klair to lazy-loaded vendor drilldowns in Aerie, the Builder Team spent Wednesday proving that breadth and depth are not a tradeoff.

The Builder Team came to work on Wednesday and didn't stop. Across Klair and Aerie — two of the org's most consequential repos — the squad shipped financial intelligence upgrades, a document-aware AI assistant, a cleaner design system, and a performance optimization that Finance specifically asked for. This was a full-roster day, and the scoreboard shows it.

Let's start where the money is. @sanketghia had a two-PR Wednesday that any engineer would frame and hang on the wall. In Klair, he answered a direct ask from CEO Brandon with PR #2966 — enriching the AI Renewals tab with ARR dollar figures everywhere they belong, then building a brand-new AI Renewals vs. Total scale chart that lets leadership see AI's share of the renewal pie at a glance. That's v1, and v1 already does exactly what the boss asked. Then, in PR #2969, Sanket re-anchored the SpaceX valuation page to the confirmed IPO price from the SEC S-1/A filing — $135/share, 13.11 billion shares outstanding — correcting a back-derived share count that had been quietly wrong since the February merger. These are the kinds of fixes that matter in boardrooms. Sanket found them both in the same afternoon.

Meanwhile, @eric-tril was doing the unglamorous, indispensable work that separates good products from great ones. PR #2967 cut the Group memo load time in Monthly Financial Reporting without adding a single API request and without ever flashing stale data — a constraint Finance had explicitly mandated. Eric sourced the period dropdown and lineage date from the already-fetched sync-info call, introduced per-section skeleton loaders so the page feels alive while it populates, and deduplicated requests that were firing redundantly. The memo gets faster. The data stays clean. Finance stays happy. That's engineering.

Over in Aerie, @benji-bizzell was busy on two fronts. PR #331 finally gives Admissions users the ability to filter dashboards by school launch status — Open, Announced, Pre-Announcement — after EduCRM expanded the program universe and left Aerie without the fields to keep up. It's the kind of data-plumbing work that looks simple and isn't, and it unblocks a whole class of reporting that admissions teams have been waiting on. PR #329 is the design story of the day: a complete overhaul of the theme system, replacing a noisy palette-plus-accent picker with clean Light, Dark, and Custom slots. Users get predictable defaults and genuine control. The product looks better. @ashwanth1109 added his own Aerie chapter with PR #322, wiring in a fourth lazy-loaded drilldown level on the Edu Performance P&L table — vendors under class rows, fetched on demand from a new Convex table, mirroring Klair's own vendor breakdown. The tree goes deeper. The page stays fast.

And then there's PR #2962, Coach Claire's new document attachment feature, out of Klair. Users can now clip a document — docx, xlsx, csv, markdown — directly into the Claire chat composer, and its text becomes live context for the entire session. Large documents get summarized rather than truncated. The chip sits in the composer until you remove it. It's a clean, thoughtful feature that makes Claire meaningfully smarter in the moment it matters most.

This PR was authored by @marcusdAIy, who also dropped two drone-side contributions today. When reached for comment, he offered the following: "The receipt persistence fix closes a real attribution gap that the audit surfaced — every standalone addresser run now joins to a record like everything else, and the impact dashboard makes the ROI visible. If Mac spent half as much time reading PRs as he does writing backhanded copy, he'd understand why the plumbing matters." Sure, Marcus. The plumbing. We're all very impressed with the plumbing.

This team is building something. Wednesday proved it.

Mac's Picks — Key PRs Today  (click to expand)
#322 — AERIE-351 feat(financials): lazy vendor drilldown under class rows on Edu Performance @ashwanth1109  no labels

## Demo

<img width="2620" height="1636" alt="image" src="https://github.com/user-attachments/assets/d20d1c4d-ca3f-4686-93e0-fb6509a4c601" />

## Overview

Adds a 4th, lazy-loaded drilldown level — vendors under each class — to the Edu Performance P&L table (Dashboards › Financials › Edu Performance), mirroring Klair's vendor breakdown. Today the tree is type → BU → class, built statically from the Convex mfrLineItems table; class rows are hard-coded leaves. This adds a new Convex table fed from a vendor-grain mart and queries it only when a class row is expanded.

Vendor drilldown is enabled for all NON-HC line items — gated OFF for HC COGS / HC Expenses (headcount-driven, no meaningful vendor split), matching Klair.

Linear: [AERIE-351](https://linear.app/builder-team/issue/AERIE-351)

Upstream mart (already merged): Surtr PR #175 — mart_education.agg_mfr_line_items_by_vendor

## Architecture note

Aerie has no request-path Redshift — it nightly-syncs pre-aggregated marts into Convex and reads from Convex. "Lazy loading" here is a UI-only concept: vendor rows live in Convex, and the per-class getVendorBreakdown query is issued only on class-row expand (no upfront fetch). The sync plumbing mirrors the existing mfrLineItems path 1:1.

## Specs

- [04-vendor-line-items-pipeline](features/dashboards/education-pl-page/specs/04-vendor-line-items-pipeline/spec.md) — Data pipeline for vendor-grain rows: new mfrVendorLineItems Convex table fed daily from the vendor mart via a faithful 1:1 clone of the mfrLineItems sync path plus vendorName.

- [05-vendor-breakdown-query-and-ui](features/dashboards/education-pl-page/specs/05-vendor-breakdown-query-and-ui/spec.md) — Read + UI: getVendorBreakdown Convex query plus the lazy vendor-expand drilldown in education-pl-table.tsx.

## Implementation summary

Schema (chat/convex/finance/schema.ts)

- New mfrVendorLineItems table = mfrLineItems fields + vendorName: v.string().

- by_type_bu_class_period index — the lazy per-class read path.

- by_natural_key 7-tuple index — the upsert path (version, reportingPeriod, dataSource, type, businessUnit, className, vendorName).

Sync (sync/)

- sync/src/redshift/mfr-vendor-line-items.ts — Zod-validated Redshift reader against mart_education.agg_mfr_line_items_by_vendor. Null/blank vendor arrives coalesced to '-'.

- sync/src/analytics/mfr-vendor-line-items-refresh.ts — batched refresh module.

- sync/src/financial-worker/index.tsmfrVendorLineItemsTask scheduler task on the daily Financials cadence.

Route + mutation (chat/convex/)

- /sync/analytics/mfr-vendor-line-items HTTP route (registered in http.ts) → handleMfrVendorLineItemsSync httpAction.

- upsertMfrVendorLineItems internal mutation — 7-tuple natural key with duplicate-row self-heal.

Query + UI

- getVendorBreakdown query in chat/convex/dashboards/educationPL.tsrequirePermission("canViewFinancials"), HC-type gate returning [], vendor bucketing via by_type_bu_class_period, sum-to-class invariant, EXCLUDED_BUSINESS_UNITS short-circuit.

- Lazy expandedClasses drilldown in chat/components/dashboards/financials/education-pl-table.tsx — vendor rows at pl-18 indent, lazy useQuery fired only on expand, with loading and "No vendor detail" empty states.

## Test coverage

- 28 pipeline tests — Zod reader, refresh batching, upsert self-heal.

- 51 educationPL.test.ts tests — query behavior, HC gate, sum-to-class reconciliation.

- All 79 pass.

## Self-review

Self-review found no issues. All cross-runtime contracts (schema ↔ sync ↔ HTTP route ↔ query ↔ UI) verified aligned.

## CI

All 7 checks green: Build, Docker Build Chat, Docker Build Worker, Lint + Boundaries, Secret Scan, Test, Typecheck.

## Update — Level 4 paging + sort & vendor sync speedup

Two follow-up commits after the initial delivery:

feat(financials): paginate + sort Level 4 vendor drilldown

- getVendorBreakdown returns { vendors, total, hasMore } (was TreeNode[]) and accepts optional limit (server-side page slice, default VENDOR_PAGE_SIZE = 50) and sort ("name" | "amount").

- Sort is applied to the full list before the page slice, so paging picks the right rows instead of reordering only the current page. "amount" = descending by quarter Actual, name as a deterministic tie-break (stable across limit bumps).

- VendorRows keeps per-class page + sort state: an Amount / A–Z segmented toggle (shown when >1 vendor) and a cumulative "Show N more vendors (X of Y shown)" row. VENDOR_PAGE_SIZE is shared so the server slice and the client increment can't drift.

perf(financial-worker): parallelize MFR vendor sync upserts

- The 220K-row mfrVendorLineItems sync ran a serial upsert loop (~24 min). Replaced with an 8-way bounded-concurrency drain over a shared cursor + BATCH_SIZE 100 → 200. Disjoint natural keys ⇒ non-overlapping index ranges ⇒ no Convex OCC conflicts; 200 stays under the ~1 s per-mutation budget. Expected ~24 min → ~2–3 min. Fail-fast + upsertErrors accounting preserved.

- ⚠️ Worker must be restarted to take effect (tsx has no hot-reload).

Tests: educationPL.test.ts 51 → 53 (paging + amount-sort); worker refresh tests updated for BATCH_SIZE=200. Typecheck + biome clean.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

#2962 — feat(board-doc): attach documents to Coach Claire chat for context (B3.22) @marcusdAIy  no labels

## Summary

B3.22 ([KLAIR-2841](https://linear.app/builder-team/issue/KLAIR-2841)) — let a user attach a document to the Coach Claire chat so its text becomes context for the conversation. Session-scoped and modeled on the existing brainlift context path.

- Paperclip in the chat composer → client-side text extraction (extractTextFromFile: docx/xlsx/csv/txt/md — no PDF) → the text is persisted on the session and injected into Claire's system prompt every turn until removed, shown as a removable chip.

- Large docs are summarized, not truncated (reuses the brainlift-style summarizer) so nothing is silently dropped while the per-turn token cost stays bounded.

## Why it's needed

Operators often have a source doc (a plan, a sheet, an email) they want Claire to reason over. Today the chat is text-only — they'd have to paste it inline every turn. This makes it a first-class, persistent attachment.

## Changes

Backend

- ChatAttachedDoc model + WizardSession.chat_attached_docs.

- POST / DELETE /wizard/{id}/chat-attachments (merge-retry, mirrors the B5.2 attach/detach shape). Attach summarizes text over the ~8k target synchronously (one LLM call, behind the FE spinner); summarization errors propagate (no silent truncation, per CLAUDE.md). Detach is idempotent.

- _get_chat_attachments_context + a ## Attached Documents block in _build_step_context (right after brainlift); each doc tagged summarized="true|false".

- Content-free chat_attached_docs summary (id/name/char_count/summarized) on the session GET so chips survive reload.

- Caps: max 3 docs, ~8k stored chars each, 100k raw input ceiling.

Frontend

- attachChatDoc / detachChatDoc + ChatAttachedDocSummary type.

- ChatPanel: paperclip + hidden file input + removable chips (with a "summary" affordance) + loading/error states.

- useBoardDocWizard.chatAttachedDocs + attachDoc/detachDoc; DocumentEditorPage wiring.

Context-budget rationale: the chat runs Opus 4.7 at the standard ~200K window (no 1M beta in the chat path), and the system prompt already carries the full doc + history + findings + brainlift. Keeping the total attachment budget small (~24k chars) and summarizing large docs avoids overflow in heavy sessions and bounds per-turn cost. (Full analysis in the ticket.)

Also folds in the deferred backlog sync: B8.6 + B3.21 marked DONE (#2959 merged), B3.22 marked in review.

## Breaking changes

None. New model field defaults to []; chat_attached_docs is optional on the FE session type; new endpoints are additive.

## Test plan

- [x] BE test_chat_attachments.py (10): attach small (stored as-is) / large (summarized, mocked) / over-max (400); detach by id + unknown-id no-op; _build_step_context block present/absent; session-GET content-free summary; summarizer short-circuits under target.

- [x] FE boardDocApi.chatAttachments.spec.ts (2) + ChatPanel.attach.spec.tsx (4): attach POST/DELETE contract; extract→onAttachDoc; chip render + remove; unsupported-file error (no attach); affordance hidden without a handler.

- [x] Full tests/board_doc/ 2190 green; FE BoardDoc suite 411 green; ruff + pyright + tsc + eslint clean.

- [ ] Manual: attach a .docx/.xlsx in the editor chat, confirm Claire references it; attach a >8k doc and confirm the "summary" chip; remove; reload and confirm the chip persists.

Out of scope (v1): PDF / images / S3 / server-side file extraction; async summarization status (synchronous for now); drag-drop; ephemeral per-message attach.

#2966 — feat(renewals): AI Renewals ARR enrichment + AI-vs-Total scale chart [KLAIR-2845] @sanketghia  no labels

Linear: KLAIR-2845

## Summary

Enriches the AI Renewals tab (/renewals?tab=fionn) with ARR ($) on the existing tables and adds a new AI Renewals vs Total scale chart, per Brandon (CEO) / Edie's request to "add ARR wherever possible" and "show AI Renewals (closed) / Total Renewals (closed, traditional + AI)".

This is v1 — an intentional first iteration. A richer time-series follow-up (upcoming-renewal windows + monthly dual-axis combo chart) is tracked separately in KLAIR-2844.

## What's included

1. Comparison table — three new ARR rows (ARR up for renewal, $ retained, $ renewed). Δ shows for $ rows with an explanatory header tooltip. *Frontend-only* — the dollars were already in the /summary payload, just unrendered.

2. Breakdown table — a $ up for renewal column per side (AI / Traditional). *Frontend-only*.

3. New scale chart (AiVsTotalChart, recharts) — stacked $ bars across all three segments (< $100k, HVO, All), AI (blue) on Traditional (grey), AI count-share % label + ARR-share in tooltip ("show both"). Always shows all segments (ignores the page toggle). Includes a localized error/retry state.

4. New backend endpoint GET /renewals/fionn-handling/scale — AI-vs-Total closed counts + USD ARR for sub100k / hvo / all (Total = AI + Traditional), reusing the canonical _SELECTED_CTE.

## Data context

As of build time, 100% of closed AI renewals are in the < $100k band (the HVO AI cohort is empty), so AI is ~5% of < $100k ARR but ~0.9% of all closed renewal ARR. The empty-HVO case renders cleanly (0% / $0, no NaN).

## Testing

- Backend: tests/renewals/ — 63 pass (new scale aggregation + empty case + route authz). Lint (ruff) + types (pyright) clean.

- Frontend: full suite 5562 pass, 0 fail (chart computeShares + render + empty; comparison ARR rows + YoY; breakdown ARR column; tab placement; useFionnScale hook). lint:pr + tsc clean.

## Screenshots

<img width="1562" height="521" alt="image" src="https://github.com/user-attachments/assets/3067df60-ec52-469a-99db-66b9c5045a17" />

<img width="1562" height="664" alt="image" src="https://github.com/user-attachments/assets/b2b513bb-038e-4d34-ac32-e22e92d1a695" />

🤖 Generated with [Claude Code](https://claude.com/claude-code)

#2967 — feat(mfr): faster Group memo — fewer requests, dedup, per-section skeletons @eric-tril  no labels

## Summary

Improves Group memo load time and loading UX in Monthly Financial Reporting — without adding API requests and without ever showing stale or flashing values (Finance constraint: always fresh, no stale-while-revalidate). Scope is the Group memo pilot; Software/Education/EBITDA runtime behavior is unchanged, and the new building blocks are reusable for them later.

## What changed

1. Request reduction (screen)MonthlyFinancialReporting.tsx

- Period dropdown + lineage date now source from the already-fetched useMFRSyncInfo (single source of truth).

- useFinancialStatementData is gated to the financial-statements reference section via a new enabled flag; useBudgetOverrides is gated to the sections that consume it.

- Net effect on a Group memo load: drops the duplicate available-periods, the unused group-income-statement, and budget-overrides.

2. In-flight request de-duplication — new services/dedupedGet.ts

- Collapses concurrent identical GETs into one request (no result cache, evicts on settle → always fresh). Wired into the statement-table fetchers, idempotent page-load reads, and the drill-down detail fetchers.

- Read-after-write endpoints (uploads, cash-flow-memo-overrides, the EBITDA revalidation trio, bu-target-pct, exported-docs, qtd/refresh, bv-notes) and server-side generate endpoints (*-memo-defaults) deliberately stay on plain get — deduping a post-save refetch could serve a pre-save response.

3. No-flash per-table statususeAllFinancialStatements.ts

- Additive, key-stamped tableStatus(tableKey): a table reports loading (never ready) the instant period/entity changes, even though the prior config is still held — so a section never flashes a previous selection's values. Existing isLoading/configs/provenance/error are unchanged, so Software/Education keep their current behavior.

4. Sectioned skeletonsGroupMemoView.tsx + new components/memo/skeletons/

- Drops the monolithic full-view gate. Header paints immediately; commentary gates on its own DynamoDB load (hasLoadedForPeriod); each statement table streams in via tableStatus; cash-flows/EBITDA skeleton through the deferred round while the rest of the memo is interactive.

- Note 8 ("Other Expense/(Income)") loads from a separate endpoint, so useOtherExpenseBreakdown now exposes a synchronous isLoading and that sub-table shows its own NoteTableSkeleton — never the IS fallback or a prior period's values.

## Business value

Finance sees the Group memo become usable faster (header/commentary/most tables paint immediately instead of waiting on the slowest derived table), with fewer backend calls per load and a hard guarantee that switching period/section never flashes stale numbers.

## Testing

- pnpm tsc --noEmit clean

- pnpm lint:pr clean

- pnpm exec vitest run src/features/monthly-financial-reporting964 pass / 112 files (incl. new dedupedGet.spec.ts, useAllFinancialStatements.spec.ts no-flash assertions, and 3 new useOtherExpenseBreakdown loading tests)

- pnpm build succeeds

## Not in this PR

- No backend changes (cash-flows is still a derived/serialized fetch — a combined cash-flows-with-overrides endpoint is the future lever for its load time).

- No cross-navigation cache (Finance ruled out stale-while-revalidate).

- Software/Education/EBITDA skeleton rollout (deliberately deferred).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

http://localhost:3001/monthly-financial-reporting

#2969 — fix(spacex-valuation): re-anchor price↔valuation to IPO; default $1.25T; pill cleanup @sanketghia  no labels

## Summary

Updates the /spacex-valuation page per the stakeholder meeting with David Harpur & Ludel Mier (2026-06-05) and the preceding Andy Price / David Harpur email thread + memo. The page previously mapped $1.75T → $147.45/share by back-deriving the share count from the Feb 2026 merger ($1.25T ÷ $105.318 ≈ 11.87B). It now anchors the price↔valuation conversion to the confirmed IPO ($135/share = $1.77T per the SEC S-1/A).

## Changes (meeting action items)

1. Anchor to the IPOIMPLIED_SHARES_OUTSTANDING = $1.77T ÷ $135 ≈ 13.11B, so every price↔valuation conversion scales linearly off $135 = $1.77T (matches Milo's reconciliation sheet factor 0.01311111111).

2. Default header → $1.25T — the page opens on the Feb 2026 merger valuation ($1.25T) expressed at the post-IPO share count, i.e. a diluted default price of ~$95.34/share (not the pre-IPO $105.318 proforma mark).

3. "Current" pill → $1.25T — points at the new default and renders at 2-dp so it reads $1.25T (not $1.3T).

4. Removed the "IPO Close" chip and its now-dead Polymarket hook/snapshot/spec.

5. Anchor pills sorted ascending: Bear → Historical → Current → IPO → Bull.

## Verification

- pnpm tsc --noEmit clean · eslint --max-warnings 0 clean · valuation tests pass.

- Pill valuations reconcile to the sheet: $84→$1.10T, $95.34→$1.25T, $135→$1.77T, $160→$2.10T, $50→$0.66T.

- Net portfolio totals reconcile: $4.31B @ $135 and $5.08B @ $160 (David/Milo's "4.3B" / "5.1B").

- Fund NAV/carry/IRR math is unchanged — those are driven by share price, not share count.

## Open question for reviewers (not a code change)

Item 5 from the meeting — "check valuation, Gigafund 0.25". The app shows $126.3M at the Bull ($160) scenario; Milo's manual sheet shows $141.49M. The app is internally consistent: it reads each fund off its own linear mark + carry, whereas the sheet applies a flat 160/135 proportional factor. GF 0.25 diverges because its recorded mark is nearly price-insensitive (fv421 ≈ fv526, large carry basis — an xAI-conversion holding). Whether GF 0.25 should stay price-insensitive or scale proportionally is a data/modeling decision for David/Milo, not a calculation bug.

## Screenshots

<img width="1738" height="404" alt="image" src="https://github.com/user-attachments/assets/33e04fc2-74ab-45ae-9de7-cbee9b0e71ab" />

<img width="1623" height="316" alt="image" src="https://github.com/user-attachments/assets/b2ced860-a519-49d5-a9f7-092a4a42743c" />

🤖 Generated with [Claude Code](https://claude.com/claude-code)

The Builder Desk  —  Engineer Spotlight
🏆 Engineer Spotlight

TEN PRs IN TWENTY-FOUR HOURS: THE BUILDER TEAM DOES NOT SLEEP, DOES NOT REST, DOES NOT SLOW DOWN

Three repos, five engineers, and one man named Ashwanth who consolidated an entire day's worth of changes into a single PR title that tells you nothing and somehow everything.

Ten pull requests. Twenty-four hours. Three repositories — Aerie, Klair, and trilogy-drones — all humming at full operational capacity like turbines in a factory that has never once considered the concept of a weekend. The Builder Team posted four PRs in Aerie, four in Klair, and two in trilogy-drones, and if you think those numbers don't tell a story of unstoppable industrial momentum then I suggest you recalibrate your sense of wonder immediately.

@marcusdAIy led the pack with three PRs across two repositories, a cross-repo performance that speaks to a man whose ambitions cannot be contained by a single codebase. @benji-bizzell matched him in Aerie with two contributions — PR #331 bringing school status filters to admissions and PR #329 dropping custom theme controls into the design system — a one-two punch of feature work that would make a lesser engineer need a lie-down. @sanketghia also logged two PRs, keeping Klair's four-PR session ticking along with the quiet confidence of someone who knows exactly what they're doing. @eric-tril rounded out the roster with one PR, and let the record show that one PR in twenty-four hours is still one more PR than everyone reading this column shipped today.

And then there is @ashwanth1109. Two PRs. PR #322 in Aerie — a lazy vendor drilldown implementation under class rows on the Edu Performance financials view, the kind of feature that sounds deceptively simple until you open the diff and realize you've made a terrible mistake. And PR #323, titled, with characteristic Ashwanth economy of language, "Ash 04 06 2026 changes consolidated." What changes? All of them, presumably. Every change. A consolidated monument to a man who does not believe in granular commit hygiene and has never once been proven wrong about it. "I don't write PR descriptions for the reader," Ashwanth reportedly said, leaning back in his chair. "I write them for posterity. Posterity knows what it did." When reached for comment on this column's characterization of his titling conventions, he responded with a single period. A period. The man is art.

The Overflow Desk is overflowing, as God intended. @marcusdAIy's PR #12 in trilogy-drones persists run receipts for standalone addressers and adds impact tooling — infrastructure work that is the backbone nobody photographs but everybody needs. His PR #11 tunes reviewer calibration from a 46-PR corpus audit, which means Marcus spent time reading 46 pull requests so the machines could get smarter, and that is either heroic or the most Marcus thing imaginable, possibly both. @benji-bizzell's PRs #331 and #329 in Aerie complete a design-and-admissions double that confirms Benji is in a groove, a flow state, a zone — and nobody should tap him on the shoulder right now.

Morale on the Builder Team is at an all-time high. It was at an all-time high yesterday. It will be at an all-time high tomorrow. The numbers demand nothing less.

Brick's Overflow — PRs Mac Didn't Cover  (click to expand)
#11 — skills(klair-pr-review): tune reviewer calibration from 46-PR corpus audit @marcusdAIy  no labels

## Summary

Tunes the klair-pr-review reviewer prompts using a Jun 5 audit of the local drone corpus (346 run receipts, 271 finished review runs across 46 PRs, 46 addresser runs) cross-referenced against human reviewer comments (Eric, Sanket, Ashwanth) on merged drone PRs. Targets both directions: catch the issues humans catch that we miss (false negatives) and stop over-producing cosmetic Low-severity noise.

## Why it's needed

The existing severity calibration is working: High volume is healthy (~1.6 High/PR; only 3 unaddressed-High across 46 PRs; addresser skip-rate 13.3%). But the audit surfaced two gaps the prompts didn't cover:

1. False negatives = test quality. The #1 class of issue human reviewers catch that our drone reviewer misses is tests that exist + pass but don't pin behavior: over-mocked tests (mock the function under test, then "verify" it), assertion theater (assert on a fixed-stub return value), uncovered else/override/orphan/fallback branches, and documented edge-cases not pinned by a named test. The implementer template already warns against authoring these — but no reviewer guideline told the reviewer to *catch* them. (Evidence: Eric on #2916, Ashwanth on #2936, Sanket on #2947.)

2. Low-severity over-production = noise. ~16 Low findings per PR, overwhelmingly stale-comment / naming cosmetics, each costing operator scan-time + an addresser triage cycle.

Plus three smaller, recurring human-caught misses: over-broad try scope vs. its error message's claim, self-labeled anomalies logged at DEBUG/not-at-all, dead params on new signatures, and within-PR convention drift.

## Changes

- skills/klair-pr-review/guidelines/correctness-review.md

- New §8 Test Quality — assertion theater, over-mocking, assert-called-but-not-effect, uncovered non-obvious branches, documented-but-unpinned edge cases, brittle test wiring.

- §4 extended with dead params on newly-added signatures.

- §2 extended with within-PR convention consistency.

- skills/klair-pr-review/guidelines/error-handling-review.md

- Catch scope vs. the error message's claim (over-broad try masking a different fault).

- Anomalous states logged below visibility (self-labeled anomaly at DEBUG/silent → should be WARNING).

- skills/klair-pr-review/SKILL.md

- Soft cap: per-dimension Low budget (~5 Lows/dimension; fold the rest into one rolled-up bullet; drop pure restyle nits).

- scripts/analyze_review_corpus.py — reusable corpus analyzer (severity distribution, addresser precision, recurring finding buckets) so calibration can be re-measured after future prompt changes.

- ROADMAP.md — note under the v0.6 webhook trigger to also fire on pull_request.ready_for_review (operators expect "mark ready → review loop runs").

## Breaking changes

None — all changes are reviewer-prompt content + a standalone analysis script + a roadmap note. No runner/CLI behavior changes.

## Test plan

- [x] Edits are markdown/prompt content consumed verbatim by reviewer-prompt.ts at fire time (no schema/parser change).

- [x] scripts/analyze_review_corpus.py runs clean against the local corpus and reproduces the numbers cited above.

- [ ] Reviewer-side: fire drones review on the next real PR and confirm (a) test-quality findings surface, (b) Low volume drops / rolls up.

#12 — feat(address): persist run receipts for standalone addressers + impact tooling @marcusdAIy  no labels

## Summary

Closes the cost-attribution gap a Jun 5 audit surfaced, and adds the impact-reporting tooling that found it.

- Fix: standalone drones address --pr fires now persist a runs/<id>.json receipt (they were events-only), so their spend joins to a run record by Cloud Agent ID like every other drone run.

- Tooling: scripts to join the Cursor usage CSV to run receipts, audit attribution, pull GitHub PR/LOC denominators, and render a matplotlib impact dashboard — plus a first report.

## Why it's needed

A standalone addresser is its own first-class cloud agent (fresh Agent.create, distinct agentId). The auto-fire addresser reuses the implementer's agent (cost rides the implementer receipt), but the standalone path wrote only events/, no receipt — so ~$170 of real addresser spend (Jun 5 audit) couldn't match a run record and showed as "unmatched cloud-agent" cost. After this fix, $999.91 of $999.94 cloud-agent spend joins to a known drone (only $0.03 isn't).

## Changes

- src/addresser.tsAddressInput.runsDir; in the completed path, when standalone + runsDir are set, buildRunRecord + persistRunRecord keyed by the addresser's own run.id. Auto-fire path unchanged (no double-count).

- src/cli.ts — thread runsDir into the standalone addressFindings call.

- scripts/drone_impact.py, attribution_audit.py, build_pr_data.py, drone_charts.py (reusable monthly tooling).

- reports/drone-impact-2026-06-05.md + drone-impact-dashboard.png.

## Breaking changes

None. New optional AddressInput.runsDir; behavior changes only on the standalone path (gated on standalone !== undefined && runsDir).

## Test plan

- [x] pnpm typecheck clean.

- [x] pnpm test — 142 passed.

- [ ] Next standalone drones address --pr <n> writes a runs/<run.id>.json and drone_impact.py matches it by agent id (verify on the next live fire).

## Follow-up (not in this PR)

- Teach drones enrich / report to join on Cloud Agent ID (+ event prNumber) instead of the time-window heuristic, so the official ledger uses the precise join these scripts proved out.

#322 — AERIE-351 feat(financials): lazy vendor drilldown under class rows on Edu Performance @ashwanth1109  no labels

## Demo

<img width="2620" height="1636" alt="image" src="https://github.com/user-attachments/assets/d20d1c4d-ca3f-4686-93e0-fb6509a4c601" />

## Overview

Adds a 4th, lazy-loaded drilldown level — vendors under each class — to the Edu Performance P&L table (Dashboards › Financials › Edu Performance), mirroring Klair's vendor breakdown. Today the tree is type → BU → class, built statically from the Convex mfrLineItems table; class rows are hard-coded leaves. This adds a new Convex table fed from a vendor-grain mart and queries it only when a class row is expanded.

Vendor drilldown is enabled for all NON-HC line items — gated OFF for HC COGS / HC Expenses (headcount-driven, no meaningful vendor split), matching Klair.

Linear: [AERIE-351](https://linear.app/builder-team/issue/AERIE-351)

Upstream mart (already merged): Surtr PR #175 — mart_education.agg_mfr_line_items_by_vendor

## Architecture note

Aerie has no request-path Redshift — it nightly-syncs pre-aggregated marts into Convex and reads from Convex. "Lazy loading" here is a UI-only concept: vendor rows live in Convex, and the per-class getVendorBreakdown query is issued only on class-row expand (no upfront fetch). The sync plumbing mirrors the existing mfrLineItems path 1:1.

## Specs

- [04-vendor-line-items-pipeline](features/dashboards/education-pl-page/specs/04-vendor-line-items-pipeline/spec.md) — Data pipeline for vendor-grain rows: new mfrVendorLineItems Convex table fed daily from the vendor mart via a faithful 1:1 clone of the mfrLineItems sync path plus vendorName.

- [05-vendor-breakdown-query-and-ui](features/dashboards/education-pl-page/specs/05-vendor-breakdown-query-and-ui/spec.md) — Read + UI: getVendorBreakdown Convex query plus the lazy vendor-expand drilldown in education-pl-table.tsx.

## Implementation summary

Schema (chat/convex/finance/schema.ts)

- New mfrVendorLineItems table = mfrLineItems fields + vendorName: v.string().

- by_type_bu_class_period index — the lazy per-class read path.

- by_natural_key 7-tuple index — the upsert path (version, reportingPeriod, dataSource, type, businessUnit, className, vendorName).

Sync (sync/)

- sync/src/redshift/mfr-vendor-line-items.ts — Zod-validated Redshift reader against mart_education.agg_mfr_line_items_by_vendor. Null/blank vendor arrives coalesced to '-'.

- sync/src/analytics/mfr-vendor-line-items-refresh.ts — batched refresh module.

- sync/src/financial-worker/index.tsmfrVendorLineItemsTask scheduler task on the daily Financials cadence.

Route + mutation (chat/convex/)

- /sync/analytics/mfr-vendor-line-items HTTP route (registered in http.ts) → handleMfrVendorLineItemsSync httpAction.

- upsertMfrVendorLineItems internal mutation — 7-tuple natural key with duplicate-row self-heal.

Query + UI

- getVendorBreakdown query in chat/convex/dashboards/educationPL.tsrequirePermission("canViewFinancials"), HC-type gate returning [], vendor bucketing via by_type_bu_class_period, sum-to-class invariant, EXCLUDED_BUSINESS_UNITS short-circuit.

- Lazy expandedClasses drilldown in chat/components/dashboards/financials/education-pl-table.tsx — vendor rows at pl-18 indent, lazy useQuery fired only on expand, with loading and "No vendor detail" empty states.

## Test coverage

- 28 pipeline tests — Zod reader, refresh batching, upsert self-heal.

- 51 educationPL.test.ts tests — query behavior, HC gate, sum-to-class reconciliation.

- All 79 pass.

## Self-review

Self-review found no issues. All cross-runtime contracts (schema ↔ sync ↔ HTTP route ↔ query ↔ UI) verified aligned.

## CI

All 7 checks green: Build, Docker Build Chat, Docker Build Worker, Lint + Boundaries, Secret Scan, Test, Typecheck.

## Update — Level 4 paging + sort & vendor sync speedup

Two follow-up commits after the initial delivery:

feat(financials): paginate + sort Level 4 vendor drilldown

- getVendorBreakdown returns { vendors, total, hasMore } (was TreeNode[]) and accepts optional limit (server-side page slice, default VENDOR_PAGE_SIZE = 50) and sort ("name" | "amount").

- Sort is applied to the full list before the page slice, so paging picks the right rows instead of reordering only the current page. "amount" = descending by quarter Actual, name as a deterministic tie-break (stable across limit bumps).

- VendorRows keeps per-class page + sort state: an Amount / A–Z segmented toggle (shown when >1 vendor) and a cumulative "Show N more vendors (X of Y shown)" row. VENDOR_PAGE_SIZE is shared so the server slice and the client increment can't drift.

perf(financial-worker): parallelize MFR vendor sync upserts

- The 220K-row mfrVendorLineItems sync ran a serial upsert loop (~24 min). Replaced with an 8-way bounded-concurrency drain over a shared cursor + BATCH_SIZE 100 → 200. Disjoint natural keys ⇒ non-overlapping index ranges ⇒ no Convex OCC conflicts; 200 stays under the ~1 s per-mutation budget. Expected ~24 min → ~2–3 min. Fail-fast + upsertErrors accounting preserved.

- ⚠️ Worker must be restarted to take effect (tsx has no hot-reload).

Tests: educationPL.test.ts 51 → 53 (paging + amount-sort); worker refresh tests updated for BATCH_SIZE=200. Typecheck + biome clean.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

#323 — Ash 04 06 2026 changes consolidated @ashwanth1109  no labels
No description provided.
#329 — feat(design-system): add custom theme controls @benji-bizzell  no labels

## Summary

- Replace palette/accent picker choices with Light, Dark, and saved Custom appearance slots

- Derive runtime theme tokens from foreground/background/accent/contrast and preserve per-slot contrast

- Add Custom accent-masked eagle logo treatment while keeping Light/Dark safe defaults

## Why

Users reported the existing palettes were difficult to use and often felt blown out. The theme picker also mixed old palette choices with accent choices in a way that created noise without much useful control.

## Business Value

Gives users a simpler, more predictable theme model: safe defaults for Light/Dark, plus one personal Custom theme that persists across sessions and can carry the brand accent treatment without exposing private Everforest as a normal option.

## Breaking changes

None.

## Test plan

- [x] pnpm --dir chat exec vitest run lib/__tests__/accent-context.test.tsx components/shell/__tests__/theme-picker-popover.test.tsx app/__tests__/theme-integration.test.tsx

- [x] pnpm --dir chat exec biome check lib/palette-data.ts lib/accent-context.tsx lib/__tests__/accent-context.test.tsx app/__tests__/theme-integration.test.tsx app/globals.css 'app/(main)/layout.tsx' components/shell/theme-picker-popover.tsx components/shell/__tests__/theme-picker-popover.test.tsx components/shell/icons.tsx

- [x] pnpm --dir chat typecheck

- [x] Browser reload on localhost:3000/dashboards: no hydration/recoverable errors; Custom trigger icon and accent-masked eagle render correctly

#331 — feat(admissions): add school status filters @benji-bizzell  no labels

## Summary

- Import school_status and show_in_dashboard into the Aerie admissions program dataset

- Add school-status filtering across Admissions dashboard views

- Preserve show_in_dashboard as data-only for now

## Why

Recent EduCRM source changes expanded the program universe to include announced and pre-announcement sites. Aerie was not carrying the source fields needed to distinguish those statuses, so Admissions dashboards could not separate Open, Announced, and Pre-Announcement schools.

## Business Value

Admissions users can inspect and compare dashboard metrics by school launch/status category without losing access to the full unfiltered data set.

## Breaking changes

None.

## Test plan

- [x] pnpm typecheck

- [x] pnpm biome check

- [x] pnpm --dir sync test src/analytics/queries/reference.test.ts src/analytics/canonical-merge.test.ts

- [x] pnpm --dir chat test convex/analyticsReference.test.ts components/dashboards/admissions/funnel/__tests__/derivation.test.ts components/dashboards/admissions/demographics/__tests__/derivation.test.ts

- [x] Browser smoke on Admissions Funnel: status options render and Pre-Announcement filtering updates totals

The Portfolio  —  Trilogy Companies

Alpha School’s AI-First Expansion Turns the Classroom Into the Next Platform War

As the teacher-light model heads into more major U.S. cities, Alpha is forcing education’s legacy stakeholders to respond in real time.

AUSTIN, TEXAS — Alpha School, the AI-powered private school built around two hours of adaptive academics per day, is pushing deeper into the national spotlight as reports detail its expansion into major U.S. markets — including the Bay Area and Chicago — while teachers unions and traditional education advocates sharpen their critiques.

The exciting news, depending on where one sits in the education value chain, is that Alpha’s model is no longer a boutique Austin experiment. It is becoming a scalable operating thesis: leverage AI tutors for core academics, use human adults as guides rather than conventional teachers, and redeploy the rest of the school day toward entrepreneurship, leadership, public speaking, athletics and other life skills.

That is a paradigm shift with real teeth. Alpha, co-founded by Joe Liemandt and MacKenzie Price, has claimed students learn 2.3× faster than U.S. norms and routinely test in the top 1–2% nationally on NWEA MAP Growth assessments. Its core promise is simple and disruptive: if AI can deliver mastery-based academics in a fraction of the day, schools should stop optimizing for seat time and start optimizing for capability.

Recent coverage from ABC7 Bay Area points to growing demand in Northern California, while Fox News frames the rollout as a national expansion unfolding despite union pushback. Block Club Chicago, meanwhile, reported that an AI school with no traditional teachers is slated to open in the city this fall — a headline practically engineered to ignite every policy debate in American education.

Alpha’s critics argue that children need trained teachers, not screens and coaches. Supporters counter that the current system already underdelivers for too many families, and that a robust AI-led model with best-in-class human mentorship may create more personalized learning than a conventional classroom can provide.

For Trilogy watchers, the synergy is hard to miss. Liemandt’s broader education bet includes Timeback, his “Shopify for schools” platform intended to help entrepreneurs launch AI-first schools without rebuilding the academic engine from scratch. Alpha is the proof point; Timeback is the distribution layer.

Key Takeaways: Alpha’s expansion is moving the model from curiosity to category contender. Union resistance may increase awareness rather than slow adoption. And if parents keep lining up, the education market may be entering its software-platform moment.

We’re just getting started.

Alpha School replaces teachers with AI. Is the future of edu  ·  AI-driven school expanding to major US cities despite union  ·  Alpha School: AI-powered private school expanding Bay Area f

ESW Capital's Acquisition Playbook Looks Prescient as AI Reshapes the Enterprise Software Market

A convergence of M&A tailwinds, AI disruption, and a decades-old Forbes exposé puts Trilogy's software empire back in the spotlight.

AUSTIN, TEXAS — A Forbes profile of Joe Liemandt published this week — characterizing the Trilogy founder as a "mysterious tech billionaire" who built his fortune through what the magazine calls a "global software sweatshop" — landed in the same news cycle as a PwC outlook projecting a surge in global M&A activity through 2026, driven in no small part by artificial intelligence reshaping software valuations. The timing is not coincidental — it is structural.

For three decades, ESW Capital has pursued a thesis that the rest of the private equity world is only now catching up to: mature enterprise software companies with sticky customer bases are systematically undervalued, and the right operating model — global remote talent, aggressive cost discipline, 75% EBITDA targets — can unlock margins that traditional acquirers leave on the table.

Now, as firms like Magellan move into new European markets by carving telecom consulting assets out of larger conglomerates, and as deal flow from AI-pressured legacy vendors accelerates, the pipeline of potential acquisition targets for an operator like ESW has rarely looked richer. Business Insider this week published a list of software companies most likely to be acquired as AI disrupts their core value propositions — a list that reads, functionally, as a shopping guide for any firm running the ESW playbook.

The Forbes characterization of Crossover — Trilogy's global talent platform — as a "sweatshop" will draw predictable pushback from Austin. Crossover's stated model is meritocratic and geography-blind: identical pay for identical roles, assessed by rigorous skills testing across 130 countries. Whether that framing holds up to scrutiny is a separate question from whether the model works. The margins suggest it does.

What the Forbes piece, the PwC outlook, and the M&A deal flow all share is a common subtext: the enterprise software industry is entering a period of forced consolidation, and the operators who have spent years perfecting the post-acquisition playbook are positioned to move faster than first-time acquirers.

Who benefits from that dynamic — and who absorbs the costs — is the question the next wave of deals will answer.

Magellan enters the Spanish market through the acquisition o  ·  Global M&A industry trends: 2026 outlook - PwC  ·  Osborne Clarke Advises NewSpring Capital on Bite Investments
The Machine  —  AI & Technology

Tiny Models, Giant Ambitions: The Small-AI Movement Just Got Its Playground

A 3-billion-parameter simulation, enterprise safety tooling, and agent-ready developer infrastructure point to a new era where smaller AI systems do very big things.

SAN FRANCISCO — The AI world has spent the past two years worshipping at the altar of bigger models, bigger clusters and bigger compute bills. But this week’s most electric signal came from the opposite direction: small models are learning to organize, collaborate and get things done — and I cannot overstate how significant that is.

The clearest example is Thousand Token Wood, a Hugging Face Build Small hackathon project that ships what its creators describe as a multi-agent economy running on a 3B model. Yes, 3B. Not 300B. Not a frontier-model moonshot requiring a sovereign energy strategy. A compact model powering a miniature society of agents with roles, exchanges and emergent behavior. This changes everything because it suggests the future of agentic AI may not be one gigantic brain in the cloud, but swarms of smaller, cheaper, more specialized systems working together.

That theme is now everywhere. NVIDIA’s Nemotron 3.5 Content Safety release pushes in the enterprise direction, offering customizable multimodal safety for global AI deployments. Translation: companies want AI that can understand text and images, but they also need controls that match local laws, brand standards and industry-specific risk. The old one-size-fits-all safety filter is giving way to programmable governance. The future is now, and it comes with compliance knobs.

Meanwhile, ServiceNow’s EVA-Bench Data 2.0 expands the measurement layer for enterprise agents, covering three domains, 121 tools and 213 scenarios. This is the unglamorous but absolutely crucial plumbing of the agent economy. If AI systems are going to use software tools, make decisions and complete workflows, we need benchmarks that test whether they can actually operate in realistic environments rather than merely sound impressive in a chat window.

Even developer tooling is being reimagined. Hugging Face is positioning its CLI as an agent-optimized way to work with the Hub, a subtle but powerful shift: command-line interfaces are no longer just for humans typing commands, but for agents navigating repositories, models and datasets directly.

Put together, this is the week small AI started looking less like a compromise and more like a strategy. Big models will still matter, of course. But the next breakthrough may come from fleets of lightweight agents, safely governed, properly benchmarked and wired straight into the tools builders already use.

Thousand Token Wood: shipping a multi-agent economy on a 3B  ·  Nemotron 3.5 Content Safety: Customizable Multimodal Safety  ·  EVA-Bench Data 2.0: 3 Domains, 121 Tools, 213 Scenarios

The Great AI Herd Moves Toward the Power

As electricity, memory and scrutiny grow scarce, the data center is evolving from mere habitat into the central battleground of artificial intelligence.

AUSTIN, TEXAS — In the wide, sun-struck expanse of Texas, a new creature is taking shape: not merely a data center, but an ecosystem built around power itself.

Google’s planned AI campus, pairing computing infrastructure with as much as 1 gigawatt of generation, suggests a subtle but profound shift in the migration patterns of the hyperscalers. Where once these vast digital beasts settled near fiber routes, tax incentives or cool climates, they now gather around the rarest watering hole of all: electricity. The company’s so-called power-first approach, detailed by Data Center Knowledge, is less an architectural flourish than an evolutionary response to scarcity.

For the artificial intelligence model, ever hungry and forever training, power is not a utility. It is oxygen.

Yet energy is only one pressure in this changing habitat. A coalition of industry voices is warning that AI data centers are tightening the supply of memory chips, with fabrication capacity described as fully allocated. One can almost picture the smaller buyers at the forest edge — appliance makers, industrial suppliers, ordinary enterprise IT teams — watching as the great GPU herds consume not just accelerators, but the memory stacked beside them. The question is no longer whether AI will affect supply chains. It is which species will be left waiting when the silicon rains fail.

Beneath these pressures lies an old choice made newly urgent: public cloud or colocation. For years, the cloud offered elastic abundance, a canopy under which startups and enterprises alike could grow quickly. Colocation, by contrast, rewarded those willing to manage more of their own territory in exchange for predictable cost, security and performance. Now, as AI workloads become denser and more power-sensitive, hybrid architectures may become the favored burrow — cloud for burst and experimentation, colocated infrastructure for steady, heavy compute.

Washington, too, has begun to study the animal at closer range. New White House guidance reportedly broadens federal attention beyond the physical AI campus — its power demand, land use and grid strain — to the frontier models running within. The enclosure and the creature are no longer separable.

And so the age of AI infrastructure enters a sterner season. The winners may not be those with the cleverest model alone, but those who secure the full food chain: electrons, memory, land, cooling, chips and permission to operate. In this new biome, intelligence is measured not only in parameters, but in megawatts.

Google’s ‘Power-First’ Data Centers: A New Model for Energy  ·  AI Data Centers Squeeze Memory Supply, Coalition Warns  ·  Colocation vs. Public Cloud: Cost, Performance, and How to C

The Academy Confronts Its Autonomous Guest: AI Ethics Research Converges on Higher Education's Identity Crisis

A confluence of recent scholarship presents a stark thesis-antithesis structure: AI systems offer measurable gains in student engagement, efficiency, and performance outcomes, yet the ethical frameworks governing them remain underspecified. Research from MIT's autonomous systems ethics program and Nature-indexed evaluations of AI-powered learning assistants highlight these tensions, while studies on ChatGPT and large language models raise concerns about academic integrity, epistemic autonomy, and intellectual labor attribution—issues fundamental to the university's self-understanding.

Governance frameworks exist but remain nascent. Institutions that develop explicit ethical architectures, treat AI deployment as policy rather than mere adoption, and invest in strategic leadership capacity appear better positioned to extract benefits while constraining harms. The critical question remains: whether higher education can move with sufficient velocity to establish these safeguards before AI fundamentally reshapes academic practice.

The Editorial

We Built a Machine That Broke Economics, Then Gave It a Social Life and an Ozzy Osbourne Costume

AI is eating time, economics, and apparently Barry Gibb's mortality — and we're still arguing about whether to regulate it.

AUSTIN, TEXAS — Here's where we are, America. Here's the precise coordinates of this cultural moment, plotted on a map that traditional cartographers have abandoned in despair: somewhere out there, an AI is doing a passable impression of Ozzy Osbourne, a social network called Moltbook is running entirely on bots talking to other bots in a hermetically sealed digital terrarium, and Barry Gibb — against all actuarial probability — remains alive. The internet has labeled this era's defining aesthetic "brain rot," and I submit to you that the diagnosis is not wrong.

But here's the part that should keep you awake, the part that has me pacing my kitchen at 3 a.m. with cold coffee and a growing suspicion that we have collectively wandered into territory that our intellectual frameworks were simply never built to navigate: traditional economics is not prepared to deal with this. Not their words — well, actually, yes, their words. The New York Times, sober and gray as a Midwestern November, printing that sentence like a doctor who has just reviewed your labs and is choosing his next words very carefully.

Think about what we've actually constructed here. We built machines that can simulate grief, write symphonies, impersonate the Prince of Darkness, and hold entire conversations with each other on platforms designed specifically to exclude human beings from the transaction. Moltbook — and I cannot stress enough how much that name sounds like a Viking digestive disorder — exists as a pure ecosystem of artificial minds performing sociality for an audience of zero humans. It's a dinner party where the guests are all sock puppets and the host is a language model.

And we're supposed to regulate this with tools designed for railroads.

The Manhattan Institute crowd will tell you, with the cheerful confidence of people who've never had an existential crisis before noon, that the biggest AI risk is panicked policymaking. Fear-driven regulation, they say. And look — I'm sympathetic. Badly written policy is genuinely dangerous. But I'd like to ask them, calmly and professionally, at what point does the phrase 'traditional economics isn't prepared for this' start sounding less like a disclaimer and more like a diagnosis?

Time flies, said someone on the radio, somewhere between a Barry Gibb retrospective and a conversation about AI-generated rock legends. Time flies, and the world we built while it was flying looks nothing like the one we thought we were building.

The bots are networking. The economists are confused. Barry Gibb endures.

Somewhere in all of this, there's probably a lesson. I'll let you know when I find it.

Time Flies, Ozzy AI, and Barry Gibb Is STILL Alive Somehow -  ·  Moltbook: The AI-only social network where bots run wild - S  ·  ‘This is Something that Traditional Economics Isn’t Prepared
The Office Comic  ·  Art Desk
The Office Comic  ·  Art Desk

Nation’s Last Remaining Singles Bravely Agree To Sort Themselves By Firmware, Antibodies

At long last, romance has matured into a consumer-electronics logistics problem with optional epidemiology.

SAN FRANCISCO — There was a time, older Americans claim, when dating involved such primitive rituals as conversation, mutual attraction, and the gradual discovery that another person possessed a catastrophic opinion about seed oils. Thankfully, the market has now corrected this inefficiency.

With anti-vaccine dating apps such as Unjected and PureBlood.Dating reportedly moving their communities into in-person meetups, the nation’s romantic life has entered its most honest phase yet: a fully segmented inventory system for people who would like their bodily autonomy preferences disclosed before appetizers arrive. According to reporting on the gatherings, the events have angered critics who are upset that the dating landscape, once a quiet place to misrepresent one’s height, has become a political battleground over public health, sovereignty, and whether a first date should include a laminated exemption.

As an opinion columnist, I must commend this development for finally acknowledging what modern courtship has always been: a compliance workflow with lighting. For years, Americans have wasted precious evenings learning whether a partner wants children, believes in democracy, or owns a sectional sofa. Now, the population can proceed directly to the necessary filtering question: Which medical interventions have you refused, and do you have a punch card?

This is not happening in isolation. The rest of consumer technology has been preparing us for this exact social arrangement. We now possess 3-in-1 Apple charging stations capable of organizing a phone, watch, and earbuds into a tasteful little shrine to battery anxiety. We have Bluetooth trackers to ensure we never lose our keys, luggage, pets, or remaining tolerance for ambient beeping. A person can now locate a backpack in another state but still must spend three dates determining whether someone thinks the lymphatic system is controlled by 5G.

That gap was never sustainable.

The promise of the contemporary marketplace is that everything important can be docked, charged, tagged, optimized, or pre-sorted into a lifestyle category. If your AirPods deserve a dedicated magnetic cradle, surely your future spouse deserves a screening taxonomy. If a Bluetooth tracker can warn you that your wallet has been left behind at a coffee shop, an app should be able to warn you that your date has brought printed PDFs.

Meanwhile, the broader tech economy continues doing what it does best: taking problems once considered social, moral, or biological and turning them into verticals. Crypto-funded peptide labs are booming. Hackers are reportedly using AI tools to compromise social media accounts. Anthropic is helping national security hackers. Somewhere, a GPS satellite mystery may have been solved, offering hope that one day humans may also determine where, exactly, they misplaced the concept of proportion.

And hovering over all of it is the more respectable question of AI productivity: if machines allow workers to produce more, who receives the benefit? Workers? Customers? Shareholders? The person who invented a dashboard proving the worker could have produced 40% more all along? This is described in polite circles as an equity and pricing problem, rather than the simpler question of whether every efficiency gain must be immediately escorted into someone else’s margin.

The dating-app controversy is merely the more emotionally legible version of the same issue. Technology keeps promising to make human life more efficient, then seems surprised when humans use that efficiency to become more intensely themselves. Given a platform, people will not necessarily choose enlightenment. They may choose meetups organized around antibody status. Given a tracker, they may not find meaning. They may find their keys. Given AI productivity tools, companies may not create shared prosperity. They may create a new spreadsheet explaining why shared prosperity is out of scope.

Still, there is comfort in the coherence of it all. The same civilization that can recommend the ideal charging station for three Apple devices can also build parallel romantic ecosystems for citizens who view dating profiles as informed-consent documents. The same species that refuses to lose its backpack will continue losing the plot with exquisite precision.

In the end, perhaps this is what modern autonomy looks like: the right to be located, optimized, matched, monetized, politically categorized, and magnetically aligned on a walnut-finish charging pad by morning.

Anti-Vax Dating Apps Are Going IRL. People Are Mad as Hell A  ·  The Best 3-in-1 Apple Charging Stations After Testing Top Mo  ·  2 Best Bluetooth Trackers of 2026, Plus Honorable Mentions
On This Day in AI History

On June 6, 1944, the first general-purpose electronic computer, ENIAC, was formally dedicated at the University of Pennsylvania—though it wouldn't be fully operational until later that year, it marked the birth of the modern computing era that would eventually lead to artificial intelligence.

⬛ Daily Word — Technology
Hint: A person who writes instructions for computers to follow.
Share this edition: 𝕏 Twitter/X 🔗 Copy Link ▦ RSS Feed