> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudthinker.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Optimize Quickstart

> Connect a cloud account read-only, run the first Optimize scan, read Cost Health and your first findings, and share a cost report.

By the end of this page you'll have one cloud account in Optimize, its first savings findings, and a cost report you can send to a teammate. Allow **about 10 minutes**, plus however long your provider takes to return billing data.

## Prerequisites

* An AWS account, GCP project, or Azure subscription you can grant read access to. With AWS Organizations, Optimize reads only the connected account's own spend, even on the management (payer) account, so connect each account you want covered. See [Work across multiple AWS accounts](https://docs.cloudthinker.io/guide/use-cases/multi-aws-accounts.md).
* **AWS:** Cost Explorer turned on in the AWS console. On a new account it can take up to 24 hours to start returning data.
* **GCP:** the Cloud Billing Standard usage cost export to BigQuery already turned on, with rows in it. Google doesn't fully backfill a new export, so set it up a day ahead. See Google's [export setup guide](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-setup).
* The right [workspace role](https://docs.cloudthinker.io/guide/workspace-users.md) for each step:

| Role | What it can do in Optimize |
| - | - |
| Admin | Connect a cloud account, mark findings as expected, snoozed, or disputed, plus everything a Developer can do |
| Developer | Run scans, turn the daily refresh on or off, move, edit, and assign findings, start finding actions such as **Implement**, schedule reports, create share links |
| Viewer | Read every Optimize page and open reports |

**1. Open Optimize and connect a cloud account (Admin)**

You need the workspace Admin role for this step. Developers and Viewers can't connect a cloud account, so ask an Admin to do it. In the sidebar, click **Optimize**. On an empty workspace, **Overview** shows a three-step setup and a **Connect a cloud account** button (or **Connect AWS**, **Connect GCP**, **Connect Azure** when the provider is already chosen). Click it and fill in the connection dialog without leaving Optimize.

Grant these read-only permissions. Optimize needs both the billing read and the resource read, because the scan checks each billed service with read-only commands.

| Provider | Grant | Where |
| - | - | - |
| AWS | AWS managed `ReadOnlyAccess` (the [AWS setup script](https://docs.cloudthinker.io/guide/connections/aws.md) attaches it). It includes the Cost Explorer reads Optimize needs | The IAM role in each account |
| GCP | **Viewer**, **BigQuery Data Viewer**, and **BigQuery Job User** | The project that holds the billing export |
| Azure | **Reader** and **Cost Management Reader**, granted to the app registration (service principal) you create in the [Azure connection guide](https://docs.cloudthinker.io/guide/connections/azure.md). On a Microsoft Customer Agreement, also **Billing profile reader** on the billing profile | The subscription |

Keep `ReadOnlyAccess` on AWS if you want resource-level findings. The custom policy in [Troubleshooting](#troubleshooting) covers billing and commitment reads only, so on its own the scan can't read your resources. See the [GCP](https://docs.cloudthinker.io/guide/connections/gcp.md) and [Azure](https://docs.cloudthinker.io/guide/connections/azure.md) guides for the setup commands.

> [!NOTE]
>
> These grants are read-only, so a finding's **Implement** action can't change anything yet. Before you use it, add the write permissions for the changes you want and leave **Allow writes** on for the connection. See write access for [AWS](https://docs.cloudthinker.io/guide/connections/aws.md#write-access), [GCP](https://docs.cloudthinker.io/guide/connections/gcp.md#write-access), and [Azure](https://docs.cloudthinker.io/guide/connections/azure.md#write-access). Scans, reports, and every other Optimize page work with read-only access.

**Success state:** the page changes to **Your AWS account is connected** (or **GCP project**, **Azure subscription**) with a **Run first scan** button.

**2. Choose a billing source (GCP and Azure only)**

**AWS**

Nothing to do. Optimize reads the connected account through AWS Cost Explorer.

**GCP**

Pick the **GCP billing export table** in BigQuery that holds your Cloud Billing Standard export, then click **Use this export**.

**Azure**

Pick the **Azure billing scope** (a subscription or billing scope your app registration can read with Cost Management Reader), then click **Use this scope**.

**Success state:** the setup prompt closes and the first-scan screen appears.

**3. Run the first scan**

Click **Run first scan**. CloudThinker pulls your billing history (up to 13 months), then checks each billed service for savings using read-only commands. Nothing in your cloud account changes.

The scan runs in the background, so you can leave the page. To watch it work, click **Open CloudThinker's conversation** (the scan button shows this label while the scan runs) or **Open analysis**. Both open the same scan conversation. Optimize stores the billing data it pulls in your workspace, so pages and reports load without calling your provider again.

After this scan, CloudThinker pulls new billing data once a day. To make this a one-time look, click **Updated …** in the page header and turn **Daily refresh** off.

**Success state:** **Overview** fills in and the header shows an **Updated** time. While the scan runs, the scan button reads **Open CloudThinker's conversation** instead. Once a scan has finished, **Open analysis** next to **Re-scan** opens its conversation. If no scan has finished yet, the cards show a waiting state, not zeros.

**4. Read the Overview**

Look at the three cards at the top:

| Card | What it tells you |
| - | - |
| **(Current month) spend**, for example **October spend** | Gross spend so far this month, with a forecast for month end |
| **Potential monthly savings** | The upper bound across open findings. Findings can overlap |
| **Cost Health** | A score out of 100 with a stage: **Needs work** (Crawl), **On track** (Walk), or **Strong** (Run). See [Key concepts](https://docs.cloudthinker.io/guide/cost-optimization/overview.md#key-concepts) |

Below them, **Start with these actions** lists the highest-value open findings, **Where spend goes** shows the biggest services from the last completed month, and **Recent anomalies** shows unusual cost changes from the last 30 days.

**Success state:** you see an amount in each spend card, a score in **Cost Health**, and at least one row under **Start with these actions**, or **No open cost actions** if the scan found nothing to fix.

**5. Open Cost Health and your first finding**

Click **See what raises your score** to open **Cost Health**. It lists the checks behind the score, grouped as **Gaps**, **Passing**, **Not measured**, and **Out of scope**. Fix gaps first: they're what move the score. For the pillars and stage thresholds, see [Key concepts](https://docs.cloudthinker.io/guide/cost-optimization/overview.md#key-concepts).

Then go back to **Overview** and click the top action. Each finding shows its estimated monthly saving, effort, and risk, plus a **Quick win** or **Needs review** label. A quick win is reversible, low effort, and backed by verified evidence.

**Success state:** you can explain in one sentence what the top finding would change and how much it might save.

**6. Generate and share a report**

In the sidebar, click **Optimize → Reports**. Leave the scope on **Selected account** and click **Savings opportunities**. CloudThinker opens a new conversation and writes the report from your saved findings.

To share it with teammates in your workspace, point them to **Artifacts** in the left sidebar, where the report is saved. They sign in to read it.

For someone outside the workspace, click **Share** on the report's card in **Artifacts** or at the top of the artifact page, then **Create share link**. Anyone with that URL can open the report without signing in, and the link has no expiry: it stays public until you click **Revoke**. Only Developers and Admins can create or revoke links, and there's no separate switch to turn public links off, so workspace roles are how you control sharing. See [Sharing](https://docs.cloudthinker.io/guide/sharing.md).

> [!NOTE]
>
> A report shows account IDs, spend figures, resource names, and architecture details. Read it as an outsider would before you create a public link.

**Success state:** the report shows up in **Artifacts**, and you have a share link or a teammate with workspace access.

## You're done when…

* [ ] **Overview** shows spend, potential savings, and a Cost Health score for your account
* [ ] You opened at least one finding and read its evidence
* [ ] A **Savings opportunities** report exists in **Artifacts**, and you have a share link or teammate access ready

## Troubleshooting

Every Optimize problem is collected in [Optimize troubleshooting](https://docs.cloudthinker.io/guide/cost-optimization/troubleshooting.md), with a cause, a check, and a fix for each. The ones you're most likely to hit on a first scan:

> **AWS Cost Explorer access is required**
>
> **Cause:** the connected role can't call `ce:GetCostAndUsage`.
>
> **Fix:** attach `ReadOnlyAccess` (recommended), then click **Retry scan**. If you can't, add this policy to a custom role instead. On its own it lets billing load but blocks resource-level findings, because the scan can't read your resources. It also grants the commitment reads, which otherwise fail quietly and make commitment coverage look fine when it isn't.
>
> ```json theme={null}
> {
>   "Version": "2012-10-17",
>   "Statement": [
>     {
>       "Effect": "Allow",
>       "Action": [
>         "ce:GetCostAndUsage",
>         "ce:GetCostForecast",
>         "ce:GetReservationCoverage",
>         "ce:GetReservationUtilization",
>         "ce:GetSavingsPlansCoverage",
>         "ce:GetSavingsPlansUtilization",
>         "savingsplans:DescribeSavingsPlans"
>       ],
>       "Resource": "*"
>     }
>   ]
> }
> ```
>
> On a new AWS account, Cost Explorer must be turned on in the AWS console first, and it can take up to 24 hours to start returning data.

> **GCP billing export is not readable**
>
> **Cause:** the connected service account can't read the BigQuery billing data. It needs **BigQuery Data Viewer** and **BigQuery Job User** on the project that holds the export. If you see **GCP billing export is required** instead, the project has no Standard export table.
>
> **Fix:** grant the missing roles, or turn on the Standard export, then pick the table under **GCP billing export table**. See the [GCP connection guide](https://docs.cloudthinker.io/guide/connections/gcp.md).

> **Azure Cost Management is not readable**
>
> **Cause:** Cost Management rejected the query. The app registration is missing **Cost Management Reader** on the subscription, or, on a Microsoft Customer Agreement, **Billing profile reader** on the billing profile.
>
> **Fix:** assign the missing role to the service principal, then pick the scope again under **Azure billing scope**. See the [Azure connection guide](https://docs.cloudthinker.io/guide/connections/azure.md).

> **The scan finished but there is no cost data**
>
> **Cause:** the provider returned no spend for the last full month or the current month, or billing data hasn't arrived yet. AWS Cost Explorer can lag usage by 24 to 48 hours.
>
> **Fix:** wait, then click **Run scan again** (that's the label on this screen; on **Findings** the same action is **Re-scan**). For GCP, confirm the BigQuery export table you picked is the Standard export and has rows.

> **I don't see Run scan or the daily refresh switch**
>
> **Cause:** your workspace role is Viewer. Running scans and changing the refresh need Developer or Admin.
>
> **Fix:** ask a workspace Admin for the Developer role. See [Workspace users](https://docs.cloudthinker.io/guide/workspace-users.md).

## Next steps

> **[Work your findings](https://docs.cloudthinker.io/guide/cost-optimization/recommendations.md)**
>
> Move savings through Pending, In Progress, Implemented, or Ignored

> **[Explore spend history](https://docs.cloudthinker.io/guide/cost-optimization/analytics.md)**
>
> Compare 6 or 12 completed months and ask why a service changed

> **[Schedule reports](https://docs.cloudthinker.io/guide/cost-optimization/reports.md)**
>
> Generate the same report every month on a schedule

> **[Set up Approvals](https://docs.cloudthinker.io/guide/approvals/overview.md)**
>
> Decide what CloudThinker may change when you implement a finding


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.