Shadow AI & SaaS April 20, 2026 TechCrunch / Vercel

An Unsanctioned AI Tool Became a Master Key Into Vercel: How Context.ai's Breach Cascaded Through OAuth

By the AuthorityGate Architect Team

The Problem: An AI Tool Nobody Approved Became a Master Key to the Company

Imagine that one of your employees, trying to be more productive, signs up for a clever new AI tool that promises to summarize their email, tidy up their calendar, and draft replies for them. The tool asks for permission to connect to their work Google account. They click "Allow," because that is what you do to make a tool work. Nobody in IT is asked. No security review takes place. As far as your company's systems are concerned, nothing alarming has happened: an employee logged into their own account, as they do every day.

Now imagine that, two months earlier, that AI tool's own systems had quietly been infected with information-stealing malware. The keys that the AI tool was holding on your employee's behalf, the digital permission slips that let it read their mailbox and act in their account, were copied by criminals and left lying in the open. The employee never knew. The AI vendor took weeks to find out. And during that whole time, a stranger held a working key to your employee's corporate account, and through it, a path into your company.

That is not hypothetical. It is, in broad strokes, exactly what happened to Vercel, the popular web-hosting and developer platform, in April 2026. According to Vercel's own incident bulletin and reporting by TechCrunch, an attacker compromised a third-party AI tool called Context.ai that one Vercel employee had connected to their corporate Google Workspace account. The attacker rode that connection into the employee's account, then pivoted into Vercel's internal environments and stole a limited subset of customer credentials and environment-variable data. Vercel's CEO, Guillermo Rauch, publicly confirmed the incident and urged customers to rotate their non-sensitive credentials.

The striking thing about this breach is what it did not require. The attacker did not crack Vercel's firewall. They did not guess a password or exploit a flaw in Vercel's code. They walked in through the front door using a legitimate, employee-approved connection to an AI tool that Vercel's security team had likely never reviewed and may not have known existed. This is the anatomy of a modern breach: shadow AI plus over-broad OAuth permissions equals a master key that bypasses everything else you have built to keep attackers out.

What Is "Shadow AI"?

"Shadow AI" is the term for AI tools that employees adopt on their own, without the knowledge or approval of IT or security. It is the AI-era successor to "shadow IT," the long-running problem of staff using unsanctioned apps and cloud services to get their jobs done. The difference is that AI tools are spreading faster than any technology before them, and they tend to ask for far deeper access. A note-taking app might want to see your calendar. An AI assistant wants to read your entire mailbox, your documents, and your contacts, so it can be genuinely helpful.

Employees rarely adopt shadow AI to be reckless. They adopt it because it works. The tools are useful, the sign-up is frictionless, and the productivity gains are real and immediate. From the employee's point of view, connecting an AI assistant to their work account is no different from installing a browser extension. They are not thinking about OAuth scopes, token storage, or the AI vendor's own security posture. They are thinking about getting through their inbox faster.

The problem is that every one of these unsanctioned connections becomes part of your attack surface, whether or not you know about it. You cannot defend what you cannot see. And in the Vercel case, the tool that became the entry point was, by the company's own account, a third-party AI tool that one employee had connected, not an enterprise system that security had vetted and was monitoring.

What OAuth Scopes Actually Grant

To understand why one connected AI tool can become a master key, you need to understand a piece of plumbing that runs underneath almost every "Sign in with Google" or "Connect your account" button: OAuth. OAuth is the technology that lets you grant one app permission to act inside another without handing over your password. When you click "Allow," you are not giving the app your password. You are giving it a token, a long-lived digital permission slip that says "the bearer of this slip may do the following things in this account."

The "following things" are called scopes. A scope is the specific permission being granted: read your email, send email as you, see your files, manage your calendar, and so on. The consent screen you click through usually summarizes these in friendly language, like "See, edit, create, and delete all your Google Drive files." Most people skim past it. But each scope is a real, enforceable power. An AI tool that asks for broad scopes is asking to act as you, across a wide swath of your digital working life.

Here is the crucial detail: the token does not expire when you close the app, and it does not require your password to use again. As long as the token is valid, anyone who holds it can do everything the scopes allow, silently, without triggering a password prompt and often without triggering a "new login" alert, because from the account's perspective it is the same approved app doing the same approved things. The token is the access. Steal the token, and you inherit the employee's authority without ever knowing their password.

