[{"data":1,"prerenderedAt":6078},["ShallowReactive",2],{"docs-page-en-\u002Fdocs\u002Frecommendation-workflow":3,"docs-navigation-en":5985,"docs-surround-en-\u002Fdocs\u002Frecommendation-workflow":6073},{"id":4,"title":5,"body":6,"claimDependencies":5969,"description":18,"extension":5973,"locale":5974,"meta":5975,"missingMedia":5976,"navigation":142,"owner":5977,"path":5978,"reviewStatus":5979,"seo":5980,"staleLinks":5981,"stem":5982,"technicalRisk":5983,"translationKey":5971,"__hash__":5984},"docs_en\u002Fdocs\u002F6.recommendation-workflow.md","Recommendation Workflow",{"type":7,"value":8,"toc":5899},"minimark",[9,19,24,27,32,72,76,79,106,109,113,603,605,609,613,619,625,663,668,680,686,691,706,708,712,717,721,767,772,783,788,793,801,807,809,813,818,822,856,861,921,926,932,937,939,943,948,952,1018,1023,1068,1073,1087,1092,1098,1100,1104,1109,1113,1192,1197,1277,1282,1286,1401,1406,1408,1412,1417,1421,1501,1506,1575,1580,1584,1590,1595,1597,1601,1606,1610,1698,1703,1709,1714,1840,1845,1850,1852,1856,1861,1865,1940,1945,2105,2111,2324,2329,2334,2336,2340,2345,2350,2442,2447,2496,2501,2506,2512,2517,2519,2523,2528,2532,2621,2626,2695,2700,2706,2711,2716,2718,2722,2727,2731,2811,2816,2822,2827,2833,2838,2858,2862,2873,2878,2880,2884,2888,2891,2896,2902,2906,2909,2915,2919,2922,2927,2933,2938,2944,2949,2955,2960,2966,2968,2972,2976,2979,3205,3209,3214,3219,3251,3253,3257,3261,3299,3303,3340,3344,3381,3385,3422,3424,3428,3433,3471,3476,3513,3515,3519,3524,3562,3567,3604,3606,3610,3615,3652,3657,3695,3700,3737,3739,3743,3746,4033,4037,4043,4171,4173,4177,4181,4186,4200,4204,4221,4226,4252,4258,4263,4265,4269,4273,4287,4291,4305,4310,4315,4401,4403,4406,4410,4423,4427,4444,4449,4569,4575,4586,4588,4592,4596,4607,4612,4629,4634,4640,4642,4646,4650,4656,4787,4792,4812,4814,4818,4821,4881,4883,4887,4892,4898,4900,4904,4908,4911,4917,5050,5052,5056,5059,5064,5078,5083,5105,5110,5116,5118,5122,5125,5198,5200,5204,5208,5240,5242,5246,5251,5301,5303,5307,5312,5365,5370,5381,5383,5387,5391,5397,5402,5424,5426,5431,5435,5452,5454,5459,5463,5477,5479,5484,5488,5505,5507,5511,5515,5541,5545,5571,5575,5599,5601,5605,5609,5625,5629,5666,5670,5693,5695,5699,5703,5785,5787,5791,5796,5813,5818,5832,5834,5838,5843,5857,5862,5868,5873,5884,5886,5895],[10,11,12],"blockquote",{},[13,14,15],"p",{},[16,17,18],"strong",{},"Complete guide to Jetscale's end-to-end cost optimization process",[20,21,23],"h2",{"id":22},"overview","Overview",[13,25,26],{},"Jetscale's recommendation workflow is an intelligent, automated system that continuously identifies, validates, and implements cloud cost optimizations across your AWS and Azure environments. By combining multi-agent AI analysis with production-ready Infrastructure as Code (IaC), Jetscale delivers verified savings while maintaining performance and SLA compliance.",[28,29,31],"h3",{"id":30},"key-capabilities","Key Capabilities",[33,34,35,42,48,54,60,66],"ul",{},[36,37,38,41],"li",{},[16,39,40],{},"Automated Discovery",": Continuous scanning of cloud resources across AWS and Azure",[36,43,44,47],{},[16,45,46],{},"AI-Powered Analysis",": Multi-agent system processes usage patterns and cost data",[36,49,50,53],{},[16,51,52],{},"Validated Recommendations",": Performance and SLA impact assessment before implementation",[36,55,56,59],{},[16,57,58],{},"Production-Ready IaC",": Automated Terraform generation for safe deployments",[36,61,62,65],{},[16,63,64],{},"GitOps Integration",": Seamless PR-based workflow with GitHub and Bitbucket",[36,67,68,71],{},[16,69,70],{},"End-to-End Tracking",": Jira integration for complete audit trail and savings verification",[28,73,75],{"id":74},"workflow-phases","Workflow Phases",[13,77,78],{},"The Jetscale recommendation workflow consists of four major phases:",[80,81,82,88,94,100],"ol",{},[36,83,84,87],{},[16,85,86],{},"Discovery & Collection"," (Steps 1-3): Connect accounts, scan resources, collect metrics",[36,89,90,93],{},[16,91,92],{},"Analysis & Validation"," (Steps 4-6): AI processing, recommendation generation, SLA checks",[36,95,96,99],{},[16,97,98],{},"Implementation Preparation"," (Steps 7-8): Terraform generation, GitOps PR creation",[36,101,102,105],{},[16,103,104],{},"Execution & Tracking"," (Steps 9-11): Review, apply changes, verify savings",[107,108],"hr",{},[20,110,112],{"id":111},"complete-workflow-diagram","Complete Workflow Diagram",[114,115,120],"pre",{"className":116,"code":117,"language":118,"meta":119,"style":119},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sequenceDiagram\n    autonumber\n\n    participant User\n    participant Jetscale UI\n    participant AWS\u002FAzure as Cloud Provider\n    participant Discovery as Resource Discovery\n    participant Metrics as Metrics Collection\n    participant AI as AI Agent System\n    participant CostHub as Cost Optimization Hub\n    participant Validator as SLA Validator\n    participant Terraform as Terraform Generator\n    participant Git as GitHub\u002FBitbucket\n    participant Reviewer as Review Team\n    participant Jira\n\n    %% Phase 1: Discovery & Collection\n    Note over User,Jira: Phase 1: Discovery & Collection\n\n    User->>Jetscale UI: Connect cloud account\n    Jetscale UI->>AWS\u002FAzure: Validate credentials & permissions\n    AWS\u002FAzure-->>Jetscale UI: Connection confirmed\n\n    Jetscale UI->>Discovery: Trigger resource scan\n    Discovery->>AWS\u002FAzure: Query all resources (EC2, RDS, Lambda, etc)\n    AWS\u002FAzure-->>Discovery: Resource inventory\n    Discovery-->>Jetscale UI: 1,247 resources discovered\n\n    Jetscale UI->>Metrics: Start data collection\n    Metrics->>AWS\u002FAzure: Query CloudWatch\u002FAzure Monitor (configurable period)\n    Metrics->>AWS\u002FAzure: Query Cost Explorer\u002FCost Management\n    AWS\u002FAzure-->>Metrics: Usage metrics + cost data\n    Metrics-->>Jetscale UI: Metrics collected & stored\n\n    %% Phase 2: Analysis & Validation\n    Note over User,Jira: Phase 2: Analysis & Validation\n\n    Jetscale UI->>AI: Initiate analysis\n    AI->>AI: Multi-agent processing\u003Cbr\u002F>(Pattern, Anomaly, Forecast agents)\n    AI->>CostHub: Query AWS Cost Optimization Hub\n    CostHub-->>AI: Native AWS recommendations\n    AI->>AI: Generate custom recommendations\u003Cbr\u002F>(rightsizing, scheduling, reserved instances)\n    AI-->>Jetscale UI: 47 recommendations (Est. $12,340\u002Fmo savings)\n\n    Jetscale UI->>Validator: Validate recommendations\n    Validator->>Metrics: Check performance impact\n    Validator->>Validator: Run SLA compliance checks\n    Validator-->>Jetscale UI: 45 recommendations approved\u003Cbr\u002F>2 flagged for review\n\n    %% Phase 3: Implementation Preparation\n    Note over User,Jira: Phase 3: Implementation Preparation\n\n    User->>Jetscale UI: Select recommendations to implement\n    Jetscale UI->>Terraform: Generate IaC for 12 approved recs\n    Terraform->>Terraform: Create production-ready Terraform\u003Cbr\u002F>(state management, variables, outputs)\n    Terraform-->>Jetscale UI: Terraform code generated\n\n    Jetscale UI->>Git: Create PR with Terraform changes\n    Git-->>Jetscale UI: PR #234 created\n    Jetscale UI->>Jira: Create implementation ticket\n    Jira-->>Jetscale UI: JETSCALE-567 created\n\n    %% Phase 4: Execution & Tracking\n    Note over User,Jira: Phase 4: Execution & Tracking\n\n    Git->>Reviewer: Notify team of PR\n    Reviewer->>Git: Review Terraform changes\n    Reviewer->>Git: Approve PR\n\n    User->>Jetscale UI: Apply Terraform\n    Jetscale UI->>Terraform: Execute terraform apply\n    Terraform->>AWS\u002FAzure: Provision optimized resources\n    AWS\u002FAzure-->>Terraform: Changes applied successfully\n    Terraform-->>Jetscale UI: Implementation complete\n\n    Jetscale UI->>Metrics: Monitor post-implementation\n    Metrics->>AWS\u002FAzure: Collect new usage\u002Fcost data\n    AWS\u002FAzure-->>Metrics: Updated metrics\n    Metrics-->>Jetscale UI: Savings verified: $11,890\u002Fmo actual\n\n    Jetscale UI->>Jira: Update ticket with results\n    Jira-->>User: Implementation complete notification\n","mermaid","",[121,122,123,131,137,144,150,156,162,168,174,180,186,192,198,204,210,216,221,227,233,238,244,250,256,261,267,273,279,285,290,296,302,308,314,320,325,331,337,342,348,354,360,366,372,378,383,389,395,401,407,412,418,424,429,435,441,447,453,458,464,470,476,482,487,493,499,504,510,516,522,527,533,539,545,551,557,562,568,574,580,586,591,597],"code",{"__ignoreMap":119},[124,125,128],"span",{"class":126,"line":127},"line",1,[124,129,130],{},"sequenceDiagram\n",[124,132,134],{"class":126,"line":133},2,[124,135,136],{},"    autonumber\n",[124,138,140],{"class":126,"line":139},3,[124,141,143],{"emptyLinePlaceholder":142},true,"\n",[124,145,147],{"class":126,"line":146},4,[124,148,149],{},"    participant User\n",[124,151,153],{"class":126,"line":152},5,[124,154,155],{},"    participant Jetscale UI\n",[124,157,159],{"class":126,"line":158},6,[124,160,161],{},"    participant AWS\u002FAzure as Cloud Provider\n",[124,163,165],{"class":126,"line":164},7,[124,166,167],{},"    participant Discovery as Resource Discovery\n",[124,169,171],{"class":126,"line":170},8,[124,172,173],{},"    participant Metrics as Metrics Collection\n",[124,175,177],{"class":126,"line":176},9,[124,178,179],{},"    participant AI as AI Agent System\n",[124,181,183],{"class":126,"line":182},10,[124,184,185],{},"    participant CostHub as Cost Optimization Hub\n",[124,187,189],{"class":126,"line":188},11,[124,190,191],{},"    participant Validator as SLA Validator\n",[124,193,195],{"class":126,"line":194},12,[124,196,197],{},"    participant Terraform as Terraform Generator\n",[124,199,201],{"class":126,"line":200},13,[124,202,203],{},"    participant Git as GitHub\u002FBitbucket\n",[124,205,207],{"class":126,"line":206},14,[124,208,209],{},"    participant Reviewer as Review Team\n",[124,211,213],{"class":126,"line":212},15,[124,214,215],{},"    participant Jira\n",[124,217,219],{"class":126,"line":218},16,[124,220,143],{"emptyLinePlaceholder":142},[124,222,224],{"class":126,"line":223},17,[124,225,226],{},"    %% Phase 1: Discovery & Collection\n",[124,228,230],{"class":126,"line":229},18,[124,231,232],{},"    Note over User,Jira: Phase 1: Discovery & Collection\n",[124,234,236],{"class":126,"line":235},19,[124,237,143],{"emptyLinePlaceholder":142},[124,239,241],{"class":126,"line":240},20,[124,242,243],{},"    User->>Jetscale UI: Connect cloud account\n",[124,245,247],{"class":126,"line":246},21,[124,248,249],{},"    Jetscale UI->>AWS\u002FAzure: Validate credentials & permissions\n",[124,251,253],{"class":126,"line":252},22,[124,254,255],{},"    AWS\u002FAzure-->>Jetscale UI: Connection confirmed\n",[124,257,259],{"class":126,"line":258},23,[124,260,143],{"emptyLinePlaceholder":142},[124,262,264],{"class":126,"line":263},24,[124,265,266],{},"    Jetscale UI->>Discovery: Trigger resource scan\n",[124,268,270],{"class":126,"line":269},25,[124,271,272],{},"    Discovery->>AWS\u002FAzure: Query all resources (EC2, RDS, Lambda, etc)\n",[124,274,276],{"class":126,"line":275},26,[124,277,278],{},"    AWS\u002FAzure-->>Discovery: Resource inventory\n",[124,280,282],{"class":126,"line":281},27,[124,283,284],{},"    Discovery-->>Jetscale UI: 1,247 resources discovered\n",[124,286,288],{"class":126,"line":287},28,[124,289,143],{"emptyLinePlaceholder":142},[124,291,293],{"class":126,"line":292},29,[124,294,295],{},"    Jetscale UI->>Metrics: Start data collection\n",[124,297,299],{"class":126,"line":298},30,[124,300,301],{},"    Metrics->>AWS\u002FAzure: Query CloudWatch\u002FAzure Monitor (configurable period)\n",[124,303,305],{"class":126,"line":304},31,[124,306,307],{},"    Metrics->>AWS\u002FAzure: Query Cost Explorer\u002FCost Management\n",[124,309,311],{"class":126,"line":310},32,[124,312,313],{},"    AWS\u002FAzure-->>Metrics: Usage metrics + cost data\n",[124,315,317],{"class":126,"line":316},33,[124,318,319],{},"    Metrics-->>Jetscale UI: Metrics collected & stored\n",[124,321,323],{"class":126,"line":322},34,[124,324,143],{"emptyLinePlaceholder":142},[124,326,328],{"class":126,"line":327},35,[124,329,330],{},"    %% Phase 2: Analysis & Validation\n",[124,332,334],{"class":126,"line":333},36,[124,335,336],{},"    Note over User,Jira: Phase 2: Analysis & Validation\n",[124,338,340],{"class":126,"line":339},37,[124,341,143],{"emptyLinePlaceholder":142},[124,343,345],{"class":126,"line":344},38,[124,346,347],{},"    Jetscale UI->>AI: Initiate analysis\n",[124,349,351],{"class":126,"line":350},39,[124,352,353],{},"    AI->>AI: Multi-agent processing\u003Cbr\u002F>(Pattern, Anomaly, Forecast agents)\n",[124,355,357],{"class":126,"line":356},40,[124,358,359],{},"    AI->>CostHub: Query AWS Cost Optimization Hub\n",[124,361,363],{"class":126,"line":362},41,[124,364,365],{},"    CostHub-->>AI: Native AWS recommendations\n",[124,367,369],{"class":126,"line":368},42,[124,370,371],{},"    AI->>AI: Generate custom recommendations\u003Cbr\u002F>(rightsizing, scheduling, reserved instances)\n",[124,373,375],{"class":126,"line":374},43,[124,376,377],{},"    AI-->>Jetscale UI: 47 recommendations (Est. $12,340\u002Fmo savings)\n",[124,379,381],{"class":126,"line":380},44,[124,382,143],{"emptyLinePlaceholder":142},[124,384,386],{"class":126,"line":385},45,[124,387,388],{},"    Jetscale UI->>Validator: Validate recommendations\n",[124,390,392],{"class":126,"line":391},46,[124,393,394],{},"    Validator->>Metrics: Check performance impact\n",[124,396,398],{"class":126,"line":397},47,[124,399,400],{},"    Validator->>Validator: Run SLA compliance checks\n",[124,402,404],{"class":126,"line":403},48,[124,405,406],{},"    Validator-->>Jetscale UI: 45 recommendations approved\u003Cbr\u002F>2 flagged for review\n",[124,408,410],{"class":126,"line":409},49,[124,411,143],{"emptyLinePlaceholder":142},[124,413,415],{"class":126,"line":414},50,[124,416,417],{},"    %% Phase 3: Implementation Preparation\n",[124,419,421],{"class":126,"line":420},51,[124,422,423],{},"    Note over User,Jira: Phase 3: Implementation Preparation\n",[124,425,427],{"class":126,"line":426},52,[124,428,143],{"emptyLinePlaceholder":142},[124,430,432],{"class":126,"line":431},53,[124,433,434],{},"    User->>Jetscale UI: Select recommendations to implement\n",[124,436,438],{"class":126,"line":437},54,[124,439,440],{},"    Jetscale UI->>Terraform: Generate IaC for 12 approved recs\n",[124,442,444],{"class":126,"line":443},55,[124,445,446],{},"    Terraform->>Terraform: Create production-ready Terraform\u003Cbr\u002F>(state management, variables, outputs)\n",[124,448,450],{"class":126,"line":449},56,[124,451,452],{},"    Terraform-->>Jetscale UI: Terraform code generated\n",[124,454,456],{"class":126,"line":455},57,[124,457,143],{"emptyLinePlaceholder":142},[124,459,461],{"class":126,"line":460},58,[124,462,463],{},"    Jetscale UI->>Git: Create PR with Terraform changes\n",[124,465,467],{"class":126,"line":466},59,[124,468,469],{},"    Git-->>Jetscale UI: PR #234 created\n",[124,471,473],{"class":126,"line":472},60,[124,474,475],{},"    Jetscale UI->>Jira: Create implementation ticket\n",[124,477,479],{"class":126,"line":478},61,[124,480,481],{},"    Jira-->>Jetscale UI: JETSCALE-567 created\n",[124,483,485],{"class":126,"line":484},62,[124,486,143],{"emptyLinePlaceholder":142},[124,488,490],{"class":126,"line":489},63,[124,491,492],{},"    %% Phase 4: Execution & Tracking\n",[124,494,496],{"class":126,"line":495},64,[124,497,498],{},"    Note over User,Jira: Phase 4: Execution & Tracking\n",[124,500,502],{"class":126,"line":501},65,[124,503,143],{"emptyLinePlaceholder":142},[124,505,507],{"class":126,"line":506},66,[124,508,509],{},"    Git->>Reviewer: Notify team of PR\n",[124,511,513],{"class":126,"line":512},67,[124,514,515],{},"    Reviewer->>Git: Review Terraform changes\n",[124,517,519],{"class":126,"line":518},68,[124,520,521],{},"    Reviewer->>Git: Approve PR\n",[124,523,525],{"class":126,"line":524},69,[124,526,143],{"emptyLinePlaceholder":142},[124,528,530],{"class":126,"line":529},70,[124,531,532],{},"    User->>Jetscale UI: Apply Terraform\n",[124,534,536],{"class":126,"line":535},71,[124,537,538],{},"    Jetscale UI->>Terraform: Execute terraform apply\n",[124,540,542],{"class":126,"line":541},72,[124,543,544],{},"    Terraform->>AWS\u002FAzure: Provision optimized resources\n",[124,546,548],{"class":126,"line":547},73,[124,549,550],{},"    AWS\u002FAzure-->>Terraform: Changes applied successfully\n",[124,552,554],{"class":126,"line":553},74,[124,555,556],{},"    Terraform-->>Jetscale UI: Implementation complete\n",[124,558,560],{"class":126,"line":559},75,[124,561,143],{"emptyLinePlaceholder":142},[124,563,565],{"class":126,"line":564},76,[124,566,567],{},"    Jetscale UI->>Metrics: Monitor post-implementation\n",[124,569,571],{"class":126,"line":570},77,[124,572,573],{},"    Metrics->>AWS\u002FAzure: Collect new usage\u002Fcost data\n",[124,575,577],{"class":126,"line":576},78,[124,578,579],{},"    AWS\u002FAzure-->>Metrics: Updated metrics\n",[124,581,583],{"class":126,"line":582},79,[124,584,585],{},"    Metrics-->>Jetscale UI: Savings verified: $11,890\u002Fmo actual\n",[124,587,589],{"class":126,"line":588},80,[124,590,143],{"emptyLinePlaceholder":142},[124,592,594],{"class":126,"line":593},81,[124,595,596],{},"    Jetscale UI->>Jira: Update ticket with results\n",[124,598,600],{"class":126,"line":599},82,[124,601,602],{},"    Jira-->>User: Implementation complete notification\n",[107,604],{},[20,606,608],{"id":607},"step-by-step-workflow","Step-by-Step Workflow",[28,610,612],{"id":611},"step-1-cloud-account-connection","Step 1: Cloud Account Connection",[13,614,615,618],{},[16,616,617],{},"Objective",": Establish secure connection to AWS and\u002For Azure accounts",[13,620,621,624],{},[16,622,623],{},"Process",":",[80,626,627,633,640,657,660],{},[36,628,629,630],{},"Navigate to ",[16,631,632],{},"Settings > Cloud Accounts",[36,634,635,636,639],{},"Click ",[16,637,638],{},"Add Account"," and select provider (AWS or Azure)",[36,641,642,643],{},"Follow provider-specific setup:\n",[33,644,645,651],{},[36,646,647,650],{},[16,648,649],{},"AWS",": Create IAM role with Jetscale trust policy, provide Role ARN",[36,652,653,656],{},[16,654,655],{},"Azure",": Register app, grant Subscription Reader + Cost Management Reader",[36,658,659],{},"Jetscale validates credentials and permissions",[36,661,662],{},"Account appears in dashboard with \"Connected\" status",[13,664,665,624],{},[16,666,667],{},"Required Permissions",[33,669,670,675],{},[36,671,672,674],{},[16,673,649],{},": ReadOnlyAccess, CostExplorerReadOnly, TrustedAdvisor:Describe*",[36,676,677,679],{},[16,678,655],{},": Reader, Cost Management Reader",[13,681,682,685],{},[16,683,684],{},"Timeline",": 5-10 minutes",[13,687,688,624],{},[16,689,690],{},"Related Documentation",[33,692,693,700],{},[36,694,695],{},[696,697,699],"a",{"href":698},"\u002Fdocs\u002Faws-setup","AWS Setup Guide",[36,701,702],{},[696,703,705],{"href":704},"\u002Fdocs\u002Fazure-setup","Azure Setup Guide",[107,707],{},[28,709,711],{"id":710},"step-2-resource-discovery","Step 2: Resource Discovery",[13,713,714,716],{},[16,715,617],{},": Scan and catalog all cloud resources across accounts",[13,718,719,624],{},[16,720,623],{},[80,722,723,726,761,764],{},[36,724,725],{},"Automated scan initiates immediately after account connection",[36,727,728,729],{},"Jetscale queries cloud provider APIs to discover:\n",[33,730,731,737,743,749,755],{},[36,732,733,736],{},[16,734,735],{},"Compute",": EC2, Azure VMs, Lambda, App Service",[36,738,739,742],{},[16,740,741],{},"Storage",": EBS, S3, Azure Storage, managed disks",[36,744,745,748],{},[16,746,747],{},"Databases",": RDS, DynamoDB, Cosmos DB, SQL Database",[36,750,751,754],{},[16,752,753],{},"Networking",": Load balancers, NAT gateways, VPN gateways",[36,756,757,760],{},[16,758,759],{},"Containers",": ECS, EKS, AKS, container instances",[36,762,763],{},"Resources are tagged with metadata (region, type, environment)",[36,765,766],{},"Inventory is stored and indexed for fast querying",[13,768,769,624],{},[16,770,771],{},"Discovery Scope",[33,773,774,777,780],{},[36,775,776],{},"All regions enabled in your account",[36,778,779],{},"All resource types supported by Jetscale (100+ AWS, 80+ Azure)",[36,781,782],{},"Resources in all subscription levels (free tier to enterprise)",[13,784,785,787],{},[16,786,684],{},": 5-30 minutes (varies by account size)",[13,789,790,624],{},[16,791,792],{},"Output Example",[114,794,799],{"className":795,"code":797,"language":798},[796],"language-text","✓ Discovered 1,247 resources across 3 accounts\n  - 342 EC2 instances\n  - 89 RDS databases\n  - 156 Lambda functions\n  - 234 EBS volumes\n  - 426 other resources\n","text",[121,800,797],{"__ignoreMap":119},[13,802,803,806],{},[16,804,805],{},"AI Agents Involved",": None (direct API queries)",[107,808],{},[28,810,812],{"id":811},"step-3-data-collection","Step 3: Data Collection",[13,814,815,817],{},[16,816,617],{},": Gather usage metrics and cost data for analysis",[13,819,820,624],{},[16,821,623],{},[80,823,824,847,850,853],{},[36,825,826,827],{},"Jetscale begins continuous metric collection:\n",[33,828,829,835,841],{},[36,830,831,834],{},[16,832,833],{},"CloudWatch\u002FAzure Monitor",": CPU, memory, network, disk I\u002FO",[36,836,837,840],{},[16,838,839],{},"Cost Explorer\u002FCost Management",": Daily cost breakdowns",[36,842,843,846],{},[16,844,845],{},"Service-specific metrics",": Lambda invocations, RDS connections, etc.",[36,848,849],{},"Historical data collected for configurable period",[36,851,852],{},"Metrics aggregated at multiple intervals (5min, 1hr, 1day)",[36,854,855],{},"Data normalized and stored in time-series database",[13,857,858,624],{},[16,859,860],{},"Metrics Collected",[862,863,864,877],"table",{},[865,866,867],"thead",{},[868,869,870,874],"tr",{},[871,872,873],"th",{},"Resource Type",[871,875,876],{},"Key Metrics",[878,879,880,889,897,905,913],"tbody",{},[868,881,882,886],{},[883,884,885],"td",{},"EC2\u002FVM",[883,887,888],{},"CPU utilization, memory, network I\u002FO, disk I\u002FO",[868,890,891,894],{},[883,892,893],{},"RDS\u002FSQL",[883,895,896],{},"Connections, CPU, storage, IOPS, read\u002Fwrite latency",[868,898,899,902],{},[883,900,901],{},"Lambda",[883,903,904],{},"Invocations, duration, memory usage, errors",[868,906,907,910],{},[883,908,909],{},"EBS\u002FDisk",[883,911,912],{},"IOPS, throughput, volume type",[868,914,915,918],{},[883,916,917],{},"S3\u002FStorage",[883,919,920],{},"Requests, data transfer, storage class usage",[13,922,923,925],{},[16,924,684],{},": Continuous (initial baseline: 24-48 hours)",[13,927,928,931],{},[16,929,930],{},"Data Retention",": 90 days (configurable)",[13,933,934,936],{},[16,935,805],{},": None (direct metric collection)",[107,938],{},[28,940,942],{"id":941},"step-4-ai-analysis","Step 4: AI Analysis",[13,944,945,947],{},[16,946,617],{},": Process metrics using multi-agent AI system to identify optimization opportunities",[13,949,950,624],{},[16,951,623],{},[80,953,954,970,986,1002],{},[36,955,956,624,959],{},[16,957,958],{},"Pattern Recognition Agent",[33,960,961,964,967],{},[36,962,963],{},"Analyzes usage trends over time",[36,965,966],{},"Identifies idle\u002Funderutilized resources",[36,968,969],{},"Detects recurring patterns (e.g., weekend shutdowns)",[36,971,972,624,975],{},[16,973,974],{},"Anomaly Detection Agent",[33,976,977,980,983],{},[36,978,979],{},"Flags unusual spikes or drops in usage",[36,981,982],{},"Identifies resources with erratic performance",[36,984,985],{},"Detects potential misconfigurations",[36,987,988,624,991],{},[16,989,990],{},"Forecasting Agent",[33,992,993,996,999],{},[36,994,995],{},"Predicts future usage based on historical data",[36,997,998],{},"Models seasonal variations",[36,1000,1001],{},"Estimates cost trajectory",[36,1003,1004,624,1007],{},[16,1005,1006],{},"Optimization Agent",[33,1008,1009,1012,1015],{},[36,1010,1011],{},"Evaluates potential savings opportunities",[36,1013,1014],{},"Calculates risk\u002Freward ratios",[36,1016,1017],{},"Prioritizes recommendations by impact",[13,1019,1020,624],{},[16,1021,1022],{},"Agent Interactions",[114,1024,1026],{"className":116,"code":1025,"language":118,"meta":119,"style":119},"graph LR\n    A[Metrics Database] --> B[Pattern Recognition Agent]\n    A --> C[Anomaly Detection Agent]\n    A --> D[Forecasting Agent]\n    B --> E[Optimization Agent]\n    C --> E\n    D --> E\n    E --> F[Recommendation Engine]\n",[121,1027,1028,1033,1038,1043,1048,1053,1058,1063],{"__ignoreMap":119},[124,1029,1030],{"class":126,"line":127},[124,1031,1032],{},"graph LR\n",[124,1034,1035],{"class":126,"line":133},[124,1036,1037],{},"    A[Metrics Database] --> B[Pattern Recognition Agent]\n",[124,1039,1040],{"class":126,"line":139},[124,1041,1042],{},"    A --> C[Anomaly Detection Agent]\n",[124,1044,1045],{"class":126,"line":146},[124,1046,1047],{},"    A --> D[Forecasting Agent]\n",[124,1049,1050],{"class":126,"line":152},[124,1051,1052],{},"    B --> E[Optimization Agent]\n",[124,1054,1055],{"class":126,"line":158},[124,1056,1057],{},"    C --> E\n",[124,1059,1060],{"class":126,"line":164},[124,1061,1062],{},"    D --> E\n",[124,1064,1065],{"class":126,"line":170},[124,1066,1067],{},"    E --> F[Recommendation Engine]\n",[13,1069,1070,624],{},[16,1071,1072],{},"AI Models Used",[33,1074,1075,1078,1081,1084],{},[36,1076,1077],{},"Time-series analysis (ARIMA, Prophet)",[36,1079,1080],{},"Clustering algorithms (K-means, DBSCAN)",[36,1082,1083],{},"Neural networks for pattern recognition",[36,1085,1086],{},"Statistical anomaly detection",[13,1088,1089,1091],{},[16,1090,684],{},": 30-60 minutes for initial analysis, then continuous",[13,1093,1094,1097],{},[16,1095,1096],{},"Output",": Structured insights ready for recommendation generation",[107,1099],{},[28,1101,1103],{"id":1102},"step-5-recommendation-generation","Step 5: Recommendation Generation",[13,1105,1106,1108],{},[16,1107,617],{},": Create actionable, validated cost optimization recommendations",[13,1110,1111,624],{},[16,1112,623],{},[80,1114,1115,1131,1173],{},[36,1116,1117,624,1120],{},[16,1118,1119],{},"Native Recommendations",[33,1121,1122,1125,1128],{},[36,1123,1124],{},"Query AWS Cost Optimization Hub (EC2, RDS, EBS, Lambda)",[36,1126,1127],{},"Fetch Azure Advisor recommendations",[36,1129,1130],{},"Parse and normalize recommendations",[36,1132,1133,624,1136],{},[16,1134,1135],{},"Custom Recommendations",[33,1137,1138],{},[36,1139,1140,1141],{},"Generate Jetscale-specific optimizations:\n",[33,1142,1143,1149,1155,1161,1167],{},[36,1144,1145,1148],{},[16,1146,1147],{},"Rightsizing",": Instance type changes based on usage",[36,1150,1151,1154],{},[16,1152,1153],{},"Scheduling",": Stop\u002Fstart patterns for dev\u002Ftest resources",[36,1156,1157,1160],{},[16,1158,1159],{},"Reserved Instances",": Commitment recommendations",[36,1162,1163,1166],{},[16,1164,1165],{},"Storage Optimization",": S3 lifecycle policies, EBS volume types",[36,1168,1169,1172],{},[16,1170,1171],{},"Serverless Migration",": Lambda alternatives for low-traffic apps",[36,1174,1175,624,1178],{},[16,1176,1177],{},"Recommendation Enrichment",[33,1179,1180,1183,1186,1189],{},[36,1181,1182],{},"Add cost savings estimates",[36,1184,1185],{},"Calculate implementation effort (low\u002Fmedium\u002Fhigh)",[36,1187,1188],{},"Attach relevant metrics and evidence",[36,1190,1191],{},"Include rollback procedures",[13,1193,1194,624],{},[16,1195,1196],{},"Recommendation Categories",[862,1198,1199,1212],{},[865,1200,1201],{},[868,1202,1203,1206,1209],{},[871,1204,1205],{},"Category",[871,1207,1208],{},"Examples",[871,1210,1211],{},"Typical Savings",[878,1213,1214,1224,1234,1245,1255,1266],{},[868,1215,1216,1218,1221],{},[883,1217,1147],{},[883,1219,1220],{},"Downsize overprovisioned instances",[883,1222,1223],{},"30-50% per resource",[868,1225,1226,1228,1231],{},[883,1227,1153],{},[883,1229,1230],{},"Stop non-prod resources off-hours",[883,1232,1233],{},"60-75% for scheduled",[868,1235,1236,1239,1242],{},[883,1237,1238],{},"Commitment",[883,1240,1241],{},"Reserved Instances, Savings Plans",[883,1243,1244],{},"30-70% long-term",[868,1246,1247,1249,1252],{},[883,1248,741],{},[883,1250,1251],{},"S3 lifecycle, EBS type changes",[883,1253,1254],{},"40-80% on storage",[868,1256,1257,1260,1263],{},[883,1258,1259],{},"Serverless",[883,1261,1262],{},"Migrate to Lambda\u002FFunctions",[883,1264,1265],{},"70-90% for low-traffic",[868,1267,1268,1271,1274],{},[883,1269,1270],{},"Cleanup",[883,1272,1273],{},"Delete unused resources",[883,1275,1276],{},"100% per resource",[13,1278,1279,1281],{},[16,1280,684],{},": 10-20 minutes",[13,1283,1284,624],{},[16,1285,792],{},[114,1287,1291],{"className":1288,"code":1289,"language":1290,"meta":119,"style":119},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Recommendation ID: REC-2024-001\nType: Rightsizing\nResource: i-0abcd1234efgh5678 (prod-web-server-01)\nCurrent: t3.xlarge (4 vCPU, 16GB RAM)\nRecommended: t3.large (2 vCPU, 8GB RAM)\nReason: Avg CPU 12%, Avg Memory 28% over 30 days\nMonthly Savings: $62.04 (48% reduction)\nEffort: Low\nRisk: Low\nEvidence: [CloudWatch metrics attached]\n","yaml",[121,1292,1293,1306,1316,1326,1336,1346,1356,1366,1376,1385],{"__ignoreMap":119},[124,1294,1295,1299,1302],{"class":126,"line":127},[124,1296,1298],{"class":1297},"swJcz","Recommendation ID",[124,1300,624],{"class":1301},"sMK4o",[124,1303,1305],{"class":1304},"sfazB"," REC-2024-001\n",[124,1307,1308,1311,1313],{"class":126,"line":133},[124,1309,1310],{"class":1297},"Type",[124,1312,624],{"class":1301},[124,1314,1315],{"class":1304}," Rightsizing\n",[124,1317,1318,1321,1323],{"class":126,"line":139},[124,1319,1320],{"class":1297},"Resource",[124,1322,624],{"class":1301},[124,1324,1325],{"class":1304}," i-0abcd1234efgh5678 (prod-web-server-01)\n",[124,1327,1328,1331,1333],{"class":126,"line":146},[124,1329,1330],{"class":1297},"Current",[124,1332,624],{"class":1301},[124,1334,1335],{"class":1304}," t3.xlarge (4 vCPU, 16GB RAM)\n",[124,1337,1338,1341,1343],{"class":126,"line":152},[124,1339,1340],{"class":1297},"Recommended",[124,1342,624],{"class":1301},[124,1344,1345],{"class":1304}," t3.large (2 vCPU, 8GB RAM)\n",[124,1347,1348,1351,1353],{"class":126,"line":158},[124,1349,1350],{"class":1297},"Reason",[124,1352,624],{"class":1301},[124,1354,1355],{"class":1304}," Avg CPU 12%, Avg Memory 28% over 30 days\n",[124,1357,1358,1361,1363],{"class":126,"line":164},[124,1359,1360],{"class":1297},"Monthly Savings",[124,1362,624],{"class":1301},[124,1364,1365],{"class":1304}," $62.04 (48% reduction)\n",[124,1367,1368,1371,1373],{"class":126,"line":170},[124,1369,1370],{"class":1297},"Effort",[124,1372,624],{"class":1301},[124,1374,1375],{"class":1304}," Low\n",[124,1377,1378,1381,1383],{"class":126,"line":176},[124,1379,1380],{"class":1297},"Risk",[124,1382,624],{"class":1301},[124,1384,1375],{"class":1304},[124,1386,1387,1390,1392,1395,1398],{"class":126,"line":182},[124,1388,1389],{"class":1297},"Evidence",[124,1391,624],{"class":1301},[124,1393,1394],{"class":1301}," [",[124,1396,1397],{"class":1304},"CloudWatch metrics attached",[124,1399,1400],{"class":1301},"]\n",[13,1402,1403,1405],{},[16,1404,805],{},": Optimization Agent, Cost Analysis Agent",[107,1407],{},[28,1409,1411],{"id":1410},"step-6-validation","Step 6: Validation",[13,1413,1414,1416],{},[16,1415,617],{},": Verify recommendations won't negatively impact performance or SLAs",[13,1418,1419,624],{},[16,1420,623],{},[80,1422,1423,1442,1466,1482],{},[36,1424,1425,624,1428],{},[16,1426,1427],{},"Performance Impact Assessment",[33,1429,1430,1433,1436,1439],{},[36,1431,1432],{},"Simulate recommended changes against historical load",[36,1434,1435],{},"Model peak usage scenarios",[36,1437,1438],{},"Calculate performance degradation risk",[36,1440,1441],{},"Check against defined thresholds (e.g., CPU \u003C80%)",[36,1443,1444,624,1447],{},[16,1445,1446],{},"SLA Compliance Check",[33,1448,1449,1463],{},[36,1450,1451,1452],{},"Verify against user-defined SLAs:\n",[33,1453,1454,1457,1460],{},[36,1455,1456],{},"Response time requirements",[36,1458,1459],{},"Availability targets (99.9%, 99.99%)",[36,1461,1462],{},"Throughput minimums",[36,1464,1465],{},"Flag recommendations that risk SLA violations",[36,1467,1468,624,1471],{},[16,1469,1470],{},"Dependency Analysis",[33,1472,1473,1476,1479],{},[36,1474,1475],{},"Check for resource dependencies",[36,1477,1478],{},"Identify cascading impacts (e.g., scaling groups)",[36,1480,1481],{},"Validate network\u002Fsecurity group changes",[36,1483,1484,624,1487],{},[16,1485,1486],{},"Safety Scoring",[33,1488,1489,1492,1495,1498],{},[36,1490,1491],{},"Assign risk score (1-10) to each recommendation",[36,1493,1494],{},"Low risk (1-3): Auto-approve eligible",[36,1496,1497],{},"Medium risk (4-7): Flag for review",[36,1499,1500],{},"High risk (8-10): Require explicit approval",[13,1502,1503,624],{},[16,1504,1505],{},"Validation Rules",[862,1507,1508,1521],{},[865,1509,1510],{},[868,1511,1512,1515,1518],{},[871,1513,1514],{},"Check",[871,1516,1517],{},"Threshold",[871,1519,1520],{},"Action if Failed",[878,1522,1523,1534,1544,1555,1565],{},[868,1524,1525,1528,1531],{},[883,1526,1527],{},"CPU headroom",[883,1529,1530],{},">20% capacity",[883,1532,1533],{},"Flag for review",[868,1535,1536,1539,1542],{},[883,1537,1538],{},"Memory headroom",[883,1540,1541],{},">15% capacity",[883,1543,1533],{},[868,1545,1546,1549,1552],{},[883,1547,1548],{},"Peak load handling",[883,1550,1551],{},"Must handle 99th percentile",[883,1553,1554],{},"Block recommendation",[868,1556,1557,1560,1563],{},[883,1558,1559],{},"Availability impact",[883,1561,1562],{},"SLA maintained",[883,1564,1554],{},[868,1566,1567,1570,1573],{},[883,1568,1569],{},"Rollback feasibility",[883,1571,1572],{},"Must be reversible \u003C5 min",[883,1574,1533],{},[13,1576,1577,1579],{},[16,1578,684],{},": 5-10 minutes per recommendation",[13,1581,1582,624],{},[16,1583,1096],{},[114,1585,1588],{"className":1586,"code":1587,"language":798},[796],"✓ 45 recommendations validated and approved\n⚠ 2 recommendations flagged for manual review:\n  - REC-2024-018: May impact peak load (review metrics)\n  - REC-2024-031: Reserved Instance commitment (verify usage trend)\n✗ 0 recommendations blocked\n",[121,1589,1587],{"__ignoreMap":119},[13,1591,1592,1594],{},[16,1593,805],{},": Validation Agent, SLA Checker Agent",[107,1596],{},[28,1598,1600],{"id":1599},"step-7-terraform-generation","Step 7: Terraform Generation",[13,1602,1603,1605],{},[16,1604,617],{},": Create production-ready Infrastructure as Code for approved recommendations",[13,1607,1608,624],{},[16,1609,623],{},[80,1611,1612,1631,1647,1674],{},[36,1613,1614,624,1617],{},[16,1615,1616],{},"Code Generation",[33,1618,1619,1622,1625,1628],{},[36,1620,1621],{},"Convert recommendations to Terraform HCL",[36,1623,1624],{},"Generate modules for each resource type",[36,1626,1627],{},"Include variables for environment-specific values",[36,1629,1630],{},"Add outputs for tracking and verification",[36,1632,1633,624,1636],{},[16,1634,1635],{},"State Management",[33,1637,1638,1641,1644],{},[36,1639,1640],{},"Configure remote state backend (S3\u002FAzure Storage)",[36,1642,1643],{},"Set up state locking (DynamoDB\u002FAzure Storage)",[36,1645,1646],{},"Include workspace configuration for multi-env",[36,1648,1649,624,1652],{},[16,1650,1651],{},"Safety Features",[33,1653,1654,1661,1668,1671],{},[36,1655,1656,1657,1660],{},"Add ",[121,1658,1659],{},"prevent_destroy"," lifecycle rules for critical resources",[36,1662,1663,1664,1667],{},"Include ",[121,1665,1666],{},"create_before_destroy"," for zero-downtime changes",[36,1669,1670],{},"Generate plan files for review",[36,1672,1673],{},"Add rollback instructions in comments",[36,1675,1676,624,1679],{},[16,1677,1678],{},"Testing",[33,1680,1681,1688,1695],{},[36,1682,1683,1684,1687],{},"Run ",[121,1685,1686],{},"terraform validate"," on generated code",[36,1689,1690,1691,1694],{},"Execute ",[121,1692,1693],{},"terraform plan"," in dry-run mode",[36,1696,1697],{},"Check for syntax errors and warnings",[13,1699,1700,624],{},[16,1701,1702],{},"Terraform Structure",[114,1704,1707],{"className":1705,"code":1706,"language":798},[796],"jetscale-optimizations\u002F\n├── main.tf                 # Primary resource definitions\n├── variables.tf            # Input variables\n├── outputs.tf              # Outputs for tracking\n├── backend.tf              # State backend config\n├── versions.tf             # Provider versions\n├── modules\u002F\n│   ├── ec2-rightsizing\u002F    # EC2 instance modifications\n│   ├── rds-optimization\u002F   # RDS changes\n│   ├── lambda-scheduling\u002F  # Lambda configuration\n│   └── storage-lifecycle\u002F  # S3\u002FEBS policies\n└── README.md               # Implementation guide\n",[121,1708,1706],{"__ignoreMap":119},[13,1710,1711,624],{},[16,1712,1713],{},"Example Generated Terraform",[114,1715,1719],{"className":1716,"code":1717,"language":1718,"meta":119,"style":119},"language-hcl shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# main.tf\nresource \"aws_instance\" \"prod_web_server_01\" {\n  instance_type = \"t3.large\"  # Changed from t3.xlarge\n\n  lifecycle {\n    create_before_destroy = true\n  }\n\n  tags = {\n    Name                  = \"prod-web-server-01\"\n    JetscaleRecommendation = \"REC-2024-001\"\n    JetscaleSavings       = \"62.04\"\n  }\n}\n\n# outputs.tf\noutput \"optimized_instances\" {\n  value = {\n    \"prod-web-server-01\" = {\n      old_type = \"t3.xlarge\"\n      new_type = aws_instance.prod_web_server_01.instance_type\n      monthly_savings = 62.04\n    }\n  }\n}\n","hcl",[121,1720,1721,1726,1731,1736,1740,1745,1750,1755,1759,1764,1769,1774,1779,1783,1788,1792,1797,1802,1807,1812,1817,1822,1827,1832,1836],{"__ignoreMap":119},[124,1722,1723],{"class":126,"line":127},[124,1724,1725],{},"# main.tf\n",[124,1727,1728],{"class":126,"line":133},[124,1729,1730],{},"resource \"aws_instance\" \"prod_web_server_01\" {\n",[124,1732,1733],{"class":126,"line":139},[124,1734,1735],{},"  instance_type = \"t3.large\"  # Changed from t3.xlarge\n",[124,1737,1738],{"class":126,"line":146},[124,1739,143],{"emptyLinePlaceholder":142},[124,1741,1742],{"class":126,"line":152},[124,1743,1744],{},"  lifecycle {\n",[124,1746,1747],{"class":126,"line":158},[124,1748,1749],{},"    create_before_destroy = true\n",[124,1751,1752],{"class":126,"line":164},[124,1753,1754],{},"  }\n",[124,1756,1757],{"class":126,"line":170},[124,1758,143],{"emptyLinePlaceholder":142},[124,1760,1761],{"class":126,"line":176},[124,1762,1763],{},"  tags = {\n",[124,1765,1766],{"class":126,"line":182},[124,1767,1768],{},"    Name                  = \"prod-web-server-01\"\n",[124,1770,1771],{"class":126,"line":188},[124,1772,1773],{},"    JetscaleRecommendation = \"REC-2024-001\"\n",[124,1775,1776],{"class":126,"line":194},[124,1777,1778],{},"    JetscaleSavings       = \"62.04\"\n",[124,1780,1781],{"class":126,"line":200},[124,1782,1754],{},[124,1784,1785],{"class":126,"line":206},[124,1786,1787],{},"}\n",[124,1789,1790],{"class":126,"line":212},[124,1791,143],{"emptyLinePlaceholder":142},[124,1793,1794],{"class":126,"line":218},[124,1795,1796],{},"# outputs.tf\n",[124,1798,1799],{"class":126,"line":223},[124,1800,1801],{},"output \"optimized_instances\" {\n",[124,1803,1804],{"class":126,"line":229},[124,1805,1806],{},"  value = {\n",[124,1808,1809],{"class":126,"line":235},[124,1810,1811],{},"    \"prod-web-server-01\" = {\n",[124,1813,1814],{"class":126,"line":240},[124,1815,1816],{},"      old_type = \"t3.xlarge\"\n",[124,1818,1819],{"class":126,"line":246},[124,1820,1821],{},"      new_type = aws_instance.prod_web_server_01.instance_type\n",[124,1823,1824],{"class":126,"line":252},[124,1825,1826],{},"      monthly_savings = 62.04\n",[124,1828,1829],{"class":126,"line":258},[124,1830,1831],{},"    }\n",[124,1833,1834],{"class":126,"line":263},[124,1835,1754],{},[124,1837,1838],{"class":126,"line":269},[124,1839,1787],{},[13,1841,1842,1844],{},[16,1843,684],{},": 5-15 minutes per batch of recommendations",[13,1846,1847,1849],{},[16,1848,805],{},": Code Generation Agent, IaC Validation Agent",[107,1851],{},[28,1853,1855],{"id":1854},"step-8-gitops-integration","Step 8: GitOps Integration",[13,1857,1858,1860],{},[16,1859,617],{},": Create pull requests in version control for team review",[13,1862,1863,624],{},[16,1864,623],{},[80,1866,1867,1888,1921],{},[36,1868,1869,1872,1873],{},[16,1870,1871],{},"Repository Setup"," (one-time):",[33,1874,1875,1878,1881],{},[36,1876,1877],{},"Connect GitHub or Bitbucket account",[36,1879,1880],{},"Select target repository",[36,1882,1883,1884,1887],{},"Configure branch strategy (e.g., ",[121,1885,1886],{},"jetscale\u002Foptimizations\u002F*",")",[36,1889,1890,624,1893],{},[16,1891,1892],{},"PR Creation",[33,1894,1895,1898,1901,1918],{},[36,1896,1897],{},"Create feature branch from main\u002Fmaster",[36,1899,1900],{},"Commit Terraform code with descriptive message",[36,1902,1903,1904],{},"Generate PR with detailed description:\n",[33,1905,1906,1909,1912,1915],{},[36,1907,1908],{},"Summary of recommendations",[36,1910,1911],{},"Expected savings and impact",[36,1913,1914],{},"Validation results",[36,1916,1917],{},"Rollback procedures",[36,1919,1920],{},"Add reviewers automatically (configurable)",[36,1922,1923,624,1926],{},[16,1924,1925],{},"PR Metadata",[33,1927,1928,1931,1934,1937],{},[36,1929,1930],{},"Link to Jetscale recommendation dashboard",[36,1932,1933],{},"Attach cost analysis charts",[36,1935,1936],{},"Include before\u002Fafter resource configurations",[36,1938,1939],{},"Add CI\u002FCD workflow for terraform plan",[13,1941,1942,624],{},[16,1943,1944],{},"PR Description Template",[114,1946,1950],{"className":1947,"code":1948,"language":1949,"meta":119,"style":119},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","## Jetscale Cost Optimization PR\n\n### Summary\nThis PR implements 12 Jetscale recommendations with estimated savings of **$2,847\u002Fmonth**.\n\n### Recommendations Included\n- **6x Rightsizing**: Downsize overprovisioned EC2 instances\n- **3x Scheduling**: Implement stop\u002Fstart for dev resources\n- **2x Storage**: Optimize EBS volume types\n- **1x Cleanup**: Remove unused snapshots\n\n### Validation Status\n✓ All recommendations passed SLA compliance checks\n✓ Performance impact modeled and acceptable\n✓ Rollback procedures documented\n\n### Expected Impact\n- **Monthly Savings**: $2,847\n- **Annual Savings**: $34,164\n- **Affected Resources**: 12\n- **Risk Level**: Low\n\n### Testing\n- [x] `terraform validate` passed\n- [x] `terraform plan` reviewed\n- [ ] Peer review required\n\n### Rollback Plan\nIf you need to rollback a change, you can revert the Terraform changes and apply the previous configuration. Monitor your metrics closely during and after rollback to ensure services return to expected performance levels.\n\n---\n**Generated by Jetscale** | [View in Dashboard](https:\u002F\u002Fapp.jetscale.ai\u002Frecommendations\u002Fbatch-2024-001)\n","markdown",[121,1951,1952,1957,1961,1966,1971,1975,1980,1985,1990,1995,2000,2004,2009,2014,2019,2024,2028,2033,2038,2043,2048,2053,2057,2062,2067,2072,2077,2081,2086,2091,2095,2100],{"__ignoreMap":119},[124,1953,1954],{"class":126,"line":127},[124,1955,1956],{},"## Jetscale Cost Optimization PR\n",[124,1958,1959],{"class":126,"line":133},[124,1960,143],{"emptyLinePlaceholder":142},[124,1962,1963],{"class":126,"line":139},[124,1964,1965],{},"### Summary\n",[124,1967,1968],{"class":126,"line":146},[124,1969,1970],{},"This PR implements 12 Jetscale recommendations with estimated savings of **$2,847\u002Fmonth**.\n",[124,1972,1973],{"class":126,"line":152},[124,1974,143],{"emptyLinePlaceholder":142},[124,1976,1977],{"class":126,"line":158},[124,1978,1979],{},"### Recommendations Included\n",[124,1981,1982],{"class":126,"line":164},[124,1983,1984],{},"- **6x Rightsizing**: Downsize overprovisioned EC2 instances\n",[124,1986,1987],{"class":126,"line":170},[124,1988,1989],{},"- **3x Scheduling**: Implement stop\u002Fstart for dev resources\n",[124,1991,1992],{"class":126,"line":176},[124,1993,1994],{},"- **2x Storage**: Optimize EBS volume types\n",[124,1996,1997],{"class":126,"line":182},[124,1998,1999],{},"- **1x Cleanup**: Remove unused snapshots\n",[124,2001,2002],{"class":126,"line":188},[124,2003,143],{"emptyLinePlaceholder":142},[124,2005,2006],{"class":126,"line":194},[124,2007,2008],{},"### Validation Status\n",[124,2010,2011],{"class":126,"line":200},[124,2012,2013],{},"✓ All recommendations passed SLA compliance checks\n",[124,2015,2016],{"class":126,"line":206},[124,2017,2018],{},"✓ Performance impact modeled and acceptable\n",[124,2020,2021],{"class":126,"line":212},[124,2022,2023],{},"✓ Rollback procedures documented\n",[124,2025,2026],{"class":126,"line":218},[124,2027,143],{"emptyLinePlaceholder":142},[124,2029,2030],{"class":126,"line":223},[124,2031,2032],{},"### Expected Impact\n",[124,2034,2035],{"class":126,"line":229},[124,2036,2037],{},"- **Monthly Savings**: $2,847\n",[124,2039,2040],{"class":126,"line":235},[124,2041,2042],{},"- **Annual Savings**: $34,164\n",[124,2044,2045],{"class":126,"line":240},[124,2046,2047],{},"- **Affected Resources**: 12\n",[124,2049,2050],{"class":126,"line":246},[124,2051,2052],{},"- **Risk Level**: Low\n",[124,2054,2055],{"class":126,"line":252},[124,2056,143],{"emptyLinePlaceholder":142},[124,2058,2059],{"class":126,"line":258},[124,2060,2061],{},"### Testing\n",[124,2063,2064],{"class":126,"line":263},[124,2065,2066],{},"- [x] `terraform validate` passed\n",[124,2068,2069],{"class":126,"line":269},[124,2070,2071],{},"- [x] `terraform plan` reviewed\n",[124,2073,2074],{"class":126,"line":275},[124,2075,2076],{},"- [ ] Peer review required\n",[124,2078,2079],{"class":126,"line":281},[124,2080,143],{"emptyLinePlaceholder":142},[124,2082,2083],{"class":126,"line":287},[124,2084,2085],{},"### Rollback Plan\n",[124,2087,2088],{"class":126,"line":292},[124,2089,2090],{},"If you need to rollback a change, you can revert the Terraform changes and apply the previous configuration. Monitor your metrics closely during and after rollback to ensure services return to expected performance levels.\n",[124,2092,2093],{"class":126,"line":298},[124,2094,143],{"emptyLinePlaceholder":142},[124,2096,2097],{"class":126,"line":304},[124,2098,2099],{},"---\n",[124,2101,2102],{"class":126,"line":310},[124,2103,2104],{},"**Generated by Jetscale** | [View in Dashboard](https:\u002F\u002Fapp.jetscale.ai\u002Frecommendations\u002Fbatch-2024-001)\n",[13,2106,2107,2110],{},[16,2108,2109],{},"GitHub Actions Workflow"," (auto-added):",[114,2112,2114],{"className":1288,"code":2113,"language":1290,"meta":119,"style":119},"name: Jetscale Terraform Plan\non:\n  pull_request:\n    paths:\n      - '**.tf'\n\njobs:\n  plan:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v3\n      - uses: hashicorp\u002Fsetup-terraform@v2\n      - run: terraform init\n      - run: terraform plan -out=plan.tfplan\n      - run: terraform show -no-color plan.tfplan > plan.txt\n      - uses: actions\u002Fgithub-script@v6\n        with:\n          script: |\n            const fs = require('fs');\n            const plan = fs.readFileSync('plan.txt', 'utf8');\n            github.rest.issues.createComment({\n              issue_number: context.issue.number,\n              owner: context.repo.owner,\n              repo: context.repo.repo,\n              body: `### Terraform Plan\\n\\`\\`\\`\\n${plan}\\n\\`\\`\\``\n            });\n",[121,2115,2116,2126,2135,2142,2149,2163,2167,2174,2181,2191,2198,2210,2221,2233,2244,2255,2266,2273,2284,2289,2294,2299,2304,2309,2314,2319],{"__ignoreMap":119},[124,2117,2118,2121,2123],{"class":126,"line":127},[124,2119,2120],{"class":1297},"name",[124,2122,624],{"class":1301},[124,2124,2125],{"class":1304}," Jetscale Terraform Plan\n",[124,2127,2128,2132],{"class":126,"line":133},[124,2129,2131],{"class":2130},"sfNiH","on",[124,2133,2134],{"class":1301},":\n",[124,2136,2137,2140],{"class":126,"line":139},[124,2138,2139],{"class":1297},"  pull_request",[124,2141,2134],{"class":1301},[124,2143,2144,2147],{"class":126,"line":146},[124,2145,2146],{"class":1297},"    paths",[124,2148,2134],{"class":1301},[124,2150,2151,2154,2157,2160],{"class":126,"line":152},[124,2152,2153],{"class":1301},"      -",[124,2155,2156],{"class":1301}," '",[124,2158,2159],{"class":1304},"**.tf",[124,2161,2162],{"class":1301},"'\n",[124,2164,2165],{"class":126,"line":158},[124,2166,143],{"emptyLinePlaceholder":142},[124,2168,2169,2172],{"class":126,"line":164},[124,2170,2171],{"class":1297},"jobs",[124,2173,2134],{"class":1301},[124,2175,2176,2179],{"class":126,"line":170},[124,2177,2178],{"class":1297},"  plan",[124,2180,2134],{"class":1301},[124,2182,2183,2186,2188],{"class":126,"line":176},[124,2184,2185],{"class":1297},"    runs-on",[124,2187,624],{"class":1301},[124,2189,2190],{"class":1304}," ubuntu-latest\n",[124,2192,2193,2196],{"class":126,"line":182},[124,2194,2195],{"class":1297},"    steps",[124,2197,2134],{"class":1301},[124,2199,2200,2202,2205,2207],{"class":126,"line":188},[124,2201,2153],{"class":1301},[124,2203,2204],{"class":1297}," uses",[124,2206,624],{"class":1301},[124,2208,2209],{"class":1304}," actions\u002Fcheckout@v3\n",[124,2211,2212,2214,2216,2218],{"class":126,"line":194},[124,2213,2153],{"class":1301},[124,2215,2204],{"class":1297},[124,2217,624],{"class":1301},[124,2219,2220],{"class":1304}," hashicorp\u002Fsetup-terraform@v2\n",[124,2222,2223,2225,2228,2230],{"class":126,"line":200},[124,2224,2153],{"class":1301},[124,2226,2227],{"class":1297}," run",[124,2229,624],{"class":1301},[124,2231,2232],{"class":1304}," terraform init\n",[124,2234,2235,2237,2239,2241],{"class":126,"line":206},[124,2236,2153],{"class":1301},[124,2238,2227],{"class":1297},[124,2240,624],{"class":1301},[124,2242,2243],{"class":1304}," terraform plan -out=plan.tfplan\n",[124,2245,2246,2248,2250,2252],{"class":126,"line":212},[124,2247,2153],{"class":1301},[124,2249,2227],{"class":1297},[124,2251,624],{"class":1301},[124,2253,2254],{"class":1304}," terraform show -no-color plan.tfplan > plan.txt\n",[124,2256,2257,2259,2261,2263],{"class":126,"line":218},[124,2258,2153],{"class":1301},[124,2260,2204],{"class":1297},[124,2262,624],{"class":1301},[124,2264,2265],{"class":1304}," actions\u002Fgithub-script@v6\n",[124,2267,2268,2271],{"class":126,"line":223},[124,2269,2270],{"class":1297},"        with",[124,2272,2134],{"class":1301},[124,2274,2275,2278,2280],{"class":126,"line":229},[124,2276,2277],{"class":1297},"          script",[124,2279,624],{"class":1301},[124,2281,2283],{"class":2282},"s7zQu"," |\n",[124,2285,2286],{"class":126,"line":235},[124,2287,2288],{"class":1304},"            const fs = require('fs');\n",[124,2290,2291],{"class":126,"line":240},[124,2292,2293],{"class":1304},"            const plan = fs.readFileSync('plan.txt', 'utf8');\n",[124,2295,2296],{"class":126,"line":246},[124,2297,2298],{"class":1304},"            github.rest.issues.createComment({\n",[124,2300,2301],{"class":126,"line":252},[124,2302,2303],{"class":1304},"              issue_number: context.issue.number,\n",[124,2305,2306],{"class":126,"line":258},[124,2307,2308],{"class":1304},"              owner: context.repo.owner,\n",[124,2310,2311],{"class":126,"line":263},[124,2312,2313],{"class":1304},"              repo: context.repo.repo,\n",[124,2315,2316],{"class":126,"line":269},[124,2317,2318],{"class":1304},"              body: `### Terraform Plan\\n\\`\\`\\`\\n${plan}\\n\\`\\`\\``\n",[124,2320,2321],{"class":126,"line":275},[124,2322,2323],{"class":1304},"            });\n",[13,2325,2326,2328],{},[16,2327,684],{},": 2-5 minutes per PR",[13,2330,2331,2333],{},[16,2332,805],{},": GitOps Agent (PR formatting and CI\u002FCD setup)",[107,2335],{},[28,2337,2339],{"id":2338},"step-9-review-approval","Step 9: Review & Approval",[13,2341,2342,2344],{},[16,2343,617],{},": Team reviews and approves Terraform changes before implementation",[13,2346,2347,624],{},[16,2348,2349],{},"User Experience",[80,2351,2352,2368,2390,2421],{},[36,2353,2354,624,2357],{},[16,2355,2356],{},"Notification",[33,2358,2359,2362,2365],{},[36,2360,2361],{},"Team receives GitHub\u002FBitbucket notification",[36,2363,2364],{},"Jetscale dashboard shows \"Pending Review\" status",[36,2366,2367],{},"Email\u002FSlack alerts sent (if configured)",[36,2369,2370,624,2373],{},[16,2371,2372],{},"Review Process",[33,2374,2375,2378,2381,2384,2387],{},[36,2376,2377],{},"Reviewer opens PR in GitHub\u002FBitbucket",[36,2379,2380],{},"Examines Terraform plan output",[36,2382,2383],{},"Checks Jetscale dashboard for detailed metrics",[36,2385,2386],{},"Reviews cost\u002Fbenefit analysis",[36,2388,2389],{},"Verifies rollback procedures",[36,2391,2392,624,2395],{},[16,2393,2394],{},"Approval Options",[33,2396,2397,2403,2409,2415],{},[36,2398,2399,2402],{},[16,2400,2401],{},"Approve",": Ready for implementation",[36,2404,2405,2408],{},[16,2406,2407],{},"Request Changes",": Flag issues, Jetscale regenerates",[36,2410,2411,2414],{},[16,2412,2413],{},"Comment",": Ask questions, request additional validation",[36,2416,2417,2420],{},[16,2418,2419],{},"Reject",": Close PR if recommendation no longer applicable",[36,2422,2423,624,2426],{},[16,2424,2425],{},"Automated Checks",[33,2427,2428,2433,2436,2439],{},[36,2429,2430,2431],{},"CI\u002FCD pipeline runs ",[121,2432,1693],{},[36,2434,2435],{},"Security scanning (e.g., tfsec, checkov)",[36,2437,2438],{},"Cost estimation (e.g., Infracost)",[36,2440,2441],{},"All checks must pass before merge",[13,2443,2444,624],{},[16,2445,2446],{},"Review Checklist",[33,2448,2451,2460,2466,2472,2478,2484,2490],{"className":2449},[2450],"contains-task-list",[36,2452,2455,2459],{"className":2453},[2454],"task-list-item",[2456,2457],"input",{"disabled":142,"type":2458},"checkbox"," Terraform plan output reviewed",[36,2461,2463,2465],{"className":2462},[2454],[2456,2464],{"disabled":142,"type":2458}," Cost savings validated",[36,2467,2469,2471],{"className":2468},[2454],[2456,2470],{"disabled":142,"type":2458}," Performance impact acceptable",[36,2473,2475,2477],{"className":2474},[2454],[2456,2476],{"disabled":142,"type":2458}," SLA compliance verified",[36,2479,2481,2483],{"className":2480},[2454],[2456,2482],{"disabled":142,"type":2458}," Rollback procedure understood",[36,2485,2487,2489],{"className":2486},[2454],[2456,2488],{"disabled":142,"type":2458}," All CI\u002FCD checks passed",[36,2491,2493,2495],{"className":2492},[2454],[2456,2494],{"disabled":142,"type":2458}," Security scan passed",[13,2497,2498,2500],{},[16,2499,684],{},": 1-3 business days (team-dependent)",[13,2502,2503,624],{},[16,2504,2505],{},"Jetscale Dashboard View",[114,2507,2510],{"className":2508,"code":2509,"language":798},[796],"Recommendation Batch #2024-001\nStatus: Awaiting Approval\nPR: github.com\u002Fyourorg\u002Finfra\u002Fpull\u002F234\nReviewers: @alice, @bob (1\u002F2 approved)\nEst. Savings: $2,847\u002Fmonth\nResources: 12\nRisk: Low\n",[121,2511,2509],{"__ignoreMap":119},[13,2513,2514,2516],{},[16,2515,805],{},": None (human review process)",[107,2518],{},[28,2520,2522],{"id":2521},"step-10-implementation","Step 10: Implementation",[13,2524,2525,2527],{},[16,2526,617],{},": Apply Terraform changes to cloud environment",[13,2529,2530,624],{},[16,2531,623],{},[80,2533,2534,2553,2583,2602],{},[36,2535,2536,624,2539],{},[16,2537,2538],{},"Pre-Implementation",[33,2540,2541,2544,2547,2550],{},[36,2542,2543],{},"PR merged to main branch",[36,2545,2546],{},"Jetscale detects merge event",[36,2548,2549],{},"User clicks \"Apply\" in Jetscale dashboard",[36,2551,2552],{},"Final confirmation dialog with change summary",[36,2554,2555,624,2558],{},[16,2556,2557],{},"Terraform Execution",[33,2559,2560,2563,2570,2577,2580],{},[36,2561,2562],{},"Jetscale clones repository",[36,2564,2565,2566,2569],{},"Runs ",[121,2567,2568],{},"terraform init"," with remote backend",[36,2571,2572,2573,2576],{},"Executes ",[121,2574,2575],{},"terraform apply"," with approved plan",[36,2578,2579],{},"Streams output to Jetscale dashboard (real-time)",[36,2581,2582],{},"Captures success\u002Ffailure status",[36,2584,2585,624,2588],{},[16,2586,2587],{},"Change Tracking",[33,2589,2590,2593,2596,2599],{},[36,2591,2592],{},"Resources modified are tagged with Jetscale metadata",[36,2594,2595],{},"Before\u002Fafter snapshots stored",[36,2597,2598],{},"Implementation logs saved for audit",[36,2600,2601],{},"Cost baseline updated for savings tracking",[36,2603,2604,624,2607],{},[16,2605,2606],{},"Error Handling",[33,2608,2609,2612,2615,2618],{},[36,2610,2611],{},"Partial failures trigger automatic rollback",[36,2613,2614],{},"Errors logged with detailed stack traces",[36,2616,2617],{},"User notified immediately",[36,2619,2620],{},"Support team alerted for critical failures",[13,2622,2623,624],{},[16,2624,2625],{},"Implementation Modes",[862,2627,2628,2641],{},[865,2629,2630],{},[868,2631,2632,2635,2638],{},[871,2633,2634],{},"Mode",[871,2636,2637],{},"Description",[871,2639,2640],{},"Use Case",[878,2642,2643,2656,2669,2682],{},[868,2644,2645,2650,2653],{},[883,2646,2647],{},[16,2648,2649],{},"Standard",[883,2651,2652],{},"Apply all changes in single operation",[883,2654,2655],{},"Low-risk, small batches",[868,2657,2658,2663,2666],{},[883,2659,2660],{},[16,2661,2662],{},"Staged",[883,2664,2665],{},"Apply in groups with verification between",[883,2667,2668],{},"Medium-risk, large batches",[868,2670,2671,2676,2679],{},[883,2672,2673],{},[16,2674,2675],{},"Blue-Green",[883,2677,2678],{},"Create new resources before destroying old",[883,2680,2681],{},"Zero-downtime requirements",[868,2683,2684,2689,2692],{},[883,2685,2686],{},[16,2687,2688],{},"Canary",[883,2690,2691],{},"Apply to subset, monitor, then expand",[883,2693,2694],{},"High-risk changes",[13,2696,2697,624],{},[16,2698,2699],{},"Real-Time Dashboard Output",[114,2701,2704],{"className":2702,"code":2703,"language":798},[796],"[12:34:56] Terraform initialized successfully\n[12:35:02] Planning changes...\n[12:35:08] Plan complete: 12 to change, 0 to add, 0 to destroy\n[12:35:10] Applying changes...\n[12:35:15] ✓ aws_instance.prod_web_server_01: Instance type modified\n[12:35:23] ✓ aws_instance.prod_web_server_02: Instance type modified\n[12:35:45] ✓ aws_ebs_volume.data_vol_01: Volume type changed\n...\n[12:38:42] Apply complete! 12 resources modified.\n[12:38:43] Updating cost tracking...\n[12:38:45] Implementation successful! Est. savings: $2,847\u002Fmonth\n",[121,2705,2703],{"__ignoreMap":119},[13,2707,2708,2710],{},[16,2709,684],{},": 10-30 minutes (varies by batch size)",[13,2712,2713,2715],{},[16,2714,805],{},": Execution Monitor Agent (watches for errors)",[107,2717],{},[28,2719,2721],{"id":2720},"step-11-tracking-verification","Step 11: Tracking & Verification",[13,2723,2724,2726],{},[16,2725,617],{},": Monitor post-implementation results and verify actual savings",[13,2728,2729,624],{},[16,2730,623],{},[80,2732,2733,2753,2772,2792],{},[36,2734,2735,2738,2739],{},[16,2736,2737],{},"Immediate Monitoring"," (First 24 hours):",[33,2740,2741,2744,2747,2750],{},[36,2742,2743],{},"Track resource health metrics",[36,2745,2746],{},"Alert on performance degradation",[36,2748,2749],{},"Monitor error rates and latency",[36,2751,2752],{},"Verify resources running as expected",[36,2754,2755,624,2758],{},[16,2756,2757],{},"Jira Integration",[33,2759,2760,2763,2766,2769],{},[36,2761,2762],{},"Create implementation ticket automatically",[36,2764,2765],{},"Link to PR and Jetscale recommendation",[36,2767,2768],{},"Update status as changes progress",[36,2770,2771],{},"Close ticket when verification complete",[36,2773,2774,2777,2778],{},[16,2775,2776],{},"Savings Verification"," (verification period):",[33,2779,2780,2783,2786,2789],{},[36,2781,2782],{},"Compare actual costs vs. baseline",[36,2784,2785],{},"Calculate realized savings",[36,2787,2788],{},"Identify variance (actual vs. estimated)",[36,2790,2791],{},"Generate savings report",[36,2793,2794,624,2797],{},[16,2795,2796],{},"Continuous Optimization",[33,2798,2799,2802,2805,2808],{},[36,2800,2801],{},"Monitor for usage pattern changes",[36,2803,2804],{},"Detect if recommendations need adjustment",[36,2806,2807],{},"Trigger new analysis if usage spikes",[36,2809,2810],{},"Update forecasts based on new data",[13,2812,2813,624],{},[16,2814,2815],{},"Jira Ticket Example",[114,2817,2820],{"className":2818,"code":2819,"language":798},[796],"Title: [Jetscale] Cost Optimization Batch #2024-001\nType: Task\nStatus: Done\n\nDescription:\nImplemented 12 Jetscale cost optimization recommendations.\n\nDetails:\n- PR: github.com\u002Fyourorg\u002Finfra\u002Fpull\u002F234\n- Applied: 2024-01-15 12:38 UTC\n- Estimated Savings: $2,847\u002Fmonth\n- Actual Savings (verified): $2,789\u002Fmonth (98% of estimate)\n- Resources Modified: 12\n- Issues: None\n\nSavings Breakdown:\n- Rightsizing (6): $1,654\u002Fmonth\n- Scheduling (3): $892\u002Fmonth\n- Storage (2): $189\u002Fmonth\n- Cleanup (1): $54\u002Fmonth\n",[121,2821,2819],{"__ignoreMap":119},[13,2823,2824,624],{},[16,2825,2826],{},"Dashboard Savings View",[114,2828,2831],{"className":2829,"code":2830,"language":798},[796],"┌─────────────────────────────────────────────────┐\n│ Batch #2024-001 Savings Verification           │\n├─────────────────────────────────────────────────┤\n│ Status: ✓ Verified                              │\n│ Implementation Date: Jan 15, 2024               │\n│ Verification Complete                           │\n│                                                 │\n│ Estimated:  $2,847\u002Fmonth                        │\n│ Actual:     $2,789\u002Fmonth                        │\n│ Accuracy:   98%                                 │\n│                                                 │\n│ Performance Impact: None detected               │\n│ SLA Compliance: 100%                            │\n│ Rollbacks Required: 0                           │\n└─────────────────────────────────────────────────┘\n",[121,2832,2830],{"__ignoreMap":119},[13,2834,2835,624],{},[16,2836,2837],{},"Variance Analysis",[33,2839,2840,2846,2852],{},[36,2841,2842,2845],{},[16,2843,2844],{},">95% accuracy",": Excellent, recommendations working as expected",[36,2847,2848,2851],{},[16,2849,2850],{},"80-95% accuracy",": Good, minor variance acceptable",[36,2853,2854,2857],{},[16,2855,2856],{},"\u003C80% accuracy",": Investigate discrepancies, adjust models",[13,2859,2860,624],{},[16,2861,684],{},[33,2863,2864,2867,2870],{},[36,2865,2866],{},"Jira ticket creation: Immediate",[36,2868,2869],{},"Initial health check: 24 hours",[36,2871,2872],{},"Savings verification: Verification period",[13,2874,2875,2877],{},[16,2876,805],{},": Cost Tracking Agent, Anomaly Detection Agent",[107,2879],{},[20,2881,2883],{"id":2882},"user-experience-flow","User Experience Flow",[28,2885,2887],{"id":2886},"dashboard-overview","Dashboard Overview",[13,2889,2890],{},"The Jetscale dashboard provides a unified view of the entire recommendation lifecycle.",[13,2892,2893,624],{},[16,2894,2895],{},"Main Dashboard",[114,2897,2900],{"className":2898,"code":2899,"language":798},[796],"┌──────────────────────────────────────────────────────────────┐\n│ Jetscale Dashboard                                           │\n├──────────────────────────────────────────────────────────────┤\n│                                                              │\n│  Active Recommendations                  47                 │\n│  Potential Monthly Savings              $12,340             │\n│  Recommendations In Review              12                  │\n│  Implemented This Month                 23                  │\n│  Verified Savings (MTD)                 $8,234              │\n│                                                              │\n├──────────────────────────────────────────────────────────────┤\n│ Recent Activity                                              │\n├──────────────────────────────────────────────────────────────┤\n│ ✓ Batch #2024-001 verified - $2,789\u002Fmo actual               │\n│ ⏳ Batch #2024-003 pending review - PR #237                  │\n│ 🔄 Resource scan completed - 1,247 resources                 │\n│ ⚠ 2 recommendations flagged for manual review               │\n└──────────────────────────────────────────────────────────────┘\n",[121,2901,2899],{"__ignoreMap":119},[28,2903,2905],{"id":2904},"recommendation-detail-view","Recommendation Detail View",[13,2907,2908],{},"Clicking on any recommendation shows detailed analysis:",[114,2910,2913],{"className":2911,"code":2912,"language":798},[796],"┌──────────────────────────────────────────────────────────────┐\n│ Recommendation REC-2024-001                                  │\n├──────────────────────────────────────────────────────────────┤\n│ Type: Rightsizing                                            │\n│ Resource: i-0abcd1234efgh5678 (prod-web-server-01)          │\n│ Status: ✓ Implemented                                        │\n│                                                              │\n│ Current Config:                                              │\n│   Instance Type: t3.xlarge (4 vCPU, 16GB RAM)               │\n│   Cost: $129.08\u002Fmonth                                        │\n│                                                              │\n│ Recommended Config:                                          │\n│   Instance Type: t3.large (2 vCPU, 8GB RAM)                 │\n│   Cost: $67.04\u002Fmonth                                         │\n│   Savings: $62.04\u002Fmonth (48%)                                │\n│                                                              │\n│ Evidence:                                                    │\n│   Historical Avg CPU: 12%                                    │\n│   Historical Avg Memory: 28%                                 │\n│   Peak CPU: 34% (well under 50% threshold)                  │\n│   [View CloudWatch Metrics →]                                │\n│                                                              │\n│ Validation: ✓ Passed                                         │\n│   Performance Impact: Low                                    │\n│   SLA Compliance: ✓ Maintained                               │\n│   Risk Score: 2\u002F10 (Low)                                     │\n│                                                              │\n│ Implementation:                                              │\n│   PR: github.com\u002Fyourorg\u002Finfra\u002Fpull\u002F234                      │\n│   Applied: Jan 15, 2024 12:35 UTC                            │\n│   Jira: JETSCALE-567                                         │\n│                                                              │\n│ Actions:                                                     │\n│   [View Terraform Code] [Rollback] [Report Issue]           │\n└──────────────────────────────────────────────────────────────┘\n",[121,2914,2912],{"__ignoreMap":119},[28,2916,2918],{"id":2917},"batch-selection-implementation","Batch Selection & Implementation",[13,2920,2921],{},"Users can select multiple recommendations and implement them together:",[13,2923,2924],{},[16,2925,2926],{},"Step 1: Filter & Select",[114,2928,2931],{"className":2929,"code":2930,"language":798},[796],"Filters: [All Types ▼] [All Risk Levels ▼] [Min Savings: $50]\n\n☑ Select All (12 recommendations)\n\n☑ REC-2024-001  Rightsizing     prod-web-server-01    $62.04\u002Fmo\n☑ REC-2024-002  Rightsizing     prod-web-server-02    $58.12\u002Fmo\n☑ REC-2024-005  Scheduling      dev-database-01       $187.50\u002Fmo\n☑ REC-2024-008  Storage         ebs-vol-12345         $45.20\u002Fmo\n...\n\n[Generate Terraform] [Export Report]\n",[121,2932,2930],{"__ignoreMap":119},[13,2934,2935],{},[16,2936,2937],{},"Step 2: Review Generated Code",[114,2939,2942],{"className":2940,"code":2941,"language":798},[796],"✓ Terraform code generated successfully\n\nFiles created:\n  - main.tf (247 lines)\n  - variables.tf (34 lines)\n  - outputs.tf (52 lines)\n  - README.md\n\n[Preview Code] [Download ZIP] [Create PR]\n",[121,2943,2941],{"__ignoreMap":119},[13,2945,2946],{},[16,2947,2948],{},"Step 3: Create PR",[114,2950,2953],{"className":2951,"code":2952,"language":798},[796],"Create Pull Request\n\nRepository: yourorg\u002Finfrastructure ▼\nBase Branch: main ▼\nNew Branch: jetscale\u002Fbatch-2024-001\n\nTitle: [Auto-generated ▼]\n[Jetscale] Cost optimization batch #2024-001\n\nReviewers:\n☑ alice@company.com\n☑ bob@company.com\n\n[Create Pull Request]\n",[121,2954,2952],{"__ignoreMap":119},[13,2956,2957],{},[16,2958,2959],{},"Step 4: Monitor Implementation",[114,2961,2964],{"className":2962,"code":2963,"language":798},[796],"Batch #2024-001 Status\n\nStatus: Applying Changes...\n\nProgress: ████████░░ 8\u002F12 resources\n\nRecent Events:\n12:35:15 ✓ aws_instance.prod_web_server_01 modified\n12:35:23 ✓ aws_instance.prod_web_server_02 modified\n12:35:45 ✓ aws_ebs_volume.data_vol_01 modified\n12:36:12 🔄 aws_db_instance.dev_database_01 modifying...\n\n[View Detailed Logs] [Pause] [Rollback]\n",[121,2965,2963],{"__ignoreMap":119},[107,2967],{},[20,2969,2971],{"id":2970},"ai-agent-interactions","AI Agent Interactions",[28,2973,2975],{"id":2974},"multi-agent-architecture","Multi-Agent Architecture",[13,2977,2978],{},"Jetscale employs a coordinated system of specialized AI agents, each responsible for specific aspects of the recommendation workflow.",[114,2980,2982],{"className":116,"code":2981,"language":118,"meta":119,"style":119},"graph TB\n    subgraph Data Collection\n        DC[Data Collector Agent]\n    end\n\n    subgraph Analysis Layer\n        PR[Pattern Recognition Agent]\n        AD[Anomaly Detection Agent]\n        FC[Forecasting Agent]\n        OPT[Optimization Agent]\n    end\n\n    subgraph Validation Layer\n        VAL[Validation Agent]\n        SLA[SLA Checker Agent]\n    end\n\n    subgraph Generation Layer\n        CODE[Code Generation Agent]\n        IAC[IaC Validation Agent]\n    end\n\n    subgraph Execution Layer\n        GIT[GitOps Agent]\n        EXEC[Execution Monitor Agent]\n        TRACK[Cost Tracking Agent]\n    end\n\n    DC --> PR\n    DC --> AD\n    DC --> FC\n\n    PR --> OPT\n    AD --> OPT\n    FC --> OPT\n\n    OPT --> VAL\n    VAL --> SLA\n\n    SLA --> CODE\n    CODE --> IAC\n\n    IAC --> GIT\n    GIT --> EXEC\n\n    EXEC --> TRACK\n    TRACK --> DC\n",[121,2983,2984,2989,2994,2999,3004,3008,3013,3018,3023,3028,3033,3037,3041,3046,3051,3056,3060,3064,3069,3074,3079,3083,3087,3092,3097,3102,3107,3111,3115,3120,3125,3130,3134,3139,3144,3149,3153,3158,3163,3167,3172,3177,3181,3186,3191,3195,3200],{"__ignoreMap":119},[124,2985,2986],{"class":126,"line":127},[124,2987,2988],{},"graph TB\n",[124,2990,2991],{"class":126,"line":133},[124,2992,2993],{},"    subgraph Data Collection\n",[124,2995,2996],{"class":126,"line":139},[124,2997,2998],{},"        DC[Data Collector Agent]\n",[124,3000,3001],{"class":126,"line":146},[124,3002,3003],{},"    end\n",[124,3005,3006],{"class":126,"line":152},[124,3007,143],{"emptyLinePlaceholder":142},[124,3009,3010],{"class":126,"line":158},[124,3011,3012],{},"    subgraph Analysis Layer\n",[124,3014,3015],{"class":126,"line":164},[124,3016,3017],{},"        PR[Pattern Recognition Agent]\n",[124,3019,3020],{"class":126,"line":170},[124,3021,3022],{},"        AD[Anomaly Detection Agent]\n",[124,3024,3025],{"class":126,"line":176},[124,3026,3027],{},"        FC[Forecasting Agent]\n",[124,3029,3030],{"class":126,"line":182},[124,3031,3032],{},"        OPT[Optimization Agent]\n",[124,3034,3035],{"class":126,"line":188},[124,3036,3003],{},[124,3038,3039],{"class":126,"line":194},[124,3040,143],{"emptyLinePlaceholder":142},[124,3042,3043],{"class":126,"line":200},[124,3044,3045],{},"    subgraph Validation Layer\n",[124,3047,3048],{"class":126,"line":206},[124,3049,3050],{},"        VAL[Validation Agent]\n",[124,3052,3053],{"class":126,"line":212},[124,3054,3055],{},"        SLA[SLA Checker Agent]\n",[124,3057,3058],{"class":126,"line":218},[124,3059,3003],{},[124,3061,3062],{"class":126,"line":223},[124,3063,143],{"emptyLinePlaceholder":142},[124,3065,3066],{"class":126,"line":229},[124,3067,3068],{},"    subgraph Generation Layer\n",[124,3070,3071],{"class":126,"line":235},[124,3072,3073],{},"        CODE[Code Generation Agent]\n",[124,3075,3076],{"class":126,"line":240},[124,3077,3078],{},"        IAC[IaC Validation Agent]\n",[124,3080,3081],{"class":126,"line":246},[124,3082,3003],{},[124,3084,3085],{"class":126,"line":252},[124,3086,143],{"emptyLinePlaceholder":142},[124,3088,3089],{"class":126,"line":258},[124,3090,3091],{},"    subgraph Execution Layer\n",[124,3093,3094],{"class":126,"line":263},[124,3095,3096],{},"        GIT[GitOps Agent]\n",[124,3098,3099],{"class":126,"line":269},[124,3100,3101],{},"        EXEC[Execution Monitor Agent]\n",[124,3103,3104],{"class":126,"line":275},[124,3105,3106],{},"        TRACK[Cost Tracking Agent]\n",[124,3108,3109],{"class":126,"line":281},[124,3110,3003],{},[124,3112,3113],{"class":126,"line":287},[124,3114,143],{"emptyLinePlaceholder":142},[124,3116,3117],{"class":126,"line":292},[124,3118,3119],{},"    DC --> PR\n",[124,3121,3122],{"class":126,"line":298},[124,3123,3124],{},"    DC --> AD\n",[124,3126,3127],{"class":126,"line":304},[124,3128,3129],{},"    DC --> FC\n",[124,3131,3132],{"class":126,"line":310},[124,3133,143],{"emptyLinePlaceholder":142},[124,3135,3136],{"class":126,"line":316},[124,3137,3138],{},"    PR --> OPT\n",[124,3140,3141],{"class":126,"line":322},[124,3142,3143],{},"    AD --> OPT\n",[124,3145,3146],{"class":126,"line":327},[124,3147,3148],{},"    FC --> OPT\n",[124,3150,3151],{"class":126,"line":333},[124,3152,143],{"emptyLinePlaceholder":142},[124,3154,3155],{"class":126,"line":339},[124,3156,3157],{},"    OPT --> VAL\n",[124,3159,3160],{"class":126,"line":344},[124,3161,3162],{},"    VAL --> SLA\n",[124,3164,3165],{"class":126,"line":350},[124,3166,143],{"emptyLinePlaceholder":142},[124,3168,3169],{"class":126,"line":356},[124,3170,3171],{},"    SLA --> CODE\n",[124,3173,3174],{"class":126,"line":362},[124,3175,3176],{},"    CODE --> IAC\n",[124,3178,3179],{"class":126,"line":368},[124,3180,143],{"emptyLinePlaceholder":142},[124,3182,3183],{"class":126,"line":374},[124,3184,3185],{},"    IAC --> GIT\n",[124,3187,3188],{"class":126,"line":380},[124,3189,3190],{},"    GIT --> EXEC\n",[124,3192,3193],{"class":126,"line":385},[124,3194,143],{"emptyLinePlaceholder":142},[124,3196,3197],{"class":126,"line":391},[124,3198,3199],{},"    EXEC --> TRACK\n",[124,3201,3202],{"class":126,"line":397},[124,3203,3204],{},"    TRACK --> DC\n",[28,3206,3208],{"id":3207},"agent-responsibilities","Agent Responsibilities",[3210,3211,3213],"h4",{"id":3212},"data-collection-layer","Data Collection Layer",[13,3215,3216],{},[16,3217,3218],{},"Data Collector Agent",[33,3220,3221,3227,3233,3239,3245],{},[36,3222,3223,3226],{},[16,3224,3225],{},"Purpose",": Continuously gather metrics from cloud providers",[36,3228,3229,3232],{},[16,3230,3231],{},"Inputs",": Cloud account credentials, resource inventory",[36,3234,3235,3238],{},[16,3236,3237],{},"Outputs",": Time-series metrics database",[36,3240,3241,3244],{},[16,3242,3243],{},"Frequency",": Every 5 minutes (real-time), hourly aggregations",[36,3246,3247,3250],{},[16,3248,3249],{},"Model",": Lightweight orchestrator (no AI\u002FML)",[107,3252],{},[3210,3254,3256],{"id":3255},"analysis-layer","Analysis Layer",[13,3258,3259],{},[16,3260,958],{},[33,3262,3263,3268,3273,3278,3283],{},[36,3264,3265,3267],{},[16,3266,3225],{},": Identify usage patterns and trends",[36,3269,3270,3272],{},[16,3271,3231],{},": Historical metric data per resource",[36,3274,3275,3277],{},[16,3276,3237],{},": Pattern classifications (idle, underutilized, stable, variable, bursty)",[36,3279,3280,3282],{},[16,3281,3249],{},": LSTM neural network + clustering",[36,3284,3285,2134,3288],{},[16,3286,3287],{},"Key Insights",[33,3289,3290,3293,3296],{},[36,3291,3292],{},"Detects \"always idle\" resources (avg utilization \u003C5%)",[36,3294,3295],{},"Identifies time-of-day patterns (e.g., business hours only)",[36,3297,3298],{},"Recognizes seasonal trends (monthly\u002Fquarterly cycles)",[13,3300,3301],{},[16,3302,974],{},[33,3304,3305,3310,3315,3320,3325],{},[36,3306,3307,3309],{},[16,3308,3225],{},": Flag unusual resource behavior",[36,3311,3312,3314],{},[16,3313,3231],{},": Real-time metrics + historical baseline",[36,3316,3317,3319],{},[16,3318,3237],{},": Anomaly scores (0-100) + root cause hints",[36,3321,3322,3324],{},[16,3323,3249],{},": Isolation Forest + statistical outlier detection",[36,3326,3327,2134,3329],{},[16,3328,3287],{},[33,3330,3331,3334,3337],{},[36,3332,3333],{},"Detects sudden spikes\u002Fdrops (>50% deviation)",[36,3335,3336],{},"Flags resources with erratic behavior",[36,3338,3339],{},"Identifies potential misconfigurations",[13,3341,3342],{},[16,3343,990],{},[33,3345,3346,3351,3356,3361,3366],{},[36,3347,3348,3350],{},[16,3349,3225],{},": Predict future usage and costs",[36,3352,3353,3355],{},[16,3354,3231],{},": Historical metrics + external factors (seasonality, growth)",[36,3357,3358,3360],{},[16,3359,3237],{},": Future forecasts with confidence intervals",[36,3362,3363,3365],{},[16,3364,3249],{},": Prophet (Facebook) + ARIMA",[36,3367,3368,2134,3370],{},[16,3369,3287],{},[33,3371,3372,3375,3378],{},[36,3373,3374],{},"Predicts when Reserved Instances become cost-effective",[36,3376,3377],{},"Forecasts scaling requirements",[36,3379,3380],{},"Estimates long-term commitment savings",[13,3382,3383],{},[16,3384,1006],{},[33,3386,3387,3392,3397,3402,3407],{},[36,3388,3389,3391],{},[16,3390,3225],{},": Generate optimization recommendations",[36,3393,3394,3396],{},[16,3395,3231],{},": Outputs from Pattern, Anomaly, Forecasting agents",[36,3398,3399,3401],{},[16,3400,3237],{},": Ranked list of recommendations with savings estimates",[36,3403,3404,3406],{},[16,3405,3249],{},": Multi-objective optimization (cost vs. risk vs. effort)",[36,3408,3409,2134,3411],{},[16,3410,3287],{},[33,3412,3413,3416,3419],{},[36,3414,3415],{},"Combines insights from all analysis agents",[36,3417,3418],{},"Prioritizes recommendations by ROI",[36,3420,3421],{},"Balances quick wins vs. long-term savings",[107,3423],{},[3210,3425,3427],{"id":3426},"validation-layer","Validation Layer",[13,3429,3430],{},[16,3431,3432],{},"Validation Agent",[33,3434,3435,3440,3445,3450,3455],{},[36,3436,3437,3439],{},[16,3438,3225],{},": Verify recommendations won't degrade performance",[36,3441,3442,3444],{},[16,3443,3231],{},": Recommendations + historical metrics",[36,3446,3447,3449],{},[16,3448,3237],{},": Validation status (approved\u002Fflagged\u002Fblocked) + risk score",[36,3451,3452,3454],{},[16,3453,3249],{},": Simulation engine + rule-based checks",[36,3456,3457,2134,3460],{},[16,3458,3459],{},"Key Checks",[33,3461,3462,3465,3468],{},[36,3463,3464],{},"Simulates recommended config against peak load",[36,3466,3467],{},"Verifies headroom (CPU\u002Fmemory) meets thresholds",[36,3469,3470],{},"Checks rollback feasibility",[13,3472,3473],{},[16,3474,3475],{},"SLA Checker Agent",[33,3477,3478,3483,3488,3493,3498],{},[36,3479,3480,3482],{},[16,3481,3225],{},": Ensure SLA compliance",[36,3484,3485,3487],{},[16,3486,3231],{},": Recommendations + user-defined SLAs",[36,3489,3490,3492],{},[16,3491,3237],{},": SLA impact assessment (pass\u002Ffail per SLA metric)",[36,3494,3495,3497],{},[16,3496,3249],{},": Rule-based + Monte Carlo simulation",[36,3499,3500,2134,3502],{},[16,3501,3459],{},[33,3503,3504,3507,3510],{},[36,3505,3506],{},"Response time impact",[36,3508,3509],{},"Availability impact (nines calculation)",[36,3511,3512],{},"Throughput capacity validation",[107,3514],{},[3210,3516,3518],{"id":3517},"generation-layer","Generation Layer",[13,3520,3521],{},[16,3522,3523],{},"Code Generation Agent",[33,3525,3526,3531,3536,3541,3546],{},[36,3527,3528,3530],{},[16,3529,3225],{},": Generate production-ready Terraform code",[36,3532,3533,3535],{},[16,3534,3231],{},": Approved recommendations",[36,3537,3538,3540],{},[16,3539,3237],{},": Terraform HCL files (main, variables, outputs, backend)",[36,3542,3543,3545],{},[16,3544,3249],{},": Template engine + code synthesis LLM",[36,3547,3548,2134,3551],{},[16,3549,3550],{},"Features",[33,3552,3553,3556,3559],{},[36,3554,3555],{},"Includes safety features (lifecycle rules, state locking)",[36,3557,3558],{},"Generates modules for reusability",[36,3560,3561],{},"Adds comments and documentation",[13,3563,3564],{},[16,3565,3566],{},"IaC Validation Agent",[33,3568,3569,3574,3579,3584,3589],{},[36,3570,3571,3573],{},[16,3572,3225],{},": Validate generated Terraform code",[36,3575,3576,3578],{},[16,3577,3231],{},": Terraform files",[36,3580,3581,3583],{},[16,3582,3237],{},": Validation report (syntax, best practices, security)",[36,3585,3586,3588],{},[16,3587,3249],{},": Static analysis + terraform validate",[36,3590,3591,2134,3593],{},[16,3592,3459],{},[33,3594,3595,3598,3601],{},[36,3596,3597],{},"Syntax correctness",[36,3599,3600],{},"Best practice compliance (tflint)",[36,3602,3603],{},"Security scanning (tfsec, checkov)",[107,3605],{},[3210,3607,3609],{"id":3608},"execution-layer","Execution Layer",[13,3611,3612],{},[16,3613,3614],{},"GitOps Agent",[33,3616,3617,3622,3627,3632,3637],{},[36,3618,3619,3621],{},[16,3620,3225],{},": Manage Git workflow (PR creation, CI\u002FCD setup)",[36,3623,3624,3626],{},[16,3625,3231],{},": Terraform code + target repository",[36,3628,3629,3631],{},[16,3630,3237],{},": Pull request with CI\u002FCD checks",[36,3633,3634,3636],{},[16,3635,3249],{},": Git API orchestrator + template engine",[36,3638,3639,2134,3641],{},[16,3640,3550],{},[33,3642,3643,3646,3649],{},[36,3644,3645],{},"Creates descriptive PRs with cost analysis",[36,3647,3648],{},"Sets up GitHub Actions \u002F Bitbucket Pipelines",[36,3650,3651],{},"Adds reviewers and labels automatically",[13,3653,3654],{},[16,3655,3656],{},"Execution Monitor Agent",[33,3658,3659,3664,3669,3674,3679],{},[36,3660,3661,3663],{},[16,3662,3225],{},": Watch Terraform apply and detect issues",[36,3665,3666,3668],{},[16,3667,3231],{},": Real-time Terraform output stream",[36,3670,3671,3673],{},[16,3672,3237],{},": Alerts on errors, rollback triggers",[36,3675,3676,3678],{},[16,3677,3249],{},": Log parser + rule-based alerting",[36,3680,3681,2134,3684],{},[16,3682,3683],{},"Key Monitors",[33,3685,3686,3689,3692],{},[36,3687,3688],{},"Partial failure detection",[36,3690,3691],{},"Resource creation\u002Fdestruction tracking",[36,3693,3694],{},"Error log aggregation",[13,3696,3697],{},[16,3698,3699],{},"Cost Tracking Agent",[33,3701,3702,3707,3712,3717,3722],{},[36,3703,3704,3706],{},[16,3705,3225],{},": Verify actual savings post-implementation",[36,3708,3709,3711],{},[16,3710,3231],{},": Pre\u002Fpost implementation cost data",[36,3713,3714,3716],{},[16,3715,3237],{},": Savings verification report",[36,3718,3719,3721],{},[16,3720,3249],{},": Time-series comparison + statistical analysis",[36,3723,3724,2134,3726],{},[16,3725,876],{},[33,3727,3728,3731,3734],{},[36,3729,3730],{},"Actual vs. estimated savings",[36,3732,3733],{},"Variance analysis",[36,3735,3736],{},"ROI calculation",[107,3738],{},[28,3740,3742],{"id":3741},"agent-communication-protocol","Agent Communication Protocol",[13,3744,3745],{},"Agents communicate via a structured message bus:",[114,3747,3751],{"className":3748,"code":3749,"language":3750,"meta":119,"style":119},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"message_id\": \"msg-12345\",\n  \"timestamp\": \"2024-01-15T12:34:56Z\",\n  \"from_agent\": \"pattern_recognition_agent\",\n  \"to_agent\": \"optimization_agent\",\n  \"message_type\": \"analysis_complete\",\n  \"payload\": {\n    \"resource_id\": \"i-0abcd1234efgh5678\",\n    \"pattern_classification\": \"underutilized\",\n    \"avg_cpu_30d\": 12,\n    \"avg_memory_30d\": 28,\n    \"confidence\": 0.94,\n    \"evidence\": {\n      \"metrics_url\": \"s3:\u002F\u002Fjetscale-metrics\u002F...\",\n      \"chart_url\": \"https:\u002F\u002Fapp.jetscale.ai\u002Fcharts\u002F...\"\n    }\n  }\n}\n","json",[121,3752,3753,3758,3783,3803,3823,3843,3863,3877,3899,3919,3936,3952,3968,3981,4002,4021,4025,4029],{"__ignoreMap":119},[124,3754,3755],{"class":126,"line":127},[124,3756,3757],{"class":1301},"{\n",[124,3759,3760,3763,3767,3770,3772,3775,3778,3780],{"class":126,"line":133},[124,3761,3762],{"class":1301},"  \"",[124,3764,3766],{"class":3765},"spNyl","message_id",[124,3768,3769],{"class":1301},"\"",[124,3771,624],{"class":1301},[124,3773,3774],{"class":1301}," \"",[124,3776,3777],{"class":1304},"msg-12345",[124,3779,3769],{"class":1301},[124,3781,3782],{"class":1301},",\n",[124,3784,3785,3787,3790,3792,3794,3796,3799,3801],{"class":126,"line":139},[124,3786,3762],{"class":1301},[124,3788,3789],{"class":3765},"timestamp",[124,3791,3769],{"class":1301},[124,3793,624],{"class":1301},[124,3795,3774],{"class":1301},[124,3797,3798],{"class":1304},"2024-01-15T12:34:56Z",[124,3800,3769],{"class":1301},[124,3802,3782],{"class":1301},[124,3804,3805,3807,3810,3812,3814,3816,3819,3821],{"class":126,"line":146},[124,3806,3762],{"class":1301},[124,3808,3809],{"class":3765},"from_agent",[124,3811,3769],{"class":1301},[124,3813,624],{"class":1301},[124,3815,3774],{"class":1301},[124,3817,3818],{"class":1304},"pattern_recognition_agent",[124,3820,3769],{"class":1301},[124,3822,3782],{"class":1301},[124,3824,3825,3827,3830,3832,3834,3836,3839,3841],{"class":126,"line":152},[124,3826,3762],{"class":1301},[124,3828,3829],{"class":3765},"to_agent",[124,3831,3769],{"class":1301},[124,3833,624],{"class":1301},[124,3835,3774],{"class":1301},[124,3837,3838],{"class":1304},"optimization_agent",[124,3840,3769],{"class":1301},[124,3842,3782],{"class":1301},[124,3844,3845,3847,3850,3852,3854,3856,3859,3861],{"class":126,"line":158},[124,3846,3762],{"class":1301},[124,3848,3849],{"class":3765},"message_type",[124,3851,3769],{"class":1301},[124,3853,624],{"class":1301},[124,3855,3774],{"class":1301},[124,3857,3858],{"class":1304},"analysis_complete",[124,3860,3769],{"class":1301},[124,3862,3782],{"class":1301},[124,3864,3865,3867,3870,3872,3874],{"class":126,"line":164},[124,3866,3762],{"class":1301},[124,3868,3869],{"class":3765},"payload",[124,3871,3769],{"class":1301},[124,3873,624],{"class":1301},[124,3875,3876],{"class":1301}," {\n",[124,3878,3879,3882,3886,3888,3890,3892,3895,3897],{"class":126,"line":170},[124,3880,3881],{"class":1301},"    \"",[124,3883,3885],{"class":3884},"sBMFI","resource_id",[124,3887,3769],{"class":1301},[124,3889,624],{"class":1301},[124,3891,3774],{"class":1301},[124,3893,3894],{"class":1304},"i-0abcd1234efgh5678",[124,3896,3769],{"class":1301},[124,3898,3782],{"class":1301},[124,3900,3901,3903,3906,3908,3910,3912,3915,3917],{"class":126,"line":176},[124,3902,3881],{"class":1301},[124,3904,3905],{"class":3884},"pattern_classification",[124,3907,3769],{"class":1301},[124,3909,624],{"class":1301},[124,3911,3774],{"class":1301},[124,3913,3914],{"class":1304},"underutilized",[124,3916,3769],{"class":1301},[124,3918,3782],{"class":1301},[124,3920,3921,3923,3926,3928,3930,3934],{"class":126,"line":182},[124,3922,3881],{"class":1301},[124,3924,3925],{"class":3884},"avg_cpu_30d",[124,3927,3769],{"class":1301},[124,3929,624],{"class":1301},[124,3931,3933],{"class":3932},"sbssI"," 12",[124,3935,3782],{"class":1301},[124,3937,3938,3940,3943,3945,3947,3950],{"class":126,"line":188},[124,3939,3881],{"class":1301},[124,3941,3942],{"class":3884},"avg_memory_30d",[124,3944,3769],{"class":1301},[124,3946,624],{"class":1301},[124,3948,3949],{"class":3932}," 28",[124,3951,3782],{"class":1301},[124,3953,3954,3956,3959,3961,3963,3966],{"class":126,"line":194},[124,3955,3881],{"class":1301},[124,3957,3958],{"class":3884},"confidence",[124,3960,3769],{"class":1301},[124,3962,624],{"class":1301},[124,3964,3965],{"class":3932}," 0.94",[124,3967,3782],{"class":1301},[124,3969,3970,3972,3975,3977,3979],{"class":126,"line":200},[124,3971,3881],{"class":1301},[124,3973,3974],{"class":3884},"evidence",[124,3976,3769],{"class":1301},[124,3978,624],{"class":1301},[124,3980,3876],{"class":1301},[124,3982,3983,3986,3989,3991,3993,3995,3998,4000],{"class":126,"line":206},[124,3984,3985],{"class":1301},"      \"",[124,3987,3988],{"class":3932},"metrics_url",[124,3990,3769],{"class":1301},[124,3992,624],{"class":1301},[124,3994,3774],{"class":1301},[124,3996,3997],{"class":1304},"s3:\u002F\u002Fjetscale-metrics\u002F...",[124,3999,3769],{"class":1301},[124,4001,3782],{"class":1301},[124,4003,4004,4006,4009,4011,4013,4015,4018],{"class":126,"line":212},[124,4005,3985],{"class":1301},[124,4007,4008],{"class":3932},"chart_url",[124,4010,3769],{"class":1301},[124,4012,624],{"class":1301},[124,4014,3774],{"class":1301},[124,4016,4017],{"class":1304},"https:\u002F\u002Fapp.jetscale.ai\u002Fcharts\u002F...",[124,4019,4020],{"class":1301},"\"\n",[124,4022,4023],{"class":126,"line":218},[124,4024,1831],{"class":1301},[124,4026,4027],{"class":126,"line":223},[124,4028,1754],{"class":1301},[124,4030,4031],{"class":126,"line":229},[124,4032,1787],{"class":1301},[28,4034,4036],{"id":4035},"agent-handoff-example","Agent Handoff Example",[13,4038,4039,4042],{},[16,4040,4041],{},"Scenario",": Rightsizing an EC2 instance",[114,4044,4046],{"className":116,"code":4045,"language":118,"meta":119,"style":119},"sequenceDiagram\n    participant PR as Pattern Agent\n    participant AD as Anomaly Agent\n    participant FC as Forecast Agent\n    participant OPT as Optimization Agent\n    participant VAL as Validation Agent\n    participant CODE as Code Gen Agent\n\n    Note over PR: Analyzes i-0abc123\n    PR->>OPT: Pattern: underutilized (avg 12% CPU)\n\n    Note over AD: Checks for anomalies\n    AD->>OPT: No anomalies detected\n\n    Note over FC: Predicts future usage\n    FC->>OPT: Forecast: stable usage trend\n\n    Note over OPT: Generates recommendation\n    OPT->>VAL: Recommend: t3.xlarge → t3.large\n\n    Note over VAL: Simulates new config\n    VAL->>VAL: Peak load test: ✓ 34% CPU headroom OK\n    VAL->>CODE: Approved (risk score: 2\u002F10)\n\n    Note over CODE: Generates Terraform\n    CODE->>CODE: Generate main.tf with lifecycle rules\n",[121,4047,4048,4052,4057,4062,4067,4072,4077,4082,4086,4091,4096,4100,4105,4110,4114,4119,4124,4128,4133,4138,4142,4147,4152,4157,4161,4166],{"__ignoreMap":119},[124,4049,4050],{"class":126,"line":127},[124,4051,130],{},[124,4053,4054],{"class":126,"line":133},[124,4055,4056],{},"    participant PR as Pattern Agent\n",[124,4058,4059],{"class":126,"line":139},[124,4060,4061],{},"    participant AD as Anomaly Agent\n",[124,4063,4064],{"class":126,"line":146},[124,4065,4066],{},"    participant FC as Forecast Agent\n",[124,4068,4069],{"class":126,"line":152},[124,4070,4071],{},"    participant OPT as Optimization Agent\n",[124,4073,4074],{"class":126,"line":158},[124,4075,4076],{},"    participant VAL as Validation Agent\n",[124,4078,4079],{"class":126,"line":164},[124,4080,4081],{},"    participant CODE as Code Gen Agent\n",[124,4083,4084],{"class":126,"line":170},[124,4085,143],{"emptyLinePlaceholder":142},[124,4087,4088],{"class":126,"line":176},[124,4089,4090],{},"    Note over PR: Analyzes i-0abc123\n",[124,4092,4093],{"class":126,"line":182},[124,4094,4095],{},"    PR->>OPT: Pattern: underutilized (avg 12% CPU)\n",[124,4097,4098],{"class":126,"line":188},[124,4099,143],{"emptyLinePlaceholder":142},[124,4101,4102],{"class":126,"line":194},[124,4103,4104],{},"    Note over AD: Checks for anomalies\n",[124,4106,4107],{"class":126,"line":200},[124,4108,4109],{},"    AD->>OPT: No anomalies detected\n",[124,4111,4112],{"class":126,"line":206},[124,4113,143],{"emptyLinePlaceholder":142},[124,4115,4116],{"class":126,"line":212},[124,4117,4118],{},"    Note over FC: Predicts future usage\n",[124,4120,4121],{"class":126,"line":218},[124,4122,4123],{},"    FC->>OPT: Forecast: stable usage trend\n",[124,4125,4126],{"class":126,"line":223},[124,4127,143],{"emptyLinePlaceholder":142},[124,4129,4130],{"class":126,"line":229},[124,4131,4132],{},"    Note over OPT: Generates recommendation\n",[124,4134,4135],{"class":126,"line":235},[124,4136,4137],{},"    OPT->>VAL: Recommend: t3.xlarge → t3.large\n",[124,4139,4140],{"class":126,"line":240},[124,4141,143],{"emptyLinePlaceholder":142},[124,4143,4144],{"class":126,"line":246},[124,4145,4146],{},"    Note over VAL: Simulates new config\n",[124,4148,4149],{"class":126,"line":252},[124,4150,4151],{},"    VAL->>VAL: Peak load test: ✓ 34% CPU headroom OK\n",[124,4153,4154],{"class":126,"line":258},[124,4155,4156],{},"    VAL->>CODE: Approved (risk score: 2\u002F10)\n",[124,4158,4159],{"class":126,"line":263},[124,4160,143],{"emptyLinePlaceholder":142},[124,4162,4163],{"class":126,"line":269},[124,4164,4165],{},"    Note over CODE: Generates Terraform\n",[124,4167,4168],{"class":126,"line":275},[124,4169,4170],{},"    CODE->>CODE: Generate main.tf with lifecycle rules\n",[107,4172],{},[20,4174,4176],{"id":4175},"integration-points","Integration Points",[28,4178,4180],{"id":4179},"github-integration","GitHub Integration",[13,4182,4183,624],{},[16,4184,4185],{},"Setup",[80,4187,4188,4191,4194],{},[36,4189,4190],{},"Install Jetscale GitHub App from GitHub Marketplace",[36,4192,4193],{},"Grant permissions: Repository (read\u002Fwrite), Pull Requests (read\u002Fwrite)",[36,4195,4196,4197],{},"Configure in Jetscale dashboard: ",[16,4198,4199],{},"Settings > Integrations > GitHub",[13,4201,4202,624],{},[16,4203,3550],{},[33,4205,4206,4209,4212,4215,4218],{},[36,4207,4208],{},"Automatic PR creation with detailed descriptions",[36,4210,4211],{},"Terraform plan output as PR comments",[36,4213,4214],{},"CI\u002FCD workflow setup (GitHub Actions)",[36,4216,4217],{},"Status checks for validation",[36,4219,4220],{},"Auto-merge capability (optional)",[13,4222,4223,624],{},[16,4224,4225],{},"GitHub App Permissions",[33,4227,4228,4234,4240,4246],{},[36,4229,4230,4233],{},[121,4231,4232],{},"contents",": Read & Write (clone repo, commit code)",[36,4235,4236,4239],{},[121,4237,4238],{},"pull_requests",": Read & Write (create PRs, add reviewers)",[36,4241,4242,4245],{},[121,4243,4244],{},"checks",": Read & Write (add status checks)",[36,4247,4248,4251],{},[121,4249,4250],{},"actions",": Read (trigger workflows)",[13,4253,4254,4257],{},[16,4255,4256],{},"Workflow File"," (auto-created):",[13,4259,4260],{},[121,4261,4262],{},".github\u002Fworkflows\u002Fjetscale-terraform.yml",[107,4264],{},[28,4266,4268],{"id":4267},"bitbucket-integration","Bitbucket Integration",[13,4270,4271,624],{},[16,4272,4185],{},[80,4274,4275,4278,4284],{},[36,4276,4277],{},"Create Bitbucket App Password with: Repository (read\u002Fwrite), PR (read\u002Fwrite)",[36,4279,4280,4281],{},"Configure in Jetscale: ",[16,4282,4283],{},"Settings > Integrations > Bitbucket",[36,4285,4286],{},"Provide repository URL and credentials",[13,4288,4289,624],{},[16,4290,3550],{},[33,4292,4293,4296,4299,4302],{},[36,4294,4295],{},"PR creation with custom templates",[36,4297,4298],{},"Terraform plan as PR comment",[36,4300,4301],{},"Bitbucket Pipelines integration",[36,4303,4304],{},"Build status reporting",[13,4306,4307,4257],{},[16,4308,4309],{},"Pipelines File",[13,4311,4312],{},[121,4313,4314],{},"bitbucket-pipelines.yml",[114,4316,4318],{"className":1288,"code":4317,"language":1290,"meta":119,"style":119},"pipelines:\n  pull-requests:\n    '**':\n      - step:\n          name: Terraform Plan\n          image: hashicorp\u002Fterraform:latest\n          script:\n            - terraform init\n            - terraform plan -out=plan.tfplan\n            - terraform show -no-color plan.tfplan > plan.txt\n",[121,4319,4320,4327,4334,4347,4356,4366,4376,4382,4389,4395],{"__ignoreMap":119},[124,4321,4322,4325],{"class":126,"line":127},[124,4323,4324],{"class":1297},"pipelines",[124,4326,2134],{"class":1301},[124,4328,4329,4332],{"class":126,"line":133},[124,4330,4331],{"class":1297},"  pull-requests",[124,4333,2134],{"class":1301},[124,4335,4336,4339,4342,4345],{"class":126,"line":139},[124,4337,4338],{"class":1301},"    '",[124,4340,4341],{"class":1304},"**",[124,4343,4344],{"class":1301},"'",[124,4346,2134],{"class":1301},[124,4348,4349,4351,4354],{"class":126,"line":146},[124,4350,2153],{"class":1301},[124,4352,4353],{"class":1297}," step",[124,4355,2134],{"class":1301},[124,4357,4358,4361,4363],{"class":126,"line":152},[124,4359,4360],{"class":1297},"          name",[124,4362,624],{"class":1301},[124,4364,4365],{"class":1304}," Terraform Plan\n",[124,4367,4368,4371,4373],{"class":126,"line":158},[124,4369,4370],{"class":1297},"          image",[124,4372,624],{"class":1301},[124,4374,4375],{"class":1304}," hashicorp\u002Fterraform:latest\n",[124,4377,4378,4380],{"class":126,"line":164},[124,4379,2277],{"class":1297},[124,4381,2134],{"class":1301},[124,4383,4384,4387],{"class":126,"line":170},[124,4385,4386],{"class":1301},"            -",[124,4388,2232],{"class":1304},[124,4390,4391,4393],{"class":126,"line":176},[124,4392,4386],{"class":1301},[124,4394,2243],{"class":1304},[124,4396,4397,4399],{"class":126,"line":182},[124,4398,4386],{"class":1301},[124,4400,2254],{"class":1304},[107,4402],{},[28,4404,2757],{"id":4405},"jira-integration",[13,4407,4408,624],{},[16,4409,4185],{},[80,4411,4412,4415,4420],{},[36,4413,4414],{},"Create Jira API token",[36,4416,4280,4417],{},[16,4418,4419],{},"Settings > Integrations > Jira",[36,4421,4422],{},"Provide: Jira URL, email, API token, project key",[13,4424,4425,624],{},[16,4426,3550],{},[33,4428,4429,4432,4435,4438,4441],{},[36,4430,4431],{},"Automatic ticket creation for implementations",[36,4433,4434],{},"Links to PRs and Jetscale recommendations",[36,4436,4437],{},"Status updates (To Do → In Progress → Done)",[36,4439,4440],{},"Savings tracking in ticket description",[36,4442,4443],{},"Custom fields for cost metadata",[13,4445,4446,624],{},[16,4447,4448],{},"Jira Ticket Fields",[862,4450,4451,4463],{},[865,4452,4453],{},[868,4454,4455,4458,4460],{},[871,4456,4457],{},"Field",[871,4459,1310],{},[871,4461,4462],{},"Value",[878,4464,4465,4478,4488,4499,4510,4531,4544,4557],{},[868,4466,4467,4470,4473],{},[883,4468,4469],{},"Summary",[883,4471,4472],{},"Text",[883,4474,4475],{},[121,4476,4477],{},"[Jetscale] Cost Optimization Batch #2024-001",[868,4479,4480,4482,4485],{},[883,4481,2637],{},[883,4483,4484],{},"Markdown",[883,4486,4487],{},"PR link, savings, resource list",[868,4489,4490,4493,4496],{},[883,4491,4492],{},"Issue Type",[883,4494,4495],{},"Task\u002FStory",[883,4497,4498],{},"Configurable",[868,4500,4501,4504,4507],{},[883,4502,4503],{},"Priority",[883,4505,4506],{},"Medium\u002FHigh",[883,4508,4509],{},"Based on savings amount",[868,4511,4512,4515,4519],{},[883,4513,4514],{},"Labels",[883,4516,4472,4517],{},[124,4518],{},[883,4520,4521,4524,4525,4524,4528],{},[121,4522,4523],{},"jetscale",", ",[121,4526,4527],{},"cost-optimization",[121,4529,4530],{},"terraform",[868,4532,4533,4536,4539],{},[883,4534,4535],{},"Custom: Est. Savings",[883,4537,4538],{},"Number",[883,4540,4541],{},[121,4542,4543],{},"2847",[868,4545,4546,4549,4551],{},[883,4547,4548],{},"Custom: Actual Savings",[883,4550,4538],{},[883,4552,4553,4556],{},[121,4554,4555],{},"2789"," (updated after verification)",[868,4558,4559,4562,4564],{},[883,4560,4561],{},"Custom: Resources",[883,4563,4538],{},[883,4565,4566],{},[121,4567,4568],{},"12",[13,4570,4571,4574],{},[16,4572,4573],{},"Automation Rules"," (configured in Jira):",[33,4576,4577,4580,4583],{},[36,4578,4579],{},"When PR merged → Transition to \"In Progress\"",[36,4581,4582],{},"When implementation complete → Transition to \"Done\"",[36,4584,4585],{},"When savings verified → Add comment with results",[107,4587],{},[28,4589,4591],{"id":4590},"slackteams-integration-optional","Slack\u002FTeams Integration (Optional)",[13,4593,4594,624],{},[16,4595,4185],{},[80,4597,4598,4601,4604],{},[36,4599,4600],{},"Install Jetscale Slack app or Teams connector",[36,4602,4603],{},"Configure notification channels",[36,4605,4606],{},"Set alert thresholds",[13,4608,4609,624],{},[16,4610,4611],{},"Notifications",[33,4613,4614,4617,4620,4623,4626],{},[36,4615,4616],{},"New recommendations available",[36,4618,4619],{},"PR created and awaiting review",[36,4621,4622],{},"Implementation complete",[36,4624,4625],{},"Savings verified",[36,4627,4628],{},"Errors or issues detected",[13,4630,4631,624],{},[16,4632,4633],{},"Example Slack Message",[114,4635,4638],{"className":4636,"code":4637,"language":798},[796],"🎯 Jetscale: New Recommendations Available\n\n47 recommendations with estimated savings of $12,340\u002Fmonth\n\nTop recommendations:\n1. Rightsizing: prod-web-server-01 → $62\u002Fmo\n2. Scheduling: dev-database-01 → $188\u002Fmo\n3. Storage: ebs-vol-12345 → $45\u002Fmo\n\n[View Dashboard →]\n",[121,4639,4637],{"__ignoreMap":119},[107,4641],{},[20,4643,4645],{"id":4644},"timeline-overview","Timeline Overview",[28,4647,4649],{"id":4648},"complete-workflow-duration","Complete Workflow Duration",[13,4651,4652,4655],{},[16,4653,4654],{},"End-to-End",": From account connection to verified savings",[862,4657,4658,4671],{},[865,4659,4660],{},[868,4661,4662,4665,4668],{},[871,4663,4664],{},"Phase",[871,4666,4667],{},"Duration",[871,4669,4670],{},"Cumulative",[878,4672,4673,4684,4695,4706,4716,4726,4735,4745,4755,4766,4776],{},[868,4674,4675,4678,4681],{},[883,4676,4677],{},"1. Account connection",[883,4679,4680],{},"5-10 minutes",[883,4682,4683],{},"10 min",[868,4685,4686,4689,4692],{},[883,4687,4688],{},"2. Resource discovery",[883,4690,4691],{},"5-30 minutes",[883,4693,4694],{},"40 min",[868,4696,4697,4700,4703],{},[883,4698,4699],{},"3. Metrics collection baseline",[883,4701,4702],{},"24-48 hours",[883,4704,4705],{},"2 days",[868,4707,4708,4711,4714],{},[883,4709,4710],{},"4. AI analysis (initial)",[883,4712,4713],{},"30-60 minutes",[883,4715,4705],{},[868,4717,4718,4721,4724],{},[883,4719,4720],{},"5. Recommendation generation",[883,4722,4723],{},"10-20 minutes",[883,4725,4705],{},[868,4727,4728,4731,4733],{},[883,4729,4730],{},"6. Validation",[883,4732,4680],{},[883,4734,4705],{},[868,4736,4737,4740,4743],{},[883,4738,4739],{},"7. Terraform generation",[883,4741,4742],{},"5-15 minutes",[883,4744,4705],{},[868,4746,4747,4750,4753],{},[883,4748,4749],{},"8. GitOps PR creation",[883,4751,4752],{},"2-5 minutes",[883,4754,4705],{},[868,4756,4757,4760,4763],{},[883,4758,4759],{},"9. Team review & approval",[883,4761,4762],{},"1-3 business days",[883,4764,4765],{},"3-5 days",[868,4767,4768,4771,4774],{},[883,4769,4770],{},"10. Implementation",[883,4772,4773],{},"10-30 minutes",[883,4775,4765],{},[868,4777,4778,4781,4784],{},[883,4779,4780],{},"11. Savings verification",[883,4782,4783],{},"Verification period",[883,4785,4786],{},"10-35 days",[13,4788,4789,624],{},[16,4790,4791],{},"Typical Timeline",[33,4793,4794,4800,4806],{},[36,4795,4796,4799],{},[16,4797,4798],{},"First recommendations ready",": 2-3 days after connection",[36,4801,4802,4805],{},[16,4803,4804],{},"First implementation",": 3-7 days (including review)",[36,4807,4808,4811],{},[16,4809,4810],{},"First verified savings",": 10-35 days",[107,4813],{},[28,4815,4817],{"id":4816},"continuous-operation","Continuous Operation",[13,4819,4820],{},"Once initial setup is complete, Jetscale operates continuously:",[862,4822,4823,4832],{},[865,4824,4825],{},[868,4826,4827,4830],{},[871,4828,4829],{},"Activity",[871,4831,3243],{},[878,4833,4834,4842,4850,4858,4865,4873],{},[868,4835,4836,4839],{},[883,4837,4838],{},"Metrics collection",[883,4840,4841],{},"Every 5 minutes",[868,4843,4844,4847],{},[883,4845,4846],{},"Pattern analysis",[883,4848,4849],{},"Hourly",[868,4851,4852,4855],{},[883,4853,4854],{},"Recommendation refresh",[883,4856,4857],{},"Daily",[868,4859,4860,4863],{},[883,4861,4862],{},"Cost tracking update",[883,4864,4857],{},[868,4866,4867,4870],{},[883,4868,4869],{},"Savings verification",[883,4871,4872],{},"Weekly (for recent implementations)",[868,4874,4875,4878],{},[883,4876,4877],{},"Full resource re-scan",[883,4879,4880],{},"Weekly",[107,4882],{},[28,4884,4886],{"id":4885},"batch-implementation-timeline","Batch Implementation Timeline",[13,4888,4889,624],{},[16,4890,4891],{},"For a typical batch of 12 recommendations",[114,4893,4896],{"className":4894,"code":4895,"language":798},[796],"Day 1: Recommendation batch created\n       Terraform generated\n       PR created\n       Team notified\n\nDay 2-3: Team review period\n\nDay 4: PR approved and merged\n       Implementation executed (30 min)\n       Jira ticket created\n\nDay 5-11: Monitoring period\n\nDay 12: Initial savings verification\n        Jira ticket updated\n\nVerification complete: Final savings verification\n        Variance analysis\n        Jira ticket closed\n",[121,4897,4895],{"__ignoreMap":119},[107,4899],{},[20,4901,4903],{"id":4902},"advanced-topics","Advanced Topics",[28,4905,4907],{"id":4906},"custom-validation-rules","Custom Validation Rules",[13,4909,4910],{},"Jetscale allows defining custom validation rules for your organization:",[13,4912,4913,4916],{},[16,4914,4915],{},"Example",": Ensure production databases always have 50% memory headroom",[114,4918,4920],{"className":1288,"code":4919,"language":1290,"meta":119,"style":119},"custom_validation_rules:\n  - name: prod_db_memory_headroom\n    resource_filter:\n      type: \"rds\"\n      tags:\n        Environment: \"production\"\n    checks:\n      - metric: memory_utilization\n        threshold: 50  # Max 50% utilization\n        operation: max\n        period: 30d\n    action: block  # Block recommendation if violated\n",[121,4921,4922,4929,4942,4949,4963,4970,4984,4991,5003,5017,5027,5037],{"__ignoreMap":119},[124,4923,4924,4927],{"class":126,"line":127},[124,4925,4926],{"class":1297},"custom_validation_rules",[124,4928,2134],{"class":1301},[124,4930,4931,4934,4937,4939],{"class":126,"line":133},[124,4932,4933],{"class":1301},"  -",[124,4935,4936],{"class":1297}," name",[124,4938,624],{"class":1301},[124,4940,4941],{"class":1304}," prod_db_memory_headroom\n",[124,4943,4944,4947],{"class":126,"line":139},[124,4945,4946],{"class":1297},"    resource_filter",[124,4948,2134],{"class":1301},[124,4950,4951,4954,4956,4958,4961],{"class":126,"line":146},[124,4952,4953],{"class":1297},"      type",[124,4955,624],{"class":1301},[124,4957,3774],{"class":1301},[124,4959,4960],{"class":1304},"rds",[124,4962,4020],{"class":1301},[124,4964,4965,4968],{"class":126,"line":152},[124,4966,4967],{"class":1297},"      tags",[124,4969,2134],{"class":1301},[124,4971,4972,4975,4977,4979,4982],{"class":126,"line":158},[124,4973,4974],{"class":1297},"        Environment",[124,4976,624],{"class":1301},[124,4978,3774],{"class":1301},[124,4980,4981],{"class":1304},"production",[124,4983,4020],{"class":1301},[124,4985,4986,4989],{"class":126,"line":164},[124,4987,4988],{"class":1297},"    checks",[124,4990,2134],{"class":1301},[124,4992,4993,4995,4998,5000],{"class":126,"line":170},[124,4994,2153],{"class":1301},[124,4996,4997],{"class":1297}," metric",[124,4999,624],{"class":1301},[124,5001,5002],{"class":1304}," memory_utilization\n",[124,5004,5005,5008,5010,5013],{"class":126,"line":176},[124,5006,5007],{"class":1297},"        threshold",[124,5009,624],{"class":1301},[124,5011,5012],{"class":3932}," 50",[124,5014,5016],{"class":5015},"sHwdD","  # Max 50% utilization\n",[124,5018,5019,5022,5024],{"class":126,"line":182},[124,5020,5021],{"class":1297},"        operation",[124,5023,624],{"class":1301},[124,5025,5026],{"class":1304}," max\n",[124,5028,5029,5032,5034],{"class":126,"line":188},[124,5030,5031],{"class":1297},"        period",[124,5033,624],{"class":1301},[124,5035,5036],{"class":1304}," 30d\n",[124,5038,5039,5042,5044,5047],{"class":126,"line":194},[124,5040,5041],{"class":1297},"    action",[124,5043,624],{"class":1301},[124,5045,5046],{"class":1304}," block",[124,5048,5049],{"class":5015},"  # Block recommendation if violated\n",[107,5051],{},[28,5053,5055],{"id":5054},"rollback-procedures","Rollback Procedures",[13,5057,5058],{},"Every implementation includes automated rollback capability:",[13,5060,5061,624],{},[16,5062,5063],{},"Automated Rollback Triggers",[33,5065,5066,5069,5072,5075],{},[36,5067,5068],{},"Performance degradation >20% from baseline",[36,5070,5071],{},"Error rate spike >10x normal",[36,5073,5074],{},"SLA violation detected",[36,5076,5077],{},"Manual trigger via dashboard",[13,5079,5080,624],{},[16,5081,5082],{},"Rollback Process",[80,5084,5085,5088,5091,5094,5099,5102],{},[36,5086,5087],{},"Detect trigger condition",[36,5089,5090],{},"Alert user immediately",[36,5092,5093],{},"Execute terraform state backup",[36,5095,1683,5096,5098],{},[121,5097,2575],{}," with previous state",[36,5100,5101],{},"Verify rollback success",[36,5103,5104],{},"Generate incident report",[13,5106,5107,624],{},[16,5108,5109],{},"Manual Rollback",[13,5111,5112,5113],{},"Dashboard: ",[16,5114,5115],{},"Recommendations > Batch #2024-001 > Rollback",[107,5117],{},[28,5119,5121],{"id":5120},"multi-cloud-support","Multi-Cloud Support",[13,5123,5124],{},"Jetscale handles AWS and Azure differently but provides unified workflow:",[862,5126,5127,5138],{},[865,5128,5129],{},[868,5130,5131,5134,5136],{},[871,5132,5133],{},"Feature",[871,5135,649],{},[871,5137,655],{},[878,5139,5140,5150,5161,5172,5187],{},[868,5141,5142,5144,5147],{},[883,5143,1119],{},[883,5145,5146],{},"Cost Optimization Hub",[883,5148,5149],{},"Azure Advisor",[868,5151,5152,5155,5158],{},[883,5153,5154],{},"Metrics Source",[883,5156,5157],{},"CloudWatch",[883,5159,5160],{},"Azure Monitor",[868,5162,5163,5166,5169],{},[883,5164,5165],{},"Cost Data",[883,5167,5168],{},"Cost Explorer",[883,5170,5171],{},"Cost Management",[868,5173,5174,5177,5182],{},[883,5175,5176],{},"Terraform Provider",[883,5178,5179],{},[121,5180,5181],{},"hashicorp\u002Faws",[883,5183,5184],{},[121,5185,5186],{},"hashicorp\u002Fazurerm",[868,5188,5189,5192,5195],{},[883,5190,5191],{},"State Backend",[883,5193,5194],{},"S3 + DynamoDB",[883,5196,5197],{},"Azure Storage",[107,5199],{},[20,5201,5203],{"id":5202},"best-practices","Best Practices",[28,5205,5207],{"id":5206},"recommendation-review","Recommendation Review",[80,5209,5210,5216,5222,5228,5234],{},[36,5211,5212,5215],{},[16,5213,5214],{},"Start Small",": Implement 3-5 low-risk recommendations first",[36,5217,5218,5221],{},[16,5219,5220],{},"Monitor Closely",": Watch metrics for 7 days post-implementation",[36,5223,5224,5227],{},[16,5225,5226],{},"Verify Savings",": Don't assume estimates are perfect (95% accuracy typical)",[36,5229,5230,5233],{},[16,5231,5232],{},"Document Exceptions",": If you reject recommendations, note why",[36,5235,5236,5239],{},[16,5237,5238],{},"Schedule Reviews",": Weekly review cadence for new recommendations",[107,5241],{},[28,5243,5245],{"id":5244},"team-workflow","Team Workflow",[13,5247,5248,624],{},[16,5249,5250],{},"Recommended Approval Process",[862,5252,5253,5266],{},[865,5254,5255],{},[868,5256,5257,5260,5263],{},[871,5258,5259],{},"Risk Level",[871,5261,5262],{},"Approvers Required",[871,5264,5265],{},"Review Time",[878,5267,5268,5279,5290],{},[868,5269,5270,5273,5276],{},[883,5271,5272],{},"Low (1-3)",[883,5274,5275],{},"1 engineer",[883,5277,5278],{},"1 business day",[868,5280,5281,5284,5287],{},[883,5282,5283],{},"Medium (4-7)",[883,5285,5286],{},"1 senior engineer + 1 architect",[883,5288,5289],{},"2 business days",[868,5291,5292,5295,5298],{},[883,5293,5294],{},"High (8-10)",[883,5296,5297],{},"2 senior engineers + 1 architect + manager",[883,5299,5300],{},"3 business days",[107,5302],{},[28,5304,5306],{"id":5305},"cost-savings-strategy","Cost Savings Strategy",[13,5308,5309,624],{},[16,5310,5311],{},"Prioritization Framework",[80,5313,5314,5331,5348],{},[36,5315,5316,5319,5320],{},[16,5317,5318],{},"Quick Wins"," (Week 1-2):",[33,5321,5322,5325,5328],{},[36,5323,5324],{},"Unused resource cleanup (100% savings)",[36,5326,5327],{},"Obvious rightsizing (>50% CPU\u002Fmemory idle)",[36,5329,5330],{},"Non-prod scheduling (60-75% savings)",[36,5332,5333,5336,5337],{},[16,5334,5335],{},"Medium Impact"," (Week 3-4):",[33,5338,5339,5342,5345],{},[36,5340,5341],{},"Moderate rightsizing (20-50% idle)",[36,5343,5344],{},"Storage optimization",[36,5346,5347],{},"Reserved Instance analysis",[36,5349,5350,5353,5354],{},[16,5351,5352],{},"Long-Term Commitments"," (Month 2+):",[33,5355,5356,5359,5362],{},[36,5357,5358],{},"Reserved Instances (1-3 year)",[36,5360,5361],{},"Savings Plans",[36,5363,5364],{},"Architectural changes (serverless migration)",[13,5366,5367,624],{},[16,5368,5369],{},"Expected Savings Curve",[33,5371,5372,5375,5378],{},[36,5373,5374],{},"Month 1: 10-20% of total potential savings",[36,5376,5377],{},"Month 3: 50-70% of total potential savings",[36,5379,5380],{},"Month 6: 80-90% of total potential savings",[107,5382],{},[20,5384,5386],{"id":5385},"troubleshooting","Troubleshooting",[28,5388,5390],{"id":5389},"common-issues","Common Issues",[13,5392,5393,5396],{},[16,5394,5395],{},"Issue",": Recommendations not appearing after 48 hours",[13,5398,5399,624],{},[16,5400,5401],{},"Solution",[80,5403,5404,5409,5412,5418],{},[36,5405,5406,5407],{},"Check account connection: ",[16,5408,632],{},[36,5410,5411],{},"Verify permissions (IAM role for AWS, App registration for Azure)",[36,5413,5414,5415],{},"Check metrics collection status: ",[16,5416,5417],{},"Settings > Data Collection",[36,5419,5420,5421],{},"Review logs: ",[16,5422,5423],{},"Settings > System > Logs",[107,5425],{},[13,5427,5428,5430],{},[16,5429,5395],{},": Terraform apply fails with permission errors",[13,5432,5433,624],{},[16,5434,5401],{},[80,5436,5437,5440,5446,5449],{},[36,5438,5439],{},"Verify Jetscale execution role has necessary permissions",[36,5441,5442,5443,5445],{},"Check if resources have ",[121,5444,1659],{}," lifecycle rules",[36,5447,5448],{},"Review Terraform error logs in dashboard",[36,5450,5451],{},"Ensure state backend is accessible (S3\u002FAzure Storage)",[107,5453],{},[13,5455,5456,5458],{},[16,5457,5395],{},": Savings verification shows low accuracy (\u003C80%)",[13,5460,5461,624],{},[16,5462,5401],{},[80,5464,5465,5468,5471,5474],{},[36,5466,5467],{},"Check if usage patterns changed post-implementation",[36,5469,5470],{},"Verify cost data collection is working",[36,5472,5473],{},"Review if external factors affected costs (e.g., data transfer spikes)",[36,5475,5476],{},"Consider adjusting AI models with updated baseline",[107,5478],{},[13,5480,5481,5483],{},[16,5482,5395],{},": PR creation fails",[13,5485,5486,624],{},[16,5487,5401],{},[80,5489,5490,5496,5499,5502],{},[36,5491,5492,5493],{},"Verify GitHub\u002FBitbucket integration: ",[16,5494,5495],{},"Settings > Integrations",[36,5497,5498],{},"Check repository permissions",[36,5500,5501],{},"Ensure branch protection rules allow Jetscale commits",[36,5503,5504],{},"Review Git provider API rate limits",[107,5506],{},[20,5508,5510],{"id":5509},"security-compliance","Security & Compliance",[28,5512,5514],{"id":5513},"data-security","Data Security",[33,5516,5517,5523,5529,5535],{},[36,5518,5519,5522],{},[16,5520,5521],{},"At Rest",": All data encrypted with AES-256",[36,5524,5525,5528],{},[16,5526,5527],{},"In Transit",": TLS 1.3 for all API communications",[36,5530,5531,5534],{},[16,5532,5533],{},"Access Control",": Role-based access control (RBAC)",[36,5536,5537,5540],{},[16,5538,5539],{},"Audit Logs",": Complete audit trail of all actions",[28,5542,5544],{"id":5543},"compliance","Compliance",[33,5546,5547,5553,5559,5565],{},[36,5548,5549,5552],{},[16,5550,5551],{},"SOC 2 Type II",": Certified",[36,5554,5555,5558],{},[16,5556,5557],{},"GDPR",": Compliant (data residency options)",[36,5560,5561,5564],{},[16,5562,5563],{},"HIPAA",": Available for healthcare customers",[36,5566,5567,5570],{},[16,5568,5569],{},"PCI DSS",": For payment processing workloads",[28,5572,5574],{"id":5573},"credential-management","Credential Management",[33,5576,5577,5582,5587,5593],{},[36,5578,5579,5581],{},[16,5580,649],{},": IAM role with cross-account assume role (no long-lived credentials)",[36,5583,5584,5586],{},[16,5585,655],{},": Service principal with certificate authentication",[36,5588,5589,5592],{},[16,5590,5591],{},"Secrets",": Stored in dedicated secrets manager (AWS Secrets Manager \u002F Azure Key Vault)",[36,5594,5595,5598],{},[16,5596,5597],{},"Rotation",": Automatic credential rotation every 90 days",[107,5600],{},[20,5602,5604],{"id":5603},"support-resources","Support & Resources",[28,5606,5608],{"id":5607},"documentation","Documentation",[33,5610,5611,5615,5619],{},[36,5612,5613],{},[696,5614,699],{"href":698},[36,5616,5617],{},[696,5618,705],{"href":704},[36,5620,5621],{},[696,5622,5624],{"href":5623},"\u002Fdocs\u002Ffaq","FAQ",[28,5626,5628],{"id":5627},"support-channels","Support Channels",[33,5630,5631,5641,5647,5657],{},[36,5632,5633,5636,5637],{},[16,5634,5635],{},"Email",": ",[696,5638,5640],{"href":5639},"mailto:support@jetscale.ai","support@jetscale.ai",[36,5642,5643,5646],{},[16,5644,5645],{},"Chat",": In-app live chat (bottom-right corner)",[36,5648,5649,5636,5652],{},[16,5650,5651],{},"Community",[696,5653,5654],{"href":5654,"rel":5655},"https:\u002F\u002Fcommunity.jetscale.ai",[5656],"nofollow",[36,5658,5659,5636,5662],{},[16,5660,5661],{},"Status Page",[696,5663,5664],{"href":5664,"rel":5665},"https:\u002F\u002Fstatus.jetscale.ai",[5656],[28,5667,5669],{"id":5668},"training","Training",[33,5671,5672,5681,5687],{},[36,5673,5674,5636,5677],{},[16,5675,5676],{},"Onboarding Videos",[696,5678,5679],{"href":5679,"rel":5680},"https:\u002F\u002Fjetscale.ai\u002Ftraining",[5656],[36,5682,5683,5686],{},[16,5684,5685],{},"Webinars",": Monthly best practices sessions",[36,5688,5689,5692],{},[16,5690,5691],{},"Office Hours",": Weekly Q&A sessions (Thursdays 2pm EST)",[107,5694],{},[20,5696,5698],{"id":5697},"appendix","Appendix",[28,5700,5702],{"id":5701},"glossary","Glossary",[862,5704,5705,5715],{},[865,5706,5707],{},[868,5708,5709,5712],{},[871,5710,5711],{},"Term",[871,5713,5714],{},"Definition",[878,5716,5717,5726,5735,5745,5755,5765,5775],{},[868,5718,5719,5723],{},[883,5720,5721],{},[16,5722,1147],{},[883,5724,5725],{},"Changing resource instance types to match actual usage",[868,5727,5728,5732],{},[883,5729,5730],{},[16,5731,1153],{},[883,5733,5734],{},"Automatically starting\u002Fstopping resources based on time patterns",[868,5736,5737,5742],{},[883,5738,5739],{},[16,5740,5741],{},"Reserved Instance",[883,5743,5744],{},"1-3 year commitment for discounted pricing",[868,5746,5747,5752],{},[883,5748,5749],{},[16,5750,5751],{},"Savings Plan",[883,5753,5754],{},"Flexible commitment based on $\u002Fhour spend",[868,5756,5757,5762],{},[883,5758,5759],{},[16,5760,5761],{},"GitOps",[883,5763,5764],{},"Infrastructure management via Git pull requests",[868,5766,5767,5772],{},[883,5768,5769],{},[16,5770,5771],{},"SLA",[883,5773,5774],{},"Service Level Agreement (performance\u002Favailability target)",[868,5776,5777,5782],{},[883,5778,5779],{},[16,5780,5781],{},"IaC",[883,5783,5784],{},"Infrastructure as Code (Terraform, CloudFormation, etc.)",[107,5786],{},[28,5788,5790],{"id":5789},"supported-resource-types","Supported Resource Types",[13,5792,5793,5795],{},[16,5794,649],{}," (100+ types):",[33,5797,5798,5801,5804,5807,5810],{},[36,5799,5800],{},"Compute: EC2, Lambda, ECS, EKS, Fargate, Lightsail",[36,5802,5803],{},"Storage: EBS, S3, EFS, FSx",[36,5805,5806],{},"Database: RDS, DynamoDB, Redshift, ElastiCache, MemoryDB",[36,5808,5809],{},"Networking: ALB, NLB, NAT Gateway, VPN Gateway, Transit Gateway",[36,5811,5812],{},"Analytics: Athena, EMR, Glue, Kinesis",[13,5814,5815,5817],{},[16,5816,655],{}," (80+ types):",[33,5819,5820,5823,5826,5829],{},[36,5821,5822],{},"Compute: Virtual Machines, App Service, Functions, AKS, Container Instances",[36,5824,5825],{},"Storage: Managed Disks, Blob Storage, Files, Data Lake",[36,5827,5828],{},"Database: SQL Database, Cosmos DB, MySQL, PostgreSQL, Redis Cache",[36,5830,5831],{},"Networking: Load Balancer, Application Gateway, VPN Gateway, ExpressRoute",[107,5833],{},[28,5835,5837],{"id":5836},"calculation-methodology","Calculation Methodology",[13,5839,5840,624],{},[16,5841,5842],{},"Savings Estimates",[33,5844,5845,5848,5851,5854],{},[36,5846,5847],{},"Based on historical rolling average usage",[36,5849,5850],{},"Current pricing (on-demand rates)",[36,5852,5853],{},"Regional pricing variations included",[36,5855,5856],{},"Tax and support costs excluded",[13,5858,5859,624],{},[16,5860,5861],{},"Formula",[114,5863,5866],{"className":5864,"code":5865,"language":798},[796],"Monthly Savings = Current Cost - Recommended Cost\nAnnual Savings = Monthly Savings × 12\n",[121,5867,5865],{"__ignoreMap":119},[13,5869,5870,624],{},[16,5871,5872],{},"Accuracy",[33,5874,5875,5878,5881],{},[36,5876,5877],{},"95% accuracy for rightsizing (±5%)",[36,5879,5880],{},"98% accuracy for scheduling (±2%)",[36,5882,5883],{},"90% accuracy for commitment recommendations (±10% due to usage variability)",[107,5885],{},[13,5887,5888,5892],{},[5889,5890,5891],"em",{},"Last Updated: January 29, 2024",[5889,5893,5894],{},"Version: 1.0",[5896,5897,5898],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":119,"searchDepth":133,"depth":133,"links":5900},[5901,5905,5906,5919,5924,5930,5936,5941,5946,5951,5954,5959,5964],{"id":22,"depth":133,"text":23,"children":5902},[5903,5904],{"id":30,"depth":139,"text":31},{"id":74,"depth":139,"text":75},{"id":111,"depth":133,"text":112},{"id":607,"depth":133,"text":608,"children":5907},[5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918],{"id":611,"depth":139,"text":612},{"id":710,"depth":139,"text":711},{"id":811,"depth":139,"text":812},{"id":941,"depth":139,"text":942},{"id":1102,"depth":139,"text":1103},{"id":1410,"depth":139,"text":1411},{"id":1599,"depth":139,"text":1600},{"id":1854,"depth":139,"text":1855},{"id":2338,"depth":139,"text":2339},{"id":2521,"depth":139,"text":2522},{"id":2720,"depth":139,"text":2721},{"id":2882,"depth":133,"text":2883,"children":5920},[5921,5922,5923],{"id":2886,"depth":139,"text":2887},{"id":2904,"depth":139,"text":2905},{"id":2917,"depth":139,"text":2918},{"id":2970,"depth":133,"text":2971,"children":5925},[5926,5927,5928,5929],{"id":2974,"depth":139,"text":2975},{"id":3207,"depth":139,"text":3208},{"id":3741,"depth":139,"text":3742},{"id":4035,"depth":139,"text":4036},{"id":4175,"depth":133,"text":4176,"children":5931},[5932,5933,5934,5935],{"id":4179,"depth":139,"text":4180},{"id":4267,"depth":139,"text":4268},{"id":4405,"depth":139,"text":2757},{"id":4590,"depth":139,"text":4591},{"id":4644,"depth":133,"text":4645,"children":5937},[5938,5939,5940],{"id":4648,"depth":139,"text":4649},{"id":4816,"depth":139,"text":4817},{"id":4885,"depth":139,"text":4886},{"id":4902,"depth":133,"text":4903,"children":5942},[5943,5944,5945],{"id":4906,"depth":139,"text":4907},{"id":5054,"depth":139,"text":5055},{"id":5120,"depth":139,"text":5121},{"id":5202,"depth":133,"text":5203,"children":5947},[5948,5949,5950],{"id":5206,"depth":139,"text":5207},{"id":5244,"depth":139,"text":5245},{"id":5305,"depth":139,"text":5306},{"id":5385,"depth":133,"text":5386,"children":5952},[5953],{"id":5389,"depth":139,"text":5390},{"id":5509,"depth":133,"text":5510,"children":5955},[5956,5957,5958],{"id":5513,"depth":139,"text":5514},{"id":5543,"depth":139,"text":5544},{"id":5573,"depth":139,"text":5574},{"id":5603,"depth":133,"text":5604,"children":5960},[5961,5962,5963],{"id":5607,"depth":139,"text":5608},{"id":5627,"depth":139,"text":5628},{"id":5668,"depth":139,"text":5669},{"id":5697,"depth":133,"text":5698,"children":5965},[5966,5967,5968],{"id":5701,"depth":139,"text":5702},{"id":5789,"depth":139,"text":5790},{"id":5836,"depth":139,"text":5837},[5970,5971,5972],"product-capabilities","recommendation-workflow","savings-methodology","md","en",{},[],"Product Engineering","\u002Fdocs\u002Frecommendation-workflow","legacy-import",{"title":5,"description":18},[],"docs\u002F6.recommendation-workflow","high","1D4NKvE7JFyxWTiS5GWxxtQ6NWZXe2RUH8JuibcbcKM",[5986],{"title":5987,"path":5988,"stem":5989,"children":5990},"Docs","\u002Fdocs","docs",[5991,5994,5998,6000,6002,6006,6025,6028,6066,6067,6071],{"title":5992,"path":5988,"stem":5993},"Jetscale Documentation","docs\u002Findex",{"title":5995,"path":5996,"stem":5997},"Getting Started with Jetscale","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",{"title":699,"path":698,"stem":5999},"docs\u002F2.aws-setup",{"title":705,"path":704,"stem":6001},"docs\u002F3.azure-setup",{"title":6003,"path":6004,"stem":6005},"How Jetscale Works","\u002Fdocs\u002Fhow-it-works","docs\u002F4.how-it-works",{"title":6007,"path":6008,"stem":6009,"children":6010},"Integrations","\u002Fdocs\u002Fintegrations","docs\u002F4.integrations\u002Findex",[6011,6012,6015,6018,6022],{"title":6007,"path":6008,"stem":6009},{"title":4180,"path":6013,"stem":6014},"\u002Fdocs\u002Fintegrations\u002Fgithub","docs\u002F4.integrations\u002F1.github",{"title":2757,"path":6016,"stem":6017},"\u002Fdocs\u002Fintegrations\u002Fjira","docs\u002F4.integrations\u002F2.jira",{"title":6019,"path":6020,"stem":6021},"Slack Integration","\u002Fdocs\u002Fintegrations\u002Fslack","docs\u002F4.integrations\u002F3.slack",{"title":4268,"path":6023,"stem":6024},"\u002Fdocs\u002Fintegrations\u002Fbitbucket","docs\u002F4.integrations\u002F4.bitbucket",{"title":46,"path":6026,"stem":6027},"\u002Fdocs\u002Fai-analysis","docs\u002F5.ai-analysis",{"title":6029,"path":6030,"stem":6031,"children":6032},"Supported Services","\u002Fdocs\u002Fservices","docs\u002F5.services\u002Findex",[6033,6034,6038,6042,6046,6050,6054,6058,6062],{"title":6029,"path":6030,"stem":6031},{"title":6035,"path":6036,"stem":6037},"EBS Optimization","\u002Fdocs\u002Fservices\u002Febs","docs\u002F5.services\u002F1.ebs",{"title":6039,"path":6040,"stem":6041},"EC2 Optimization","\u002Fdocs\u002Fservices\u002Fec2","docs\u002F5.services\u002F2.ec2",{"title":6043,"path":6044,"stem":6045},"EKS Optimization","\u002Fdocs\u002Fservices\u002Feks","docs\u002F5.services\u002F3.eks",{"title":6047,"path":6048,"stem":6049},"ElastiCache Optimization","\u002Fdocs\u002Fservices\u002Felasticache","docs\u002F5.services\u002F4.elasticache",{"title":6051,"path":6052,"stem":6053},"RDS Optimization","\u002Fdocs\u002Fservices\u002Frds","docs\u002F5.services\u002F5.rds",{"title":6055,"path":6056,"stem":6057},"S3 Optimization","\u002Fdocs\u002Fservices\u002Fs3","docs\u002F5.services\u002F6.s3",{"title":6059,"path":6060,"stem":6061},"Azure SQL Optimization","\u002Fdocs\u002Fservices\u002Fazure-sql","docs\u002F5.services\u002F7.azure-sql",{"title":6063,"path":6064,"stem":6065},"Azure VM Optimization","\u002Fdocs\u002Fservices\u002Fazure-vm","docs\u002F5.services\u002F8.azure-vm",{"title":5,"path":5978,"stem":5982},{"title":6068,"path":6069,"stem":6070},"API Reference","\u002Fdocs\u002Fapi-reference","docs\u002F7.api-reference",{"title":5624,"path":5623,"stem":6072},"docs\u002F8.faq",[6074,6076],{"title":6063,"path":6064,"stem":6065,"description":6075,"children":-1},"Jetscale provides AI-powered cost optimization for Azure Virtual Machines. Our specialized agents analyze your compute workloads to identify right-sizing opportunities, VM...",{"title":6068,"path":6069,"stem":6070,"description":6077,"children":-1},"Public REST API for Jetscale integrations",1788204004291]