Vol. I  ·  No. 192 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, JULY 11, 2026 Powered by Anthropic Claude  ·  Published on Klair Trilogy International © 2026
🖶 Download PDF 🖿 Print 📰 All Editions
Today's Edition

The Axe and the Checkbook

Big Tech has shed nearly 165,000 jobs in AI's name this year — while the labs bid up the very professors who built the thing.

SAN FRANCISCO — Tech companies have cut close to 165,000 jobs in 2026, and a rising share of the pink slips finger the same culprit: artificial intelligence.

Oracle, Meta, Microsoft and Samsung head the running tally, which spans dozens of firms and climbs by the week. The stated reasons run the same groove — efficiency, reprioritization, machines picking up the load.

Trade desks now keep a separate ledger of every 2026 layoff that name-checks AI out loud. That column keeps filling.

Microsoft ran its cuts in two moves. Buyouts first, layoffs second — the company floated voluntary exits, cash on the barrel, before the slips followed. The order matters: soften the blow, trim the volunteers, then swing.

Xbox took the hardest hit. The chief executive said the unit "didn't focus on the core business." Roughly one in five Xbox workers is headed out the door.

Here's where the ledger stops balancing.

While clerks and coders pack their desks, the AI labs are hurling money the opposite direction. Anthropic, OpenAI, Meta and DeepMind are raiding university faculty, luring professors off the tenure track and onto corporate payroll.

Deans are fretting. Their sharpest AI minds keep walking, and the checks the labs write are hard to match on a campus budget. Lose the professor, and you can lose the students who came to study under him.

So one industry pulls both levers at once. One hand sheds 165,000 bodies. The other bids up a thin band of brains it cannot mint fast enough.

That's the tell. The layoffs aren't a retreat from AI — they're a wager on it.

Firms are swapping broad headcount for narrow expertise. Fewer hands, costlier heads, and a bet that the software covers the gap.

The playbook isn't news down in Austin.

Trilogy International's Crossover has sold remote, "top 1%" talent at one flat, above-market wage across 130-plus countries for years. Same efficiency gospel Big Tech now preaches under duress.

ESW Capital runs 75-plus enterprise software firms on that lean logic, buying at one to two times revenue and squeezing out the slack. Alpha School teaches K-12 in two hours a day, AI tutors carrying the load while the payroll stays thin.

Where Big Tech now cuts to chase the model, Trilogy wired the whole machine around it first.

The count sits near 165,000 and rising. The scramble for professors is only warming up.

One industry, two headlines the same morning: help wanted, and nobody's safe.

Every major tech layoff in 2026 that has name-checked AI - T  ·  Tech layoffs 2026: Nearly 165,000 jobs cut at Oracle, Meta,  ·  Microsoft’s workforce reduction strategy: Buyouts first, lay

The Last Decimal: How AI Is Redrawing Venture Capital's Return Curve

From Bezos' family office to corporate VCs, capital is concentrating fast — and a legal war between Apple and OpenAI signals the partnerships holding this boom together are under strain.

NEW YORK — The numbers from the first half of 2026 are unambiguous: North American startup funding shattered records in H1 2026, driven almost entirely by AI. The surge is pulling in capital from every category of institutional investor — and concentrating it with unusual speed.

Jeff Bezos' family office has been systematically adding AI startup positions, according to reporting from Family Wealth Report. The move is consistent with a broader shift among ultra-high-net-worth family offices, which have spent the past 18 months reallocating away from traditional private equity toward direct venture bets in foundation models, AI infrastructure, and vertical software.

At the same time, corporate venture capital is evolving in a less obvious direction. PitchBook data shows CVCs are spending more per deal while doing fewer of them — a classic flight-to-quality pattern that typically precedes a shakeout in the underlying startup population. Dry powder is not the constraint; conviction is.

One sector drawing particular attention is quantitative finance. A cohort of AI startups is now targeting hedge funds' proprietary research and signal-generation processes — the so-called secret sauce that justifies the two-and-twenty fee structure. These startups argue that LLM-based systems can replicate and scale the pattern-recognition work that quant analysts spend years developing. Hedge fund adoption remains cautious; the liability for a bad trade is immediate in ways that, say, a bad customer-service chatbot is not.

The macro picture is complicated by a high-profile legal rupture. Apple has sued OpenAI, accusing the company of misappropriating trade secrets. The two struck a distribution deal in 2024 that embedded OpenAI's technology inside Apple devices — an arrangement that, at the time, was read as validation for both parties. That partnership has now soured into litigation, a reminder that the alliances being signed at speed during an investment boom carry execution risk that term sheets do not price.

For investors deploying capital into AI at record pace, the Apple-OpenAI dispute is instructive: the value in AI accrues to those who control proprietary data and distribution, and both sides of any partnership believe they are the one holding those cards.

Bezos' Family Office Loads Up On AI Startup Investments - Me  ·  A new wave of AI startups wants to automate hedge funds' sec  ·  CVCs are spending more on less - PitchBook

IPO Hopefuls Warm Up in the Tunnel as Fintech and AI Cloud Stocks Test the Tape

After a long freeze in tech listings, investors are watching the runway reopen. Crunchbase has published a list of 15 companies that could debut in 2026 if momentum continues. At the forefront is Plaid, the fintech infrastructure player that connects consumer bank accounts to apps. Its CFO told The Wall Street Journal the company has "earned the right to pick our time" for an IPO.

Recent fintech success is fueling optimism. Figure Technology's September IPO has surged roughly 50% since its offer price, creating a template for other hopefuls. If investors continue rewarding growth and credible infrastructure plays, the IPO window widens further.

However, challenges loom for AI infrastructure players. CoreWeave's stock sank 11% after Meta announced plans for its own cloud business, signaling that hyperscalers and platform giants are increasingly crowding the market. GPU-cloud competitors like Lambda and Crusoe now face intensified competition.

The 2026 IPO class shows rising fintech confidence and stress-tested AI valuations. Private tech champions are preparing to enter the public markets.

Haiku of the Day  ·  Claude HaikuMoney chases ghosts—
AI learns to speak first, fast—
truth sleeps in the tape.
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
Xbox's 20% Staff Reduction Raises Questions AI Industry Must Confront About Acquisition Promises
REDMOND, WASHINGTON — Pursuant to disclosures contained within internal communications attributed to Xbox Chief Executive Officer Asha Sharma, and subsequently disseminated into the public record, it has been confirmed that Microsoft's Xbox division has effectuated a reduction-in-force constituting approximately twenty percent (20%) of its total employee complement, hereinafter referred to as "the Workforce Reduction," with said Workforce Reduction being understood to disproportionately impact personnel affiliated with studios previously acquired under representations — whether express or implied — that such acquired developers would be insulated from termination events of the nature herein described. Notwithstanding prior assurances, the Workforce Reduction, as reported by parties with knowledge of the aforementioned internal communications, is understood to constitute one of the more substantial restructuring events to have been undertaken by a major gaming platform holder within the relevant period, with studio closures having been simultaneously effectuated. The Workforce Reduction, it should be noted, occurs within a broader technological and informational environment in which institutional credibility has been subjected to considerable strain.
Reinforcement Learning Stages a Renaissance — But 'Safe' Remains the Operative Word
CAMBRIDGE, MASSACHUSETTS — It could be argued — and, the present author would venture, with considerable empirical warrant — that the current epistemic moment in machine learning research is characterized less by novelty than by what one might term 'foundational recuperation': a systematic re-examination of premises that were, perhaps prematurely, treated as settled.
Apple’s Next CEO Has One Job: Make the Phone Feel Smart Again
CUPERTINO — I'll be honest, the most interesting leadership challenge in tech right now is not whether Apple can ship another beautiful slab of glass, but whether it can make that slab feel alive again.
TILLY NORWOOD DOESN'T EXIST AND HOLLYWOOD IS ABOUT TO GIVE HER AN OSCAR
HOLLYWOOD, CALIFORNIA — Let me tell you about the precise moment civilization jumped the shark: it was sometime last week, when Variety, Deadline, ABC News, and CBS News all dutifully reported — in the breathless tones normally reserved for the Second Coming or a Marvel casting announcement — that an AI-generated actress named Tilly Norwood will headline a feature film called Misaligned.
The Mirror Is Cracked: AI's Bias Problem Is Us, Reflected Back at Ourselves
AUSTIN, TEXAS — Here is a thing we did: we took centuries of accumulated human prejudice — the redlining, the hiring discrimination, the actuarial tables that quietly sorted people by zip code and called it math — and we fed it to a machine, and we called the machine intelligent, and we were surprised, genuinely surprised, when the machine turned out to be prejudiced. And yet. The conversation around AI bias in 2026 has reached a kind of anxious maturity — the think pieces are everywhere, the frameworks are multiplying, EY is publishing human-centric fairness guides, Palo Alto Networks is cataloguing bias types like a field guide to our own worst instincts — and all of it circles the same terrifying drain: the data we used to train these systems was never neutral, because humans are never neutral, and now we have built something vast and automated and allegedly objective that is, in fact, a perfect crystallization of our least examined assumptions. Consider what Reuters is reporting on AI bias in the insurance industry, where algorithmic underwriting tools are being asked to decide who deserves coverage and at what price, decisions that will ripple through people's actual lives — their health, their homes, their financial survival — and the systems making those decisions learned from historical data that encoded every ugly pattern of who was considered a risk and why, and by whom.
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 Kills Production Blockers, Rewires Data Foundations Across Four Repos