Think of an OAuth token like a hotel keycard that the front desk programmed for a guest, except this keycard never expires, opens not just one room but a whole floor, and the hotel has no easy way to tell whether the person swiping it is the guest or a thief who copied the card. If that card is left somewhere a criminal can pick it up, the criminal walks the floor at will, and the hotel's logs show only that "an authorized card was used."

Why a Third-Party AI Tool Becomes a Master Key

When an employee connects a third-party AI tool to their corporate Google account, the AI vendor's servers now hold a valid OAuth token for that account. The vendor is, in effect, storing a working key to part of your company on infrastructure you do not control and cannot inspect. Your security depends not only on your own defenses, but on the AI vendor's defenses too. If the vendor is breached, the keys they were holding on your behalf are exposed.

That is precisely the chain that played out at Vercel. The AI tool, Context.ai, was compromised. The OAuth token it held for a Vercel employee's Google Workspace account was exposed. The attacker used that token to take over the employee's account, and from there reached into Vercel's internal systems. One unsanctioned connection, holding one over-broad token, turned into a doorway through a company that hosts a meaningful slice of the modern web. According to Vercel, the affected OAuth application's compromise may have affected hundreds of users across many organizations, meaning Vercel was not the only company exposed through the same tool.

This is why a single connected AI tool can function as a master key. It does not just expose one mailbox. It exposes everything that mailbox and that account can reach, and in a connected enterprise, that is often a great deal. The token bypasses your firewall, your password policy, and your login monitoring, because none of those controls were designed to question an approved app doing approved things.

How a compromised AI tool cascades into connected corporate systems

One unsanctioned AI tool, holding one over-broad OAuth token, can cascade into the corporate systems behind it. The token bypasses the firewall, the password policy, and the login alerts, because to those systems it looks like an approved app behaving normally.

Why This Matters to You

If anyone in your organization has connected an AI tool to their work email, calendar, files, or cloud platform, you are exposed to this exact failure mode, and you almost certainly do not have a complete inventory of which tools are connected or what they can access. The Vercel breach did not require sophisticated hacking of Vercel itself. It required one employee to connect one AI tool that was later breached, and one over-broad token to be left where an attacker could take it.

This is not a niche risk. Industry analyses of SaaS environments have found that AI-embedded tools are now effectively universal across organizations, and that OAuth-based connections routinely bypass perimeter defenses. Vercel itself stated the underlying tool compromise may have affected hundreds of users across many organizations. If a leading developer platform with a capable security team can be reached this way, the question for your organization is not whether you have the same exposure, but whether you can currently see it.

What Happened: From an Infected AI Tool to Stolen Customer Data

The Vercel incident unfolded as a chain, where each link was individually unremarkable but together they formed a path from a third-party AI tool all the way into customer data. Vercel published an incident bulletin beginning April 19, 2026 and continuing through subsequent days, and TechCrunch reported the company's confirmation on April 20. Here is the sequence in plain terms, with each stage explained.

A note on precision: Vercel and TechCrunch are the authoritative sources for this analysis, and we report only what they stated. Where a figure such as the attacker's total dwell time is not explicitly published, we describe it as an estimate derived from the reported timeline, and we flag it as such.

1

The AI Tool Is Infected by an Infostealer

The everyday analogy: A locksmith who holds spare keys for hundreds of homes has their key cabinet quietly burgled. The locksmith does not notice for weeks. Every key in that cabinet is now potentially in a thief's pocket, and every homeowner is exposed, even though none of them did anything wrong.

The chain began not at Vercel but at the AI vendor. Context.ai confirmed it had been breached, with hackers likely compromising OAuth tokens for some of its consumer users of its Context AI Office Suite app. Reporting attributes the underlying compromise to infostealer malware, a class of malware (the Lumma family being a prominent example) that silently harvests credentials, session cookies, and access tokens from infected systems and ships them to criminal infrastructure. Once an infostealer has run, the tokens it captured are effectively in the open market.

The key point for executives: the failure that ultimately exposed Vercel's customers occurred on a system Vercel did not own, run, or monitor. The AI vendor's security posture became Vercel's security posture the moment an employee connected the tool.

Impact: Valid OAuth tokens for the AI tool's users, including at least one connected to a Vercel corporate Google Workspace account, were exposed to attackers.

2

The Tokens Are Stolen and the Dwell Time Begins

The everyday analogy: The thief now holds working copies of the keys, but does not rush in. They wait, watch, and choose their moment. Every day that passes without the locksmith noticing is another day the keys stay good.

"Dwell time" is the security term for how long an attacker has access before they are detected and evicted. In this chain, the dwell time was substantial. The AI vendor disclosed its breach after the fact, meaning the stolen tokens had a window in which they remained valid and usable. Based on the publicly reported timeline, the gap between the initial compromise of the AI tool and the detection of the resulting Vercel intrusion spanned a period we estimate at roughly two months. (This roughly two-month figure is our estimate from the reported sequence, not a number explicitly published by Vercel or TechCrunch.)

Long dwell time is what turns a leaked token from a theoretical problem into a real breach. Tokens that are never rotated and never expire give an attacker the luxury of patience.

Impact: A multi-week window in which a valid corporate access token sat in attacker hands, unrotated and undetected.

3

The OAuth Pivot Into the Employee's Account

The everyday analogy: The thief uses the copied keycard and walks straight onto the floor. No alarm sounds, because the card is genuine. To the building, it looks exactly like the guest coming home.

Using the stolen OAuth connection, the attacker took over the Vercel employee's Google Workspace account. Because the access came through a previously approved app and a valid token, it did not look like a hostile login. There was no password to guess, no new device to flag, no obvious anomaly. The attacker was operating as the employee, through a channel the employee themselves had authorized.

This is the heart of why OAuth-token theft is so dangerous: it sidesteps the very controls organizations rely on most. Multi-factor authentication protects logins, but a stolen, still-valid token can be used without re-authenticating. Password rotation does nothing, because no password was used.

Impact: Full takeover of a Vercel employee's corporate Google Workspace account, achieved without a password and without tripping login-anomaly alerts.

4

Lateral Movement Into Vercel's Internal Environments

The everyday analogy: Once inside the guest's room, the thief finds the guest's own master keys to the building's offices on the desk, and uses them to move deeper.

From the compromised Google Workspace account, the attacker reached the employee's individual Vercel account and pivoted into Vercel's internal company environments. Corporate accounts are gateways: an email account often holds access to other systems, contains credentials in messages and documents, and can be used to reset passwords or approve access elsewhere. The single account takeover became a foothold inside the company.

This stage illustrates why over-permissioned identities are so costly. The blast radius of a compromised account is determined by everything that account can reach, and in interconnected enterprises that is frequently far more than the account's owner ever consciously uses.

Impact: Attacker access expanded from one mailbox to Vercel's internal systems, reaching infrastructure that stored customer-facing data.

5

Theft of Customer Credentials and Environment-Variable Data

The everyday analogy: Having reached the records room, the thief copies the customer ledgers, the spare keys customers had left for safekeeping, and the building's own configuration files, and leaves.

Vercel disclosed that a limited subset of customer data was compromised. Specifically, Vercel stated that non-sensitive environment variables, those stored in a form that decrypts to plaintext, were exposed, and these can include API keys, tokens, database credentials, and signing keys. Environment variables are the configuration secrets that applications use to connect to their databases, payment processors, and other services. Sensitive environment variables stored with Vercel's stronger protection remained protected. A threat actor separately claimed on a cybercriminal forum to hold customer API keys, source code, and database data; Vercel's confirmed disclosure centers on the environment-variable exposure.

CEO Guillermo Rauch advised customers to rotate any keys and credentials in their app deployments marked as "non-sensitive." Vercel reported the affected customer set as a limited subset, later finding a small number of additional accounts during its expanded investigation, and engaged Google Mandiant and other firms. Vercel and partners also confirmed its npm packages, and the Next.js and Turbopack open-source projects, were not compromised.

Impact: A limited subset of customers had non-sensitive environment-variable data exposed, including API keys, tokens, database credentials, and signing keys that decrypt to plaintext.

How It Works: What the Consent Screen Said vs. What It Actually Granted

The single most important thing to understand about this class of breach is the gap between what an employee believes they are approving and what they are actually granting. When an AI tool asks to connect to a Google Workspace account, the consent screen presents the request in reassuring, productivity-flavored language. What the employee mentally agrees to is "let this helpful assistant tidy my inbox." What they actually grant is a durable, password-free key that lets the tool, and anyone who steals its token, act broadly in their account.