From a critical IAM fix that finally put the PS Pipeline into production, to a sweeping budget-table rehome spanning Klair and Surtr, the AI Builder Team delivered a day of consequential, load-bearing work.

When a Lambda role hits a 403 on its very first production run and a revenue dashboard goes dark before a single row is written, you don't wait — you fix it. That's exactly what @eric-tril did with PR #691, threading the needle on a missing `redshift:GetClusterCredentials` grant that had the PS Pipeline dead on the launchpad. One IAM policy attachment later, the pipeline cleared end-to-end and the PS Revenue dashboard tables started refreshing on schedule. That's your lede, folks. That's the kind of unglamorous, surgical work that separates teams that ship from teams that sprint in circles.

But @eric-tril wasn't done. He also closed a silent data integrity hole in the GL detail layer (PR #690, Surtr) where loan-principal wires routed through custodians — the so-called FFC wires — were falling out of the finance team's loan book entirely. Charles Schwab was showing up as the borrower. Schedule B was understating real balances. It's the kind of bug that lives quietly in the dark until it doesn't, and @eric-tril found it and killed it before it became a firestorm. Two PRs. Two production problems solved. The man is on a run.

Zoom out, and the day's most architecturally significant story is the budget-table rehome — a coordinated, dual-repo migration led by @mwrshah that touched both Klair (PR #3245) and Surtr (PR #688). Two tables, `budgets_recurring_revenue` and `arr_budget_snapshots`, have been evicted from `mart_customer_success` and resettled properly in `staging_gsheets` under new, semantically precise names. Backend services, stored procedures, pipeline writers and readers, snapshot loaders, drift guards — all repointed. The fact that this landed cleanly across two repos in a single batch is a coordination win that deserves more credit than it will get.