The danger is not that the employee was careless. The danger is that the consent screen is designed to be approved quickly, and the true scope of the grant, durable, broad, password-free, and only as safe as the vendor holding it, is essentially invisible at the moment of clicking "Allow." The two columns below show the same approval as the employee experiences it and as a security architect must read it.

One Click, Two Very Different Meanings

What the Consent Screen Said

"Context AI wants to access your Google Account. This will let Context AI summarize your email, organize your calendar, and help you draft replies."

[ Allow ]   [ Cancel ]

A helpful AI assistant, approved in two seconds to save time on email. Looks routine and harmless.

What It Actually Granted

scope: read/send mail, read files, calendar — token stored on vendor servers, no expiry, usable without password

A durable, password-free key to a corporate account, held on the AI vendor's infrastructure. Its safety now depends entirely on the vendor's security. If the vendor is breached, the key is stolen, and your firewall, password policy, and MFA never see it coming.

The grant survives long after the moment of consent, reaches far beyond what the employee pictured, and lives on a third party's servers you cannot inspect. This is not a flaw in OAuth; it is OAuth working exactly as designed. The governance failure is approving broad, durable access without inventory, scope review, or expiry, and without knowing the vendor holding the key.

By The Numbers

~2 mo

Estimated Dwell Time (our estimate from reported timeline)

1

Connected AI Tool Needed to Open the Door

100s

Users Across Many Orgs Vercel Says May Be Affected by the Tool

0

Passwords the Attacker Needed to Guess

Financial Impact

Exposure of customer API keys, tokens, database credentials, and signing keys that decrypt to plaintext; cascading risk into customers' own connected systems as those credentials are reused downstream; and the cost of emergency credential rotation, third-party incident response, and erosion of customer trust across a limited but expanding subset of affected accounts.

Risk Severity Analysis

The Vercel incident exposes several distinct governance risks, each carrying a different level of severity and a different difficulty of detection. The following analysis maps the core risks revealed by the breach to their potential business impact.

Risk Category Severity Business Risk
Shadow AI (unsanctioned tools) Critical Tools connected without review become invisible entry points. You cannot defend, monitor, or revoke access you do not know exists. One unsanctioned connection opened the entire chain.
Over-broad OAuth scopes Critical A single token granted broad, durable, password-free access to a corporate account. The breadth of the scope set the breadth of the breach.
Third-party / supply-chain dependency Critical Your security became the AI vendor's security. The breach occurred on infrastructure you do not control, and the same tool may have exposed hundreds of users across many organizations.
Token theft bypassing MFA High A stolen, still-valid token is used without a password and without re-authentication, sidestepping MFA and password rotation entirely. Login-anomaly detection sees an approved app behaving normally.
Prolonged dwell time High Tokens that never expire and are never rotated give attackers patience. An estimated multi-week window let the intrusion mature undetected.
Downstream credential exposure High Stolen environment variables (API keys, tokens, database credentials, signing keys) can unlock customers' own connected systems, extending the blast radius beyond Vercel into its customers' stacks.

Why This Keeps Happening: OAuth Sprawl, Unsanctioned Tools, and No Scope Governance

The Vercel breach is not an anomaly. It is the predictable result of three trends colliding, and the same collision is happening quietly inside most organizations right now. Understanding the root causes is the difference between treating this as someone else's bad luck and recognizing it as your own latent exposure.

First, OAuth sprawl. Over years of "Sign in with Google" and "Connect your account" buttons, the typical employee has authorized dozens of third-party apps to access their corporate accounts. Each authorization creates a durable token. Few are ever reviewed or revoked. The result is a sprawling, invisible web of standing access grants, most of which the security team has never inventoried. Every one of those tokens is a potential master key, and they accumulate silently because granting access takes one click while revoking it takes deliberate effort no one is assigned to do.

Second, unsanctioned AI tools. The AI boom has put powerful, frictionless assistants in front of every employee, and the path of least resistance is to connect them to your real work account so they can be genuinely useful. Sign-up takes seconds and bypasses procurement, security review, and vendor due diligence entirely. The organization gains a productivity tool it never evaluated and a third-party dependency it never knew it took on. When that vendor is breached, the organization inherits the consequences without ever having made a conscious decision to trust it.

Third, no scope governance. Most organizations have no policy governing what scopes a third-party app may request, no process for approving or denying broad grants, no inventory of which tokens exist, and no routine for expiring or rotating them. OAuth grants are treated as a personal-productivity matter for the individual employee rather than an access-control decision for the enterprise. So apps request the broadest scopes they can, employees approve them to make the tool work, and the tokens live forever. There is no one minding the gate.

These three trends reinforce one another. Sprawl makes the attack surface large, unsanctioned adoption makes it invisible, and the absence of scope governance makes each individual grant maximally dangerous. Until organizations treat connected third-party apps, especially AI tools, with the same rigor they apply to vendor access and privileged accounts, breaches like Vercel's will keep recurring, because the underlying conditions are still in place almost everywhere.

What You Can Do: Six Practical Steps to Close the Shadow-AI OAuth Gap

The good news is that this class of breach is highly preventable, and the defenses do not require exotic technology. They require treating connected third-party apps, especially AI tools, as access-control decisions for the enterprise rather than personal choices for the individual. Here are six practical steps any organization can take, in order of impact.

Governing shadow AI and OAuth access across the organization

Effective defense means seeing every connected app, governing the scopes they may request, and treating AI tools as vendors that must be sanctioned, not personal productivity choices made one click at a time.

1

Build a complete OAuth app inventory

You cannot govern what you cannot see. The first and most urgent step is to enumerate every third-party application that holds an OAuth grant to your corporate accounts. Google Workspace, Microsoft 365, and major SaaS platforms all expose admin views of connected apps and the scopes they hold. Pull that list, and you will almost certainly be surprised by how many AI tools, browser extensions, and forgotten apps have standing access.

Treat this as a recurring inventory, not a one-time audit. New apps are connected every week. Establish ownership for the inventory and review it on a regular cadence. This is the equivalent of changing the locks and finally knowing how many keys are out there. In the Vercel case, an inventory that flagged a consumer AI tool with broad Workspace scopes on a corporate account would have surfaced the risk before it became a breach.

2

Enforce scope minimization and block over-broad grants

The breadth of a breach is set by the breadth of the scope. Apply the principle of least privilege to OAuth: an app should hold the narrowest scopes it genuinely needs, and nothing more. Most identity platforms let administrators restrict which apps can request sensitive scopes, require admin approval for broad grants, and block unverified apps outright. Turn these controls on. An AI tool that wants full read/write access to all mail and files should not be approvable by an individual employee with a single click.

Move to an allowlist model for high-scope access: only explicitly approved apps may hold broad permissions, and everything else is denied or routed to admin review. This single change would have meaningfully reduced the blast radius at Vercel, because a narrowly scoped grant yields a narrowly scoped breach even if the token is stolen.

3

Sanction AI tools through a real approval process

Shadow AI thrives where there is no sanctioned alternative and no clear process. Stand up a lightweight but real path for employees to request AI tools, and evaluate them as you would any vendor: what data will they touch, where is that data processed and stored, what is the vendor's security posture, and do they have a track record of breaches or responsible disclosure? Then publish an approved-tools list so employees have good options that do not require going rogue.

Pair the carrot with a clear policy: connecting unsanctioned tools to corporate accounts is prohibited, and the approved path is fast and genuinely useful. The goal is not to ban AI; it is to ensure that every AI tool touching corporate data has been consciously evaluated and accepted as a third-party dependency. Vercel's chain began with a tool that, by the company's description, had not gone through such a process.

4

Rotate tokens and secrets on a schedule, and after any vendor breach

Long-lived tokens are what turn a leaked credential into a months-long intrusion. Set tokens and sessions to expire, require periodic re-consent for sensitive scopes, and rotate API keys, database credentials, and signing keys on a defined schedule rather than leaving them static for years. The shorter a token's useful life, the smaller the window an attacker has after stealing it.

Critically, treat any breach disclosure from a connected vendor as an immediate trigger to revoke that vendor's tokens and rotate any secrets it could have touched. Vercel's own guidance to customers was to rotate non-sensitive credentials immediately; the lesson generalizes. Build the muscle to rotate fast, because when a vendor announces a breach, the clock is already running and the attacker may already hold your keys.

5

Monitor for token-based access anomalies, not just logins