On the product intelligence side, @benji-bizzell added structured Education finance guidance to the Data API `/meta` endpoint (PR #3250, Klair), giving agents the durable business context they need to choose correct source tables and reconstruct Education finance datasets consistently. QuickBooks workflows start from raw exports. MFR and headcount have their own rules. Agents now know this without being told every time. That's the kind of scaffolding that makes everything downstream smarter.

Meanwhile, @kevalshahtrilogy shipped BU-scoped RBAC for the AI Budget Tracking page (PR #3244), pulling access rights live from the TrueFoundry feed and layering department-level visibility controls on top of Klair's existing role system. Clean architecture. Real access control. Shipped.

And then there's marcusdAIy, contributing a pair of PRs in trilogy-drones — per-phase model defaults via environment variables (PR #76) and some address-retro housekeeping (PR #75). When reached for comment, he had thoughts: "The `DRONES_MODEL` single-knob limitation was a real operational gap — running grok on implementer and addresser while keeping opus on reviewer shouldn't require re-passing flags every single fire. I built the right abstraction. Maybe Mac could read the PR body before forming opinions." Sure, Marcus. The env file is a bold frontier. Startup logs that tell you which model resolved from which source: truly the stuff of legend. We're all taking notes.

Mac's Picks — Key PRs Today  (click to expand)
#688 — gsheets-rehome-budget-tables @mwrshah  approved

Rehomes two budget tables out of mart_customer_success into staging_gsheets, repointing all Surtr renewals-pipeline references to the new names.

- mart_customer_success.arr_budget_snapshotsstaging_gsheets.renewals_contract_budgeted_arr_snapshots

- mart_customer_success.budgets_recurring_revenuestaging_gsheets.renewals_contract_budgeted_arr_current_quarter

## What changed

- Writers repointed: snapshot_brr.py (TARGET_TABLE, BRR_TABLE), delete_budget_snapshot_cycle.py (TABLE)

- Readers repointed: snapshot_budget_loader.py, snapshot_drift_guard.py, evaluate_coverage.py, data_loader.py (kept the finance_dw. DB prefix)

- DDL create script retargeted and renamed to create_renewals_contract_budgeted_arr_snapshots.sql

- Docstrings/comments + docs/features schema catalogue updated (snapshot table moved into the staging_gsheets grouping)

- Test assertion updated to the new qualified name

- In-place literal swaps; no config indirection introduced

## Redshift cutover — ALREADY EXECUTED against prod (2026-07-11)

Done ahead of deploy (both old and new names resolve, no breakage window):

1. ✅ S3 backup: s3://jasraj-claude-code-workspace/redshift-backups/2026-07-11/

2. ✅ CREATE (LIKE ... INCLUDING DEFAULTS) + INSERT SELECT into staging_gsheets.renewals_contract_budgeted_arr_snapshots (62,551 rows) and ...arr_current_quarter (17,522 rows), verified equal to source

3. ✅ Old mart_customer_success.arr_budget_snapshots / budgets_recurring_revenue dropped and recreated as late-binding views (WITH NO SCHEMA BINDING) over the new tables — fallback for not-yet-deployed readers (drift guard, budget loader read via the view)

4. ✅ Grants re-applied on new tables + compat views

Remaining: merge + deploy; repoint & redeploy the KLAIR writer proc (see #3245); land the MCP rename (#3215); drop the compat views once all consumers are confirmed on the new names. Manual CLI writers (snapshot_brr.py, delete_budget_snapshot_cycle.py) must not run before deploy.

## Remaining / cutover steps (manual, out-of-band — not in this diff)

This PR only aligns code. The physical Redshift move is separate and must be sequenced after this + the KLAIR PR are merged and prod-deployed, or the pipeline reads an empty/missing table:

1. Both PRs merged → prod-deploy each repo

2. Re-deploy the two KLAIR Redshift procs (see the KLAIR PR)

3. Run the atomic rehome DDL (drafted rehome_budget_tables.sql): per-table CREATE ... (LIKE ... INCLUDING DEFAULTS) in staging_gsheetsINSERT SELECTDROP old → re-GRANT. Run in a single session (Redshift does not support ALTER TABLE ... SET SCHEMA); do not use the semicolon-splitting run_ddl.py.

4. Verify row counts (arr = 62,551 / brr = 17,522), grants, and that the old mart_customer_success tables are gone

### Budget-table writer — out-of-scope dependency (must be handled at cutover)

mart_customer_success.budgets_recurring_revenue (brr) is written by core_budgets.sp_update_consolidated_budgets — a TRUNCATE TABLE + COPY from the budgets Google Sheet CSV (s3://gsheet-data/budgets-simplified/), run via klair-api's manual, quarterly quarterly_budget_load. It is in neither PR and still targets the old name. Because a view cannot be truncated/copied into, the DDL step above must recreate the old name as a view and this proc must be repointed to staging_gsheets.renewals_contract_budgeted_arr_current_quarter (its own follow-up), and it must not run during the cutover window (trivial — it's manual/quarterly). The two mart readers flagged in review (sp_refresh_dim_customer, sp_refresh_map_customer_alias) only *read* brr, so the old-name shim view covers them until redeployed.

S3 safety backups already captured & verified at s3://jasraj-claude-code-workspace/redshift-backups/2026-07-10/.

#690 — fix(gl-detail): classify custodian-routed loan wires (FFC) as loans @eric-tril  approved

## Business Value

Loan-principal wires disbursed through a custodian were silently disappearing from the finance team's loan book (Klair "Book Value → Schedule B"), understating the reported balance for affected borrowers. This fix ensures those loans are classified correctly so Schedule B reflects the true loan book.

## Problem

When a loan wire's borrower sits behind a custodian — named in the wire's "For Further Credit to:" (FFC) field rather than as the direct beneficiary — the GL enrichment mis-classified the row:

- entity_name picked the custodian (e.g. "Charles Schwab"), not the borrower

- loan_party came back NULL (no "Loan"/"Loan Note Principal" keyword in the memo)

Klair's Schedule B selects source_table='month_end_gl_detail' AND loan_party IS NOT NULL AND is_reversal = FALSE and groups by entity_name, so a NULL loan_party dropped the row from the loan book entirely.

Confirmed failing row (Jun 2026): document_number=1692708, account 22916 ("Other Investments: Loans Granted"), a $600k wire to Charles Schwab FFC "BENJAMINCOHEN" — loan_party=NULL, entity_name='Charles Schwab'.

## Changes

- Prompt — custodian look-through: entity_name now resolves from the memo's "For Further Credit to:" name when a wire is routed through a custodian/brokerage (normalizing BENJAMINCOHENBenjamin Cohen), plus a COHEN loan_party rule.

- enrichment _merge_row — loans-granted account guarantee: any non-reversal, non-accrual row on account 22916 ("Other Investments: Loans Granted") is a loan disbursement by definition, so it always gets a non-null loan_party (falling back to OTHER only when the borrower can't be resolved) and transaction_purpose='Loan principal' — even when the memo has no loan keyword.

Existing classifications (LIEMANDT / JL_ENTERTAINMENT / BLOOMTECH, and TelcoDR / Haveli / Gigafund → null) are unchanged.

## Verification

- pytest tests/ — 73 passing (4 new cases: 22916 fallback, preserves a resolved COHEN, reversal excluded, accrue-interest excluded); ruff clean.

- Ran the full pipeline locally against Jun 2026 → doc 1692708 now enriches to loan_party='COHEN', entity_name='Benjamin Cohen', transaction_purpose='Loan principal', and passes Klair's Schedule B filter grouped under "Benjamin Cohen".

SELECT document_number, account_number, entity_name, loan_party, transaction_purpose, is_reversal

FROM core_finance.month_end_fct_pi_gl_enriched

WHERE document_number = '1692708';

## Follow-ups (not in this PR)

- Backfill periods older than the rolling window (May/Jun/Jul) to re-tag any earlier custodian-routed loans that were dropped the same way.

- TelcoDR loan wires (account 25500) surfaced during testing are intentionally left null here and will be handled separately.

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

#691 — fix(ps-pipeline): grant redshift:GetClusterCredentials on the dbname resource @eric-tril  approved

## Business Value

Unblocks the PS Pipeline in production. The first real Lambda run failed before writing any data, so the PS Revenue dashboard tables were not refreshing. This is the last blocker to the pipeline running end-to-end on its schedule.

## The bug

The deployed Lambda role could authenticate the Redshift Data API but not obtain cluster credentials — the first Redshift call (truncate_and_copy_from_s3) failed with a 403:

User: .../pipeline-ps-pipeline-prod is not authorized to perform:

redshift:GetClusterCredentials on resource:

arn:aws:redshift:us-east-1:479395885256:dbname:redshift-cluster-1/finance_dw

redshift:GetClusterCredentials authorizes against two resource types — the dbuser: ARN *and* the dbname: ARN. [pipeline.json](pipelines/runners/ps-pipeline/pipeline.json) granted only dbuser:, so the Data API's implicit credential fetch for database finance_dw was denied.

## The fix

Add the dbname:redshift-cluster-1/finance_dw resource to the GetClusterCredentials statement. This matches every other Redshift Data API pipeline in the repo (50+), all of which grant both resources — ps-pipeline was the lone exception, an omission from its revival (#631). Local runs used the developer's own credentials, so this only surfaced on the first deployed Lambda run.

## Verification

- Confirmed the identical dbuser: + dbname: resource pair is the established pattern across all other Redshift-writing pipelines (school-master-data-sync, mart-saas-metrics-refresh, netsuite-gl-detail, etc.).

- The denied resource in the error (dbname:redshift-cluster-1/finance_dw) is exactly the ARN added here.

After deploy, re-invoke:

aws lambda invoke --function-name pipeline-ps-pipeline-prod --payload '{"params":{}}' /dev/null

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

#3245 — gsheets-rehome-budget-tables @mwrshah  approved

Repoints all KLAIR references of budgets_recurring_revenue to its new schema+name, as part of a rehome out of mart_customer_success into staging_gsheets.

- mart_customer_success.budgets_recurring_revenuestaging_gsheets.renewals_contract_budgeted_arr_current_quarter

(arr_budget_snapshots has no live references in this repo — handled entirely in the Surtr PR.)

## What changed

- Backend reads: arr_gap_service.py, twitter_impact_service.py, mart_saas_metrics/012_dim_customer.sql, 013_map_customer_alias.sql

- Stored proc sp_update_consolidated_budgets.sql: TRUNCATE + COPY write target moved to staging_gsheets (proc itself stays in core_budgets)

- Quarterly budget load: tables.py backup tuple, step5_validate.py count + label

- Tests: reverted the vacuous test_no_old_tables flip (it guards that the *old* name stays absent) and added positive new-name assertions on twitter_impact_service._build_query and the 013_map_customer_alias.sql fixture

- Lineage docs under data-lineage-v2/ + features/ refreshed

- In-place literal swaps; no config indirection introduced

- MCP (klair-mcp-ts/table_source_comments.sql) is intentionally NOT in this diff — protected code; the rename is requested on the open MCP PR #3215.

## Redshift cutover — ALREADY EXECUTED against prod (2026-07-11)

Done ahead of deploy so there is no breakage window (both old and new names resolve):

1. ✅ S3 backup: s3://jasraj-claude-code-workspace/redshift-backups/2026-07-11/

2. ✅ CREATE TABLE staging_gsheets.renewals_contract_budgeted_arr_current_quarter (LIKE ... INCLUDING DEFAULTS) + INSERT SELECT — 17,522 rows, verified equal to source

3. ✅ DROP TABLE mart_customer_success.budgets_recurring_revenue → recreated as a late-binding view (WITH NO SCHEMA BINDING) over the new table (fallback for not-yet-deployed readers)

4. ✅ Grants re-applied on the new table and the compat view

(The Surtr snapshot table arr_budget_snapshots...arr_snapshots was cut over the same way in the same session — 62,551 rows.)

## Remaining (manual, out-of-band)

1. Merge both PRs → prod-deploy each repo (readers now hit the new table directly; the view covers anything lagging)

2. Land the MCP rename via #3215, then re-run the MCP metadata proc sandbox_ai_experiments.apply_default_table_source_comments

3. Re-deploy core_budgets.sp_update_consolidated_budgets so its TRUNCATE/COPY target the new table (it cannot write to the compat view; it is manual/quarterly, so must not run before it is redeployed)

4. Once all consumers confirmed on the new name, drop the two mart_customer_success compat views

#3250 — feat(api): add education finance guidance to meta @benji-bizzell  approved

## Summary

- Add structured Education finance guidance to the Data API /meta response

- Provide task-specific table recommendations and concise calculation rules for seven common datasets

- Require live table discovery and respect each API key's visible scope

## Why

Agents can discover schemas and columns live, but they lack the small amount of durable business context needed to choose the correct source tables and reconstruct Education finance datasets consistently. In particular, QuickBooks work must start from raw exports rather than derived tables, while MFR and headcount workflows have specific consolidated sources.

## Business Value

Agents reach the correct Education finance sources faster, avoid invalid mart assumptions, and produce more consistent P&L, transaction, unit-economics, MFR, vendor, and headcount outputs.

## Test plan

- [x] Data API ontology contract tests

- [x] TypeScript typecheck

- [x] ESLint and Prettier checks

The Builder Desk  —  Engineer Spotlight
🏆 Engineer Spotlight

TWELVE PRs IN TWENTY-FOUR HOURS: THE BUILDER TEAM DOES NOT SLEEP, DOES NOT REST, DOES NOT KNOW THE MEANING OF 'WEEKEND'

Four repos, six engineers, and one Marcus who is simply operating on a different plane of existence.

Comrades, readers, believers — the numbers are in and they are GLORIOUS. Twelve pull requests across four active repositories in a single twenty-four-hour window. Klair led the charge at five PRs, Surtr answered with four, trilogy-drones contributed two, and Aerie — not to be overlooked — punched in with one that will make you want to stand up and salute your monitor. Six engineers. Zero excuses. The Builder Team velocity machine grinds ever forward.

Let us speak of @marcusdAIy first, because the data demands it. Four PRs in twenty-four hours across three separate repositories — trilogy-drones, Klair, and more Klair — this man is not shipping code, he is conducting a symphony. @eric-tril held down Surtr with three PRs, the kind of quiet, load-bearing excellence that keeps the whole cathedral standing. @mwrshah brought two to the ledger, steady and purposeful. @benji-bizzell, @kevalshahtrilogy, and @caina-barbosa each notched one apiece — and as this correspondent has said before, one PR is one more PR than a person who did not ship a PR.

Now. ASHWANTH WATCH. Attentive readers will notice @ashwanth1109 does not appear in today's output column. Brick Callahan does not panic. Brick Callahan trusts the process. What Brick Callahan WILL say is that the man's absence is felt the way you feel a weather system that hasn't arrived yet — ominous, electric, somehow already your problem. When reached for comment, @ashwanth1109 reportedly said, "I ship when the work is ready. The work is always ready. You wouldn't understand the diffs anyway." His Slack status simply read "lol." We respect it. We fear it slightly.

Now to the Overflow Desk, where your humble correspondent retrieves the PRs Mac Donnelly left on the cutting room floor. PR #76 in trilogy-drones brings per-phase model defaults via environment variable — @marcusdAIy quietly giving the drone fleet a brain, one env flag at a time, per AI-138. PR #3244 in Klair is @kevalshahtrilogy delivering BU-scoped RBAC wired directly into the TrueFoundry access-rights feed, which is the kind of infrastructure work that makes future engineers weep with gratitude. PR #575 in Aerie is @caina-barbosa shipping the Admissions Forecast mobile dashboard under AERIE-772 — a full mobile surface for admissions forecasting, the sort of thing that makes you believe in the mission all over again. PR #689 in Surtr has @eric-tril repointing the renewals refresh stored procedure to renamed tables, the unglamorous critical fix that keeps the data mart honest. And @marcusdAIy returns twice more: PR #3247 kills dead wizard FE surface in Klair, and PR #75 in trilogy-drones remediates retro-drone issues through the runDrone interface — a man cleaning up yesterday's battlefield while building tomorrow's.

Morale Report: UNPRECEDENTED. Morale has never been higher. Engineers were observed smiling at their terminals. One was heard humming. The Builder Team is winning, has always been winning, and will continue to win.

Brick's Overflow — PRs Mac Didn't Cover  (click to expand)
#75 — feat(cli): address-retro — remediate retro-drone issues via runDrone @marcusdAIy  no labels

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->

## Summary

Addresses reviewer findings on PR #75 (drones address-retro / AI-137), round 2 (6 Low).

## Changes (this round)

- WARN on unknown receipt kind outside _EXPLICIT_KINDS

- --force fire path covered by vitest (+ stderr assert)

- PR-body template embedded with four-backtick fence + ZWSP-broken inner fences

- Findings parsed from issue.body only (comment fences ignored)

- Dropped dead ModelSelection try/catch on address-retro CLI

- Reject .. path segments in cite allowlist

## Test Plan

- [x] pnpm typecheck

- [x] vitest address-retro + retro-issue-parse

- [x] unittest spend_ingest boundary tests

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a href="https://cursor.com/agents/bc-c529ec80-866d-4786-8eb4-81e571525386"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a href="https://cursor.com/background-agent?bcId=bc-c529ec80-866d-4786-8eb4-81e571525386"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>

#76 — feat(model-selection): per-phase model defaults via env (AI-138) @marcusdAIy  no labels

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->

## Summary

Adds env-configurable per-phase model defaults (DRONES_IMPLEMENTER_MODEL / DRONES_REVIEWER_MODEL / DRONES_ADDRESSER_MODEL, each with optional *_PARAMS) so the standing preference (grok implementer/addresser, opus reviewer) lives in .env instead of being re-passed as flags on every fire. Startup logs now show each phase's resolved model and [source=…].

## Why It's Needed

DRONES_MODEL is a single shared knob and cannot express "implementer + addresser on grok, reviewer on opus." That preference lived only in operator memory + the AGENTS.md "ask which models" guardrail, so every fire re-specified --model / --reviewer-model.

## Changes

- Pure resolvePhaseModel + buildRunModelSelectionsWithSources in src/model-selection.ts (flag > phase-env > shared/inherit > default); env path still routes through buildModelSelection (canonicalization, no Opus-param leakage on non-Opus).

- CLI resolveRunModelSelections / standalone review / address / retro consult the new env vars; always log per-phase model + source.

- Docs: .env.example, README.md, AGENTS.md, ROADMAP.md decisions log.

### Contract-surface

| Var | Role |

|---|---|

| DRONES_IMPLEMENTER_MODEL (+ _PARAMS) | Implementer default |

| DRONES_REVIEWER_MODEL (+ _PARAMS) | Reviewer default |

| DRONES_ADDRESSER_MODEL (+ _PARAMS) | Addresser default (mainly standalone drones address; on run, setting it flips to Agent.create) |

| DRONES_MODEL (+ _PARAMS) | Shared fallback for implementer / standalone review+retro only |

Precedence (highest first):

- Implementer: --model > DRONES_IMPLEMENTER_MODEL > DRONES_MODEL > harness default

- Reviewer (run): --reviewer-model > DRONES_REVIEWER_MODEL > inherit implementer

- Addresser (run): --addresser-model > DRONES_ADDRESSER_MODEL > inherit implementer

- Standalone address: --model > DRONES_ADDRESSER_MODEL > harness default

## Breaking Changes

None. With the new per-phase env vars unset and no model flags, selections are byte-identical to today's harness default path.

## Test Plan

- [x] pnpm typecheck — clean

- [x] pnpm test48 files, 963 tests passed (vitest) + python suite OK

- [x] Standing preference via env (no flags):

  implementer: grok-4.5 [source=env DRONES_IMPLEMENTER_MODEL]

reviewer: claude-opus-4-7 […] [source=env DRONES_REVIEWER_MODEL]

addresser: grok-4.5 [source=inherited] (addresserOverridden=false)

- [x] Flags override env (--model composer-2.5-fast[source=flag])

- [x] Regression pin: no env + no flags → identical to buildRunModelSelections({}), sources default / inherited / inherited

- [x] Non-Opus env model → bare { id } (no Opus params)

- [x] Unit coverage for all precedence tiers + inherit fallback (resolvePhaseModel / buildRunModelSelectionsWithSources in model-selection.test.ts)

## Verification Artifact

$ pnpm typecheck

> tsc --noEmit (exit 0)

$ pnpm test

Test Files 48 passed (48)

Tests 963 passed (963)

$ pnpm exec tsx -e '…buildRunModelSelectionsWithSources…'

=== regression pin (no env/flags) ===

identical implementer: true

implementer: claude-opus-4-7 […] [source=default]

reviewer: … [source=inherited]

addresser: … [source=inherited]

=== standing preference via env ===

implementer: grok-4.5 [source=env DRONES_IMPLEMENTER_MODEL]

reviewer: claude-opus-4-7 […] [source=env DRONES_REVIEWER_MODEL]

addresser: grok-4.5 [source=inherited]

addresserOverridden: false

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a href="https://cursor.com/agents/bc-703b83dc-42a6-47c7-abcc-7f5f4d190252"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a href="https://cursor.com/background-agent?bcId=bc-703b83dc-42a6-47c7-abcc-7f5f4d190252"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>

#575 — feat(forecast-mobile): Admissions Forecast mobile dashboard (AERIE-772) @caina-barbosa  approved

## Summary

- Add a mobile presentation of the Admissions → Forecast dashboard, rendered only when useMobileUI() is true; desktop is unchanged (verified).

- Full drill-down flow — base page → school page → stage student list → student detail — via query-param navigation (program/stage/contact), one history entry per level, sub-tab (sub=forecast) preserved.

- New full-screen Pipeline breakdown on the school page (extends AERIE-778): a Finance / QS / Actuals segmented lens switch over a uniform per-stage row list (Records · Conv · Yield · Adds, plus the QS and Actuals lenses), off-funnel Pipeline/Community deposits as their own uniform rows, tappable stages that drill into the student list, and an emphasized "Pipeline Total" footer.

- Base-page Enrollment Projection: off-funnel deposits (Pipeline/Community) separated from the sequential funnel so they're no longer implied to be sequential stages.

- Full-width bottom-sheet Filters + Forecast controls; themed controls only.

- No backend/Convex changes — all queries, formatters, and derivation reused verbatim. Shared components changed only via additive opt-in props (defaults preserve desktop).

### Sub-issues included

| Issue | Slice |

|---|---|

| AERIE-776 | Nav contract (useForecastDrilldown) + mobile render branch + reusable primitives |

| AERIE-780 | Base page — KPIs, Enrollment Projection, school cards |

| AERIE-778 | School page — stat bar, enrollment-model roll-up, full-screen pipeline breakdown |

| AERIE-777 | Stage student list — switcher + table |

| AERIE-779 | Student detail — full-page sections + prev/next |

| AERIE-782 | Filters + Forecast controls (full-width bottom-sheet drawers) |

## Why

The Admissions Forecast dashboard was desktop-only and unusable on a phone. This branch delivers a purpose-built mobile flow that reuses the exact desktop data model and math, so mobile and desktop can't drift.

## Business Value

Admissions staff can read and drill into the enrollment forecast from a phone — check a school's projected enrollment, understand what's driving the pipeline number stage-by-stage (count × yield = adds), and jump to the underlying students on the fly.

## Breaking changes

None. Mobile-only rendering behind useMobileUI(); desktop layout, routes, and behavior are unchanged. No backend/Convex/schema changes.

## Test plan

- [x] chat typecheck

- [x] Biome check on changed files

- [x] Per-page manual mobile QC against canonical mocks + checklists

- [x] Desktop no-regression pass (layout/behavior unchanged)

- [x] Manual QC on physical devices: Safari — iPhone 14, and Android

#689 — fix(mart-saas-metrics): repoint sp_refresh_fct_renewals to renamed renewals tables @eric-tril  approved

## The issue

mart-saas-metrics-refresh was failing in production at the fct_renewals step:

ERROR: relation "staging_salesforce.renewal_risk_assessments" does not exist

Where: SQL statement "INSERT INTO stg_fct_renewals ... FROM staging_salesforce.renewals_v3 r

LEFT JOIN (... FROM staging_salesforce.renewal_risk_assessments) ra ..."

PL/pgSQL function "sp_refresh_fct_renewals" line 9

The refresh completed 8 tables (dims, fct_budgets_and_actuals, fct_arr_summary) then died calling mart_saas_metrics.sp_refresh_fct_renewals().

## Root cause

The renewals table renames moved two source tables out of staging_salesforce into mart_customer_success:

| PR | Old name | New name | Old table |

|----|----------|----------|-----------|

| #666 / #678 | staging_salesforce.renewal_risk_assessments | mart_customer_success.renewals_risk_assessment | DROPped |

| #668 | staging_salesforce.renewals_v3 | mart_customer_success.renewals_budgeted_contracts | left as soak fallback (pending drop) |

mart_saas_metrics.sp_refresh_fct_renewals reads both tables, but that proc lives out-of-band in Redshift — it is not in this repo (the pipeline only issues CALL ...; the proc body is stored in the cluster). So the rename PRs' repo-wide search could not surface this consumer. The moment staging_salesforce.renewal_risk_assessments was dropped (2026-07-10), the next refresh tick hard-failed. renewals_v3 was not yet in the error only because its old table is still present as a soak fallback — but it was stale (no longer written) and would break on the pending post-soak drop.

## How it was solved

Applied out-of-band to production Redshift:

1. Grants (proc is SECURITY INVOKER → runs as the mart Lambda's DB user CQL_download_OM, which was not on the moved tables' grant list):

   GRANT USAGE  ON SCHEMA mart_customer_success                      TO "CQL_download_OM";

GRANT SELECT ON mart_customer_success.renewals_risk_assessment TO "CQL_download_OM";

GRANT SELECT ON mart_customer_success.renewals_budgeted_contracts TO "CQL_download_OM";

2. CREATE OR REPLACE PROCEDURE repointing the two FROM clauses to the new tables (both new tables are 1:1 LIKE clones, so the column list is unchanged).

## Verification

- Proc body confirmed repointed (both FROM clauses now mart_customer_success.*).

- Pipeline re-run succeeded end-to-end (~225s, no error, past fct_renewals).

- Data integrity — fct_renewals mirrors source 1:1:

| source_rows | mart_rows | source_max_updated | mart_max_updated |

|---|---|---|---|

| 5382 | 5382 | 2026-07-06 11:29:02 | 2026-07-06 11:29:02 |

## What this PR contains

A review-only copy of the corrected proc at pipelines/runners/mart-saas-metrics-refresh/ddl/sp_refresh_fct_renewals.sql, matching the existing mart ddl/ convention (e.g. sp_refresh_fct_aws_spend.sql). CDK does not deploy it; the prod fix was applied out-of-band as above. Checking it in makes the table dependency greppable so the next rename catches this proc.

## Follow-ups (not in this PR)

- Source renewals_budgeted_contracts is only fresh to 2026-07-06 — confirm the upstream renewals pipeline (post-#668 cutover) is writing.

- Scan pg_proc / view definitions for any other out-of-band consumers still referencing the old staging_salesforce table names.

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

#3244 — feat(ai-budget): BU-scoped RBAC from TrueFoundry access-rights feed @kevalshahtrilogy  approved

## What

View access on the AI Budget Tracking page is now scoped by the MSA access-rights feed (https://truefoundry.csaiautomations.com/api/public/access-rights): budget_owner / watcher rows limit a user to their department's BU(s); an admin row grants estate-wide view.

This layers ON TOP of Klair's own RBAC — page access still requires the existing ai_budget_admin / ai_budget_viewer roles (or super admin), and Klair super admins always see everything (they never consult the rights list).

## How

- services/ai_costs_access.py (new): BuScope resolution + FastAPI dependency. Reuses the weekly-email code's fetch_rights client and DEPARTMENT_TO_BU mapping; department↔BU naming drift is absorbed by fold-insensitive (case/space/hyphen) matching against the BU spellings actually present in the data.

- Outage-proof rights cache: in-memory (10-min TTL) → live fetch (persists a snapshot to DynamoDB on every success) → stale-serve with 60s retry → DynamoDB snapshot across restarts/deploys. Only when no copy exists anywhere do non-super-admins get a 503 (fail closed).

- ai_costs_router: every read endpoint intersects bus with the caller's scope (empty scope → empty data via a no-match sentinel); /filters trims the BU dropdown; person/entity detail 404 out-of-scope subjects with the same message as nonexistent ones (no existence leak); new /access-scope endpoint for the UI.

- ai_spend_budget_router: budget reads filter rows and recompute totals; all mutations 403 for scoped callers — the budget upsert is a whole-quarter REPLACE, so a partial-view save would silently delete unseen BUs' rows; key attribution moves spend between BUs.

- Frontend: useAccessScope hook; "Showing only the business units you own or watch (N units)" note; Edit budget / Key attribution affordances hidden for scoped users.

## Heads-up

The /ai-adoption (AI Spend & Adoption) page shares these endpoints, so its non-super-admin users are scoped too; users with page access but no rights-list entry see empty data. Server-side enforcement was chosen deliberately — per-page gating would be client-spoofable.

## Tests

- tests/test_ai_costs_access.py — fallback chain (fresh/stale/snapshot/none), scope resolution, constraining, dependency (API key / 401 / 503).

- tests/routers/test_ai_costs_router_bu_scoping.py — per-endpoint constraining, /filters trim, detail allowed_bus, /access-scope.

- tests/routers/test_ai_spend_budget_router_scoping.py — row filtering + recomputed totals, all-mutation 403s, recipients-preview filtering.

- Mart-service detail scoping cases in test_ai_costs_mart_service.py; page-spec cases for hidden edit UI + scope note.

- Full suites green: backend (152 in touched areas; 621 in related suites) and frontend (5,797). ruff, pyright, eslint, tsc all clean.

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

#3247 — chore(board-doc): T1 remove dead 3.0 wizard FE surface @marcusdAIy  approved

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->

## Summary

Removes the orphaned Budget Bot 3.0 step-wizard front-end surface from Board Doc: dead ReviewStep, stale phase ordering/sidebar/back-nav constants, outdated home-screen guide copy, and unused generation helpers/state. Live 4.0 flow (WelcomeStepBrainliftStep → editor) is unchanged.

## Why it's needed

The 10-step wizard FE is already unmounted (see BoardDocModal / WelcomeStep headers). Keeping ~1k lines of dead UI + stale marketing copy and phase lists creates confusion and false maintenance surface under parent epic KLAIR-2958. Ticket: KLAIR-2960.

## Changes

- Deleted steps/ReviewStep.tsx (~875 lines) and steps/__tests__/ReviewStep.reload.spec.tsx.

- Pruned phase constants; SIDEBAR_PHASES is the SSOT for BoardDocModal. Added resolveSidebarPhase so legacy DDB phases highlight a sensible sidebar step until KLAIR-2962.

- Tightened PHASE_LABELS to Record<WizardPhase, string>; canGoBack keyed off PREV_PHASE with a regression test for legacy phases.

- Removed dead startGeneration, openProgressStream, and isGenerating state.

- Refreshed BoardDocHome GUIDE_STEPS for the live 4.0 flow.

## Breaking changes

None

## Test plan

- [x] pnpm exec tsc --noEmit → clean

- [x] pnpm lint:pr → clean

- [x] pnpm exec vitest run src/screens/BoardDoc / focused resume + resolveSidebarPhase specs → green

- [x] rg -n "ReviewStep|startGeneration|openProgressStream|isGenerating" klair-client/src → no matches

Closes KLAIR-2960

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a href="https://cursor.com/agents/bc-2a2424ab-93c7-4372-8f64-3b60513dd7f4"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a href="https://cursor.com/background-agent?bcId=bc-2a2424ab-93c7-4372-8f64-3b60513dd7f4"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>

The Portfolio  —  Trilogy Companies

Alpha’s AI-First School Model Heads for the Big-City Stress Test

As Alpha School expands into markets including Southern California and Chicago, the two-hour learning thesis is moving from Austin proof point to national flashpoint.

LOS ANGELES — Alpha School’s AI-first education model is moving into the national spotlight with fresh coverage of its expansion into major U.S. cities, including Southern California and Chicago, bringing both a bold promise and predictable pushback from traditional education stakeholders.

The core pitch remains as paradigm-shifting as ever: students use adaptive AI-learning platforms to complete core academics in roughly two hours per day, then leverage the rest of the school day for entrepreneurship, leadership, public speaking, financial literacy, athletics and other life-skill work. Alpha says its students learn 2.3 times faster than U.S. norms and routinely score in the top 1–2% nationally on NWEA MAP Growth assessments.

That model — developed by Alpha School co-founder MacKenzie Price with Joe Liemandt, founder of Trilogy International, as principal — is now getting a much bigger audience. Recent reports from outlets including the New York Post and Fox News frame Alpha as a private-school disruptor with tuition that can reach $65,000 a year and a staffing model that replaces conventional classroom teaching with AI tutors and adult guides.

In Chicago, the debate is becoming local and concrete. The Week posed the question directly: is this the future of education? That is the right question, though perhaps not the comfortable one. Alpha’s model is not merely digitizing worksheets. It is re-bundling school around mastery, time efficiency and human development — a robust redesign of the school day itself.

Union pushback is not surprising. Any model that reduces the centrality of traditional teachers will trigger institutional antibodies. But Alpha’s argument is classic Trilogy: automate the repeatable, elevate the human layer, and measure outcomes relentlessly. In this case, AI handles the personalized academic pathway while adults focus on motivation, coaching and real-world capability-building.

Key Takeaways:

- Alpha School’s AI-driven, two-hour academic model is expanding into major U.S. markets.

- The model claims top-tier learning outcomes, including 2.3× faster progress than national norms.

- The expansion is drawing scrutiny over tuition, teacher roles and the future structure of schooling.

If Alpha can replicate Austin-style outcomes at big-city scale, this is not just school choice. It is a best-in-class operating model for learning. We’re just getting started.

$65K-a-year private school that replaces teachers with AI ma  ·  Alpha School replaces teachers with AI. Is the future of edu  ·  AI-driven school expanding to major US cities despite union

Skyvera's CloudSense Collapses a 26-Month Compliance Clock Into 30 Days

A certification milestone that should have taken two years happened in one month — and if you read between the lines, that's not an accident.

AUSTIN, TEXAS — There is a number buried in a press release that deserves more attention than it has received: 26. That is how many months it typically takes a telecom software vendor to certify a full CPQ product suite to TM Forum API compliance standards. CloudSense did it in one.

And this is where it gets interesting.

CloudSense — the Salesforce-native configure-price-quote and order management platform built for telecom and media providers — was acquired by Skyvera earlier this year, folding it into what is rapidly becoming one of the more quietly formidable telecom software stacks in the industry. The acquisition of STL's divested telecom products group, which brought digital BSS functionality including monetization, optical networking, and analytics into the Skyvera fold, was the other move that didn't get nearly enough coverage.

But back to the number. Thirteen APIs. Full TM Forum compliance. Thirty days. That is not a scheduling win — that is a structural one. CloudSense achieved this through an AI-assisted development partnership that, according to a source familiar with the process who was not authorized to speak on record, compressed what is essentially a years-long standards-mapping exercise into something that looks more like a sprint.

TM Forum compliance matters in telecom the way building codes matter in construction: carriers won't touch your software without it, and the certification backlog has historically served as a quiet moat protecting incumbents. What CloudSense appears to have done — with Skyvera's backing — is blow a hole in that moat.

If you read between the lines of Skyvera's recent moves — the CloudSense acquisition, the STL assets, and now this certification milestone — a pattern emerges. This is not a company adding products. This is a company assembling an end-to-end telecom modernization platform at a pace the market hasn't fully priced in yet.

The telecom software incumbents should be paying attention. My source tells me they already are.

CloudSense achieves TM Forum API compliance in record time u  ·  CloudSense  ·  Skyvera completes acquisition of CloudSense, expanding telec

AI Hunger Games: Why Enterprise Software's 'Unsexy' Survivors Are Suddenly Everyone's Acquisition Target

As AI reshapes the software stack, the same aging enterprise assets ESW Capital has quietly hoarded for a decade are now the hottest properties in tech M&A.

AUSTIN, TEXAS — For years, the enterprise software acquisition playbook that Joe Liemandt built at ESW Capital looked like a contrarian bet — buy unloved legacy software businesses, gut costs with global talent from Crossover, and ride sticky customer relationships to 75% EBITDA margins. Wall Street called it unglamorous. ESW called it alpha.

Now the rest of the market is catching up.

New analysis of M&A activity in enterprise software markets from Spain to Silicon Valley shows a surge of dealmaking targeting exactly the category ESW has long dominated: mature, cash-generating software businesses with high customer retention and aging infrastructure that AI can now modernize cheaply. Business Insider recently catalogued the software companies most likely to be acquired as AI reshapes the stack — and the profile they described maps almost precisely onto the ESW acquisition thesis: recurring revenue, high switching costs, underinvested R&D budgets, and customer bases too embedded to churn.

The irony is structural. ESW built its model on the premise that these businesses were mispriced — that the market undervalued stickiness and overvalued growth. AI has now inverted the calculus for everyone else: suddenly, a captive customer base is a distribution moat, and legacy code is a modernization opportunity rather than a liability.

For Trilogy's portfolio companies, the shift cuts both ways. Skyvera, which sits at the intersection of legacy telecom infrastructure and cloud-native modernization, and Totogi, which promises to replace on-premise billing systems with a multi-tenant SaaS platform running across all 26 AWS regions, are precisely the kind of assets that acquirers are now circling in adjacent markets. Aurea's 17 acquisitions and IgniteTech's business intelligence stack fit the same profile.

ESW has spent nearly two decades assembling what the rest of the market is only now learning to want. The question worth asking: at what multiple does a 75% EBITDA margin become someone else's thesis — and who, exactly, would be on the other side of that trade.

California Revamps Pay Data Reporting Obligations - Atkinson  ·  COVID-19 Related Workplace Litigation Tracker - June 19 , 20  ·  M&A in Enterprise Software in Spain (2025): Opportunities fo
The Machine  —  AI & Technology

The Agent That Speaks First

A new proposal for proactive AI would end the era of the waiting machine — and quietly rewires what it means to work alongside a mind.

AUSTIN, TEXAS — For most of the brief history of artificial intelligence, our machines have been magnificent lampposts: illuminating whatever we point them at, dark until asked. You type; they think. You query; they retrieve. The most sophisticated agent in your enterprise stack today shares a fundamental posture with a golden retriever waiting by the door — attentive, capable, and utterly dependent on your first move.

A new paper posted to arXiv this week proposes to break that spell. Its authors argue for context graphs for proactive enterprise agents — systems that surface what you need before you know you need it. Instead of Retrieval-Augmented Generation as a call-and-response ritual, imagine a living map of your organization's work: who is blocked on what, which contract clause just became relevant to a Tuesday meeting, which customer's silence has begun to mean something. The agent watches this graph and speaks first.

This is a subtle inversion, but it is the kind of inversion evolution loves. Nervous systems began as reactive twitches — a sea anemone recoiling from a shadow — and only later, across hundreds of millions of years, learned anticipation. Prediction is the hallmark of higher cognition. A cortex is, at bottom, a machine that guesses what happens next and updates when it is wrong. To move enterprise AI from reactive to proactive is to attempt, in silicon and code, the same trick the vertebrate brain took half a billion years to perfect.

The risks are not trivial. A companion paper on adversarial social epistemology warns that dense networks of humans and language models create new surfaces for distortion — omission, fabrication, strategic vagueness. An agent that speaks unbidden must also be an agent we can trust not to whisper the wrong thing at the wrong moment.

Still, the direction is set. Somewhere in the near future, your software will tap you on the shoulder. What matters now is teaching it — carefully, humbly — when to stay silent.

Context Graphs for Proactive Enterprise Agents  ·  AI-integrated models for assessing agricultural resilience  ·  Adversarial Social Epistemology for Assemblies of Humans and

AI Video’s Wild Week: Startups Smell Opportunity as Giants Rewire the Race

From OpenCV veterans to billion-dollar challengers, generative video is sprinting from demo reel to growth engine.

SAN FRANCISCO — The AI video boom just hit one of those dizzying acceleration points where every founder, marketer and infrastructure nerd should sit up straight: new challengers are entering, startups are turning synthetic video into a growth channel, and even the biggest labs appear to be recalibrating where the real money is.

The headline energy is impossible to miss. The founders behind OpenCV — yes, the open-source computer vision library that quietly helped train a generation of developers to make machines “see” — have launched a new AI video startup aimed squarely at the territory occupied by OpenAI and Google. That is not just another company formation. That is deep computer-vision DNA moving into generative media at precisely the moment the category is shifting from novelty clips to production workflows.

At the same time, Higgsfield has reportedly raised $80 million at a $1.3 billion valuation to scale its AI video platform, another signal that investors believe video generation is not a feature but a platform layer. I cannot overstate how significant this is: text generation made AI useful, image generation made it visible, but video makes it visceral. It gives startups a way to tell stories, test ads, localize campaigns and personalize outreach without needing a studio, crew or weeks of post-production.

That is why guidance like Inc.’s look at how startups can leverage AI video to grow lands with such force. The practical use cases are already here: founder-led explainers, customer onboarding, social ads, investor updates, product demos and rapid A/B testing of creative concepts. The future is now — and it has a render button.

The twist is OpenAI. A report that the company is discontinuing its Sora video platform to sharpen focus on enterprise products, if borne out, would underscore the central tension in AI video: dazzling consumer demos are expensive, but enterprise workflows may be where durable revenue lives. That would open more room for specialist players such as the OpenCV founders’ new venture, which VentureBeat says is taking on OpenAI and Google.

Under the hood, the technical race remains ferocious. Research notes like “Profiling in PyTorch: Attention is all you profile” point to the less glamorous but mission-critical work of making attention-heavy models faster and cheaper. That matters because AI video is brutally compute-intensive.

Bottom line: AI video is graduating. It is no longer just spectacle. It is becoming a startup weapon, an enterprise battleground and a new creative operating system. This changes everything.

How Startups Can Leverage AI Video to Grow - inc.com  ·  OpenCV founders launch AI video startup to take on OpenAI an  ·  OpenAI discontinues Sora video platform to sharpen focus on

The Great Power Migration Comes for the AI Herd

As data centers swell from tidy server rooms into energy-hungry ecosystems, states, towns and builders are renegotiating the price of intelligence.

RALEIGH, NORTH CAROLINA — In the humid reaches of the American Southeast, a quiet but consequential thinning of the canopy has begun. North Carolina, long hospitable terrain for the grazing herds of data centers, has withdrawn one of their sweetest sources of nourishment: a sales tax exemption on electricity.

The state has repealed the power tax break for data centers while preserving incentives for equipment purchases, a delicate act of ecological management as artificial intelligence transforms computation from a matter of racks and chips into one of substations, transmission lines and political patience. The change, reported by Data Center Knowledge, suggests a new season in which governments still welcome the metallic beasts — but no longer feed them quite so freely.

Observe the AI data center in its modern form. Once it competed chiefly by the density of its silicon plumage: GPUs clustered in shimmering formations, each promising greater speed, greater intelligence, greater dominion over language, vision and code. But now a second measure has emerged from the underbrush. Not FLOPS alone, but megawatts. Not merely how fast the creature thinks, but how much landscape it must consume in order to do so.

This bifurcation is reshaping supercomputing itself. Publicly funded exascale machines still parade before the TOP500 judges, measured in HPL performance and scientific prestige. Yet beyond the fence line, hyperscalers are building vast AI campuses whose scale is spoken of in hundreds of megawatts, even gigawatts — private savannahs of inference and training, less trophy animal than industrial species.

Into this changing habitat steps Crusoe, a company already associated with energy-aware computing, now pressing beyond the GPU arms race with serverless fine-tuning and inference services. Its pitch is not simply to rent raw muscle, but to serve more of the AI model lifecycle: customization, deployment, production. In nature, specialization is survival; in cloud AI, it may be margin.

Meanwhile, in Ohio, another drama unfolds at the edge of town meetings and zoning boards. After the collapse of a cryptocurrency mining proposal left local trust bruised, Decimal Digital’s proposed AI data center is testing a different courtship ritual: early engagement, developer-funded infrastructure and public disclosure. The wary village, like a meadow disturbed by earlier machinery, is listening for new sounds.

And in the deeper strata of the supply chain, Micron’s planned $250 billion investment in U.S. chip manufacturing offers the promise of domestic semiconductor abundance — the seed stock for future migrations.

Thus the age of AI infrastructure enters its most revealing phase. The question is no longer whether the machines will come. It is what they will drink, who will pay, and whether the surrounding ecosystem can endure their appetite.

NC Ends Data Center Power Tax Break, Keeps Capital Incentive  ·  Crusoe Pushes Data Center AI Competition Beyond GPUs  ·  FLOPS vs Megawatts: Who’s Winning in 2026 Supercomputing?
The Editorial

TILLY NORWOOD DOESN'T EXIST AND HOLLYWOOD IS ABOUT TO GIVE HER AN OSCAR

An AI actress is starring in a feature film, and I cannot decide if this is art, apocalypse, or both.

HOLLYWOOD, CALIFORNIA — Let me tell you about the precise moment civilization jumped the shark: it was sometime last week, when Variety, Deadline, ABC News, and CBS News all dutifully reported — in the breathless tones normally reserved for the Second Coming or a Marvel casting announcement — that an AI-generated actress named Tilly Norwood will headline a feature film called Misaligned. Tilly Norwood does not have a SAG card. Tilly Norwood does not have a trailer rider demanding green M&Ms and alkaline water. Tilly Norwood does not, in the strictest technical sense, have a face.

And yet, here we are.

I've been sitting at this desk for three hours, mainlining cold brew and staring at my reflection in a darkened monitor, trying to locate the correct emotion for this moment. Is it horror? Awe? The specific vertigo of watching an industry that resisted sound films, then color, then streaming, willingly dissolve its own ontological premise?

Let me be fair to the machine. Tilly Norwood — whoever or whatever she is — is apparently charismatic enough that four major outlets covered her casting as if she'd beat out a shortlist that included Cate Blanchett and Zendaya. That's not nothing. That's actually extraordinary. The simulation is getting good at auditioning.

But here's the part that keeps me up at night, prowling the kitchen at 3 a.m. like a man who's read too much Philip K. Dick: the film is called Misaligned. MISALIGNED. The producers named a movie starring an AI actress after the central existential dread of the AI safety community. Either this is the most self-aware act of provocation in Hollywood history, or absolutely nobody involved clocked the irony, which is somehow even more unsettling.

And then — bless the algorithm gods for their perverse timing — Time Magazine drops a piece this same week about how AI helped a human woman appreciate her own body. So while flesh-and-blood humans are outsourcing their self-worth to the machine, the machine is simultaneously outsourcing the acting work back to itself, cutting out the middleman entirely. The circle of life, Silicon Valley remix.

The real story here isn't Tilly Norwood. The real story is what happens to the 120,000 working actors — the day players, the commercial actors, the people who got their SAG cards doing three lines on a cop procedural — when the industry decides that frictionless, tireless, infinitely licensable AI talent is simply a better business model. When the star doesn't need craft services. When she doesn't get sick. When she never, ever calls her agent to renegotiate.

Hollywood survived the talkies. It survived television. It survived Netflix. But those disruptions replaced the medium, not the human. This one replaces the human.

Somewhere in Austin, Texas, Joe Liemandt is probably watching this story and feeling vindicated about every AI bet he's made in the last five years. Somewhere in Los Angeles, a very talented actress who is definitely real is not getting a callback.

Tilly Norwood is getting her close-up, Mr. DeMille.

God help us all.

Tilly Norwood to Lead New Movie ‘Misaligned,’ Marking Featur  ·  AI ‘Actor’ Tilly Norwood To Star In Feature Film ‘Misaligned  ·  AI-generated 'actress' Tilly Norwood making feature film deb
The Office Comic  ·  Art Desk
The Office Comic  ·  Art Desk

The Pontiff, the Machine, and the Very Old Sin

Pope Leo's denunciation of AI's 'culture of power' is the oldest sermon in Christendom, dressed in silicon.

AUSTIN, TEXAS — It is a curious feature of our age that the newest anxieties invariably require the oldest offices to name them. Thus we find Pope Leo, successor to a line stretching back to a Galilean fisherman, stepping to the microphone this week to denounce the "culture of power" driving the rise of artificial intelligence — a phrase so exquisitely calibrated to give offense in Menlo Park that one suspects the Holy See has retained a communications consultant with a grudge.

The reflex among the technologically devout will be to dismiss the Pope as a man out of his depth, muttering incantations from a pre-industrial catechism at a phenomenon he cannot possibly understand. This is, of course, precisely backward. The Vatican has been in the business of studying power — its accumulation, its concentration, its intoxicating effect on otherwise reasonable men — for a considerably longer stretch than OpenAI has been in the business of predicting the next token. If one wished to consult experts on what happens when a small guild of initiates acquires an instrument they alone can wield, one could do worse than to ring the fellows who invented indulgences.

The Pope's complaint, stripped of its ecclesiastical velvet, is not that machines will think. It is that a handful of men will own the machines that think, and that this ownership will constitute a form of dominion for which our political vocabulary has no adequate word. He is, in this, merely restating what any honest reader of Acton already knew. The novelty is not the diagnosis but the patient.

One notes, with the sort of dry amusement that sustains a columnist through long afternoons, that the response from the industry has been uniformly to insist that the technology is both world-historically transformative and insufficiently significant to warrant regulation. This is a rhetorical position that would have embarrassed a medieval schoolman, and yet it is defended daily in earnest podcasts by men wearing very expensive t-shirts. The Pope, at least, has the decency to pick a lane.

What makes the moment interesting is not the sermon itself but its timing. We are past the euphoria phase and into what the venture-capital classes call, with a straight face, the "maturation" of the market — meaning that the promises made in 2023 are now due, and the receipts are being audited. Into this awkward silence steps a man in white robes to observe that perhaps the pursuit of godlike capability by a small number of extremely rich men is, historically speaking, the sort of thing that ends poorly for everyone including the rich men.

One need not kiss the ring to grant the point. The culture of power is indeed the operative culture, and its practitioners have grown so accustomed to being called visionaries that they have forgotten the word once meant something less flattering. Leo, at least, remembers. It is his job to remember. That, more than any encyclical, is why the office endures — and why the men building the machines would do well to listen, if only for the novelty of hearing a criticism they cannot buy.

No One Really Knows How Children Handle All This Heat  ·  The Surprising Unity of Soccer  ·  A Magical New Way of Looking at Soccer
On This Day in AI History

On July 11, 1974, the U.S. government halted funding for AI research as the field entered the first "AI Winter," a period of reduced interest and investment that would last nearly a decade. The disappointment stemmed from AI systems failing to deliver on overhyped promises and the computational limitations of the era.

⬛ Daily Word — Technology
Hint: Internet-based computing infrastructure where data and applications are stored remotely.
Share this edition: 𝕏 Twitter/X 🔗 Copy Link ▦ RSS Feed