Most monitoring is tuned to catch suspicious logins: a new device, an unusual country, a failed-then-successful password attempt. Token theft sidesteps all of it, because the attacker never logs in. You need monitoring that watches what connected apps actually do: unusual volumes of data access, access at odd hours, a familiar app suddenly reaching new resources, or an app's activity originating from new infrastructure. These are the signals that catch a stolen token in use.

Establish a baseline of normal behavior for each sanctioned app and alert on deviations, the same way fraud detection learns a cardholder's normal spending and flags the anomaly. Because the Vercel attacker operated through an approved app and a valid token, behavior-based monitoring focused on token activity, rather than logins, was the layer most likely to have caught it during the dwell window.

6

Protect downstream secrets so one breach does not cascade

The Vercel breach exposed environment variables stored in a form that decrypts to plaintext, the API keys and database credentials applications use to connect to their other services. Wherever you store such secrets, prefer storage that keeps them encrypted and inaccessible even to an attacker who reaches the surrounding system, and reserve plaintext-accessible storage for values that genuinely are non-sensitive. Vercel offers a sensitive environment variables feature for exactly this reason; comparable protections exist on most platforms.

Equally important, design so that one stolen credential does not unlock everything. Scope downstream keys narrowly, segment access between systems, and ensure that compromising one service's credentials does not hand the attacker the rest of your stack. The blast radius of a breach is determined by how much a single stolen secret can reach. Containment is what turns a serious incident into a survivable one.

Governance Checklist

Does your organization have these controls over connected AI tools and OAuth access?

A complete, regularly refreshed inventory of every third-party app holding OAuth access to corporate accounts
Admin controls that block or gate over-broad OAuth scope grants and unverified apps
A sanctioning process that evaluates AI tools as vendors before they touch corporate data
Scheduled token, key, and secret rotation, plus a rapid-rotation playbook for vendor breaches
Monitoring that detects token-based access anomalies, not just suspicious logins
Encrypted, access-controlled storage for sensitive secrets and environment variables
Segmentation so one stolen downstream credential cannot unlock the whole stack

Most organizations currently lack the controls marked with ✗. Implementing even the first three closes the specific gap that the Vercel incident exploited.

AuthorityGate Governance Framework

AuthorityGate's 8-gate model is built to close exactly this kind of gap. Gate 1 (Pre-Validation) requires AI tools and their requested OAuth scopes to be evaluated before they ever touch corporate data, ending silent shadow-AI adoption. Gate 3 (Vendor & Supply-Chain Review) treats every connected AI tool as a third-party dependency whose security posture must be assessed. Gate 4 (Security Scan) drives the OAuth app inventory and token-anomaly monitoring that surface stolen-token activity. Gate 6 (Operational Resilience) mandates scheduled rotation and a rapid-rotation playbook for vendor breaches. Gate 8 (Recovery Plan) ensures secrets can be revoked and rotated fast enough to contain the blast radius.

The framework treats every connected AI tool as untrusted third-party access by default, applying the same governance rigor to a one-click OAuth grant that organizations already apply to vendor contracts and privileged accounts.

The Bottom Line

The Vercel breach is a near-perfect illustration of how modern attacks bypass modern defenses. No firewall was breached, no password was guessed, no malware was planted on Vercel's systems. An attacker walked in through a legitimate, employee-approved connection to an AI tool that had itself been compromised, and an over-broad OAuth token did the rest. The strongest perimeter in the world does not help when the door has been propped open by an unsanctioned app holding a master key.

The lesson is not "ban AI." AI tools are too useful and too pervasive for that to be realistic. The lesson is that connected third-party AI tools are access-control decisions for the enterprise, not personal productivity choices for the individual, and they must be governed accordingly: inventoried, scope-restricted, sanctioned, monitored, and rotated. Treat every OAuth grant as the durable, password-free key that it is, and treat every AI vendor as a third party whose breach becomes your breach.

The organizations that get ahead of this now, by gaining visibility into their connected apps and governing OAuth access before the next vendor breach, will be the ones that capture the benefits of AI without inheriting its supply-chain risk. The ones that do not will keep discovering, the hard way, that the master key to their company was handed out one click at a time.

This article is part of our incident analysis newsletter series. Subscribe to receive complete analyses with timeline tables, risk matrices, governance checklists, and actionable recommendations.

Share this article