[{"data":1,"prerenderedAt":726},["ShallowReactive",2],{"navigation_docs":3,"-data-ops-adding-vendors":209,"-data-ops-adding-vendors-surround":722},[4,8,50,75,133,149,162,171,205],{"title":5,"path":6,"stem":7},"Introduction","\u002Fintroduction","0.introduction",{"title":9,"path":10,"stem":11,"children":12,"page":49},"Company","\u002Fcompany","1.company",[13,17,21,25,29,33,37,41,45],{"title":14,"path":15,"stem":16},"About","\u002Fcompany\u002Fabout","1.company\u002F0.about",{"title":18,"path":19,"stem":20},"Values","\u002Fcompany\u002Fvalues","1.company\u002F1.values",{"title":22,"path":23,"stem":24},"Communication","\u002Fcompany\u002Fcommunication","1.company\u002Fcommunication",{"title":26,"path":27,"stem":28},"Competition","\u002Fcompany\u002Fcompetition","1.company\u002Fcompetition",{"title":30,"path":31,"stem":32},"Hybrid Working","\u002Fcompany\u002Fhybrid-working","1.company\u002Fhybrid-working",{"title":34,"path":35,"stem":36},"Operations","\u002Fcompany\u002Foperations","1.company\u002Foperations",{"title":38,"path":39,"stem":40},"Policies","\u002Fcompany\u002Fpolicies","1.company\u002Fpolicies",{"title":42,"path":43,"stem":44},"Product","\u002Fcompany\u002Fproduct","1.company\u002Fproduct",{"title":46,"path":47,"stem":48},"Security","\u002Fcompany\u002Fsecurity","1.company\u002Fsecurity",false,{"title":51,"path":52,"stem":53,"children":54,"page":49},"People Ops","\u002Fpeople-ops","2.people-ops",[55,59,63,67,71],{"title":56,"path":57,"stem":58},"Compensation","\u002Fpeople-ops\u002Fcompensation","2.people-ops\u002Fcompensation",{"title":60,"path":61,"stem":62},"Education","\u002Fpeople-ops\u002Feducation","2.people-ops\u002Feducation",{"title":64,"path":65,"stem":66},"Expenses","\u002Fpeople-ops\u002Fexpenses","2.people-ops\u002Fexpenses",{"title":68,"path":69,"stem":70},"Holiday & Leave","\u002Fpeople-ops\u002Fleave","2.people-ops\u002Fleave",{"title":72,"path":73,"stem":74},"Onboarding","\u002Fpeople-ops\u002Fonboarding","2.people-ops\u002Fonboarding",{"title":76,"path":77,"stem":78,"children":79,"page":49},"Engineering","\u002Fengineering","3.engineering",[80,84,88,92,96,117,121,125,129],{"title":81,"path":82,"stem":83},"Development Setup","\u002Fengineering\u002Fdevelopment-setup","3.engineering\u002F1.development-setup",{"title":85,"path":86,"stem":87},"Contributing","\u002Fengineering\u002Fcontributing","3.engineering\u002Fcontributing",{"title":89,"path":90,"stem":91},"Production Database","\u002Fengineering\u002Fdatabase-connection","3.engineering\u002Fdatabase-connection",{"title":93,"path":94,"stem":95},"Deployment","\u002Fengineering\u002Fdeployment","3.engineering\u002Fdeployment",{"title":97,"path":98,"stem":99,"children":100,"page":49},"Github","\u002Fengineering\u002Fgithub","3.engineering\u002Fgithub",[101,105,109,113],{"title":102,"path":103,"stem":104},"Packages","\u002Fengineering\u002Fgithub\u002Fpackages","3.engineering\u002Fgithub\u002Fpackages",{"title":106,"path":107,"stem":108},"Personal Access Token","\u002Fengineering\u002Fgithub\u002Fpersonal-access-token","3.engineering\u002Fgithub\u002Fpersonal-access-token",{"title":110,"path":111,"stem":112},"Troubleshooting","\u002Fengineering\u002Fgithub\u002Ftroubleshooting","3.engineering\u002Fgithub\u002Ftroubleshooting",{"title":114,"path":115,"stem":116},"Workflows","\u002Fengineering\u002Fgithub\u002Fworkflows","3.engineering\u002Fgithub\u002Fworkflows",{"title":118,"path":119,"stem":120},"Platform Ops","\u002Fengineering\u002Fplatform-ops","3.engineering\u002Fplatform-ops",{"title":122,"path":123,"stem":124},"Project Management","\u002Fengineering\u002Fproject-management","3.engineering\u002Fproject-management",{"title":126,"path":127,"stem":128},"Releases","\u002Fengineering\u002Frelease","3.engineering\u002Frelease",{"title":130,"path":131,"stem":132},"Tools","\u002Fengineering\u002Ftools","3.engineering\u002Ftools",{"title":134,"path":135,"stem":136,"children":137,"page":49},"Design","\u002Fdesign","4.design",[138,142,146],{"title":139,"path":140,"stem":141},"Branding","\u002Fdesign\u002Fbranding","4.design\u002Fbranding",{"title":143,"path":144,"stem":145},"Design Thinking","\u002Fdesign\u002Fdesign-thinking","4.design\u002Fdesign-thinking",{"title":130,"path":147,"stem":148},"\u002Fdesign\u002Ftools","4.design\u002Ftools",{"title":150,"path":151,"stem":152,"children":153,"page":49},"Sales","\u002Fsales","4.sales",[154,158],{"title":155,"path":156,"stem":157},"Customer Onboarding","\u002Fsales\u002Fonboarding","4.sales\u002Fonboarding",{"title":159,"path":160,"stem":161},"Sales Tools","\u002Fsales\u002Ftools","4.sales\u002Ftools",{"title":163,"path":164,"stem":165,"children":166,"page":49},"Marketing","\u002Fmarketing","5.marketing",[167],{"title":168,"path":169,"stem":170},"Messaging","\u002Fmarketing\u002Fmessaging","5.marketing\u002Fmessaging",{"title":172,"path":173,"stem":174,"children":175,"page":49},"Data Ops","\u002Fdata-ops","6.data-ops",[176,185,189,193,197,201],{"title":177,"path":178,"stem":179,"children":180,"page":49},"Capability Exchange","\u002Fdata-ops\u002Fcapability-exchange","6.data-ops\u002FCapability Exchange",[181],{"title":182,"path":183,"stem":184},"Leaderboard Calculation","\u002Fdata-ops\u002Fcapability-exchange\u002Fleaderboard-calculation","6.data-ops\u002FCapability Exchange\u002Fleaderboard-calculation",{"title":186,"path":187,"stem":188},"Account Portal (CAS)","\u002Fdata-ops\u002Faccount-portal","6.data-ops\u002Faccount-portal",{"title":190,"path":191,"stem":192},"Adding Products","\u002Fdata-ops\u002Faddin-products","6.data-ops\u002Faddin-products",{"title":194,"path":195,"stem":196},"Adding Vendors","\u002Fdata-ops\u002Fadding-vendors","6.data-ops\u002Fadding-vendors",{"title":198,"path":199,"stem":200},"Message Queues","\u002Fdata-ops\u002Fmessage-queues","6.data-ops\u002Fmessage-queues",{"title":202,"path":203,"stem":204},"Refreshing Vendors","\u002Fdata-ops\u002Frefreshing-vendors","6.data-ops\u002Frefreshing-vendors",{"title":206,"path":207,"stem":208},"Glossary","\u002Fglossary","glossary",{"id":210,"title":194,"body":211,"description":704,"extension":716,"links":717,"meta":718,"navigation":719,"path":195,"seo":720,"stem":196,"__hash__":721},"docs\u002F6.data-ops\u002Fadding-vendors.md",{"type":212,"value":213,"toc":703},"minimark",[214,219,223,264,304,308,311,316,319,405,410,414,418,446,450,453,478,482,485,492,596,599,603,606,649,653,656,658,666,669],[215,216,218],"h2",{"id":217},"_1-manual-vendor-addition","1. Manual Vendor Addition",[220,221,222],"p",{},"To add a vendor manually to the system, follow these steps:",[224,225,226,241,251],"ol",{},[227,228,229,233,234,240],"li",{},[230,231,232],"strong",{},"Open the Workflow:"," Navigate to the ",[235,236,239],"a",{"href":237,"target":238},"https:\u002F\u002Fn8n.esp-prod:5678\u002Fworkflow\u002FUkCFvEimAe6WaLJK","_blank","n8n Manual Vendor Workflow",".",[227,242,243,246,247,250],{},[230,244,245],{},"Configure:"," Edit the ",[230,248,249],{},"Input fields"," with the necessary vendor details.",[227,252,253,256,257,260,261,240],{},[230,254,255],{},"Execute:"," Click ",[230,258,259],{},"Save",", then click ",[230,262,263],{},"Execute Workflow",[265,266,267,276],"blockquote",{},[220,268,269,272,273],{},[230,270,271],{},"Known Issue: Manual Logo & Banner Upload Required","\nDue to recent system changes, vendor logos are not automatically populated during the manual creation process.\n",[230,274,275],{},"Action Required:",[224,277,278,287,294],{},[227,279,280,281,240],{},"Approve the vendor from the ",[235,282,286],{"href":283,"rel":284},"https:\u002F\u002Fapi.esprofiler.com\u002Fcps\u002Fmanage\u002Finventory\u002Fvendors?tab=draft",[285],"nofollow","Draft Vendor Screen",[227,288,289,290,293],{},"Navigate to the ",[230,291,292],{},"Vendor Profile"," within the Vendor Portal.",[227,295,296,297,300,301,240],{},"Manually upload the ",[230,298,299],{},"LinkedIn logo"," and the ",[230,302,303],{},"company banner",[215,305,307],{"id":306},"_2-bright-data-n8n-pipeline","2. Bright Data N8n Pipeline",[220,309,310],{},"The Bright Data pipeline is our primary method for large-scale vendor discovery. We receive monthly exports of LinkedIn company data which include basic vendor information and enriched professional data. This pipeline identifies relevant cybersecurity vendors and automatically adds them to the platform.",[312,313,315],"h3",{"id":314},"phase-a-data-preparation","Phase A: Data Preparation",[220,317,318],{},"Before the data can be processed by n8n, it must be partitioned into smaller chunks for stability.",[224,320,321,332,346],{},[227,322,323,326,327,331],{},[230,324,325],{},"Download:"," Get the latest Bright Data export from the ",[235,328,330],{"href":329,"target":238},"https:\u002F\u002Feu-west-2.console.aws.amazon.com\u002Fs3\u002Fbuckets\u002Ffeeds.esprofiler.com?region=eu-west-2&prefix=brightdata\u002Fcybersecurity\u002F&showversions=false","S3 Feeds Bucket"," (Production Account).",[227,333,334,337,338,341,342,240],{},[230,335,336],{},"Upload:"," Move the downloaded file to the ",[230,339,340],{},"ESProfiler Development"," AWS S3 account at ",[343,344,345],"code",{},"s3:\u002F\u002Fesp-dev-bright-data\u002Fuploads\u002F",[227,347,348,351,352],{},[230,349,350],{},"Partition:"," Run the dedicated Lambda function to split the file into chunks (100 records per chunk).\n",[353,354,355,364,395],"ul",{},[227,356,357,360,361],{},[230,358,359],{},"Lambda ARN:"," ",[343,362,363],{},"arn:aws:lambda:eu-west-2:339713162929:function:test-bright-data-partition",[227,365,366,369],{},[230,367,368],{},"Execution:",[353,370,371,374,385,392],{},[227,372,373],{},"Navigate to the Lambda function in the AWS Dev Console.",[227,375,376,377,380,381,384],{},"Go to the ",[230,378,379],{},"Test"," section and select the ",[343,382,383],{},"bright_data_chunking"," test event.",[227,386,387,388,391],{},"Edit the JSON payload with the correct ",[343,389,390],{},"sourceKey"," (the path to your uploaded file).",[227,393,394],{},"Save and run the test.",[227,396,397,400,401,404],{},[230,398,399],{},"Critical Step:"," Record the ",[230,402,403],{},"total number of chunks"," generated. You will need this count to configure the n8n workflow in Phase B.",[406,407,409],"h4",{"id":408},"video-guide-chunking-bright-data","Video Guide: Chunking Bright Data",[411,412],"video-player",{"src":413},"https:\u002F\u002Fassets.esprofiler.com\u002Fvideos\u002Fhandbook\u002Fdata-ops-chunking-brightData.mp4",[406,415,417],{"id":416},"access-permissions","Access & Permissions",[265,419,420],{},[353,421,422,432],{},[227,423,424,427,428,431],{},[230,425,426],{},"Production S3:"," Requires IAM permissions for the feeds S3 bucket. Contact ",[230,429,430],{},"Louis"," to be added to the appropriate policy group.",[227,433,434,437,438,441,442,445],{},[230,435,436],{},"Dev S3 & Lambda:"," Contact ",[230,439,440],{},"Mohammad Umair"," (Account ID: ",[343,443,444],{},"3397-1316-2929",") for admin access to the Development account.",[312,447,449],{"id":448},"phase-b-automated-etl-sequence","Phase B: Automated ETL Sequence",[220,451,452],{},"Once the files are chunked, the processing is initiated within n8n.",[224,454,455,465],{},[227,456,457,460,461,464],{},[230,458,459],{},"Trigger Workflow:"," Open and run the ",[343,462,463],{},"brightdataTriggerEtlV3.0"," workflow.",[227,466,467,470,471,300,474,477],{},[230,468,469],{},"Manual Config:"," Manually update the ",[230,472,473],{},"File Name",[230,475,476],{},"Range of Files"," within the workflow based on the chunk count recorded in Phase A.",[406,479,481],{"id":480},"video-guide-running-the-etl-workflow","Video Guide: Running the ETL Workflow",[411,483],{"src":484},"https:\u002F\u002Fassets.esprofiler.com\u002Fvideos\u002Fhandbook\u002Fdata-ops-running-brightDataETL.mp4",[220,486,487,488,491],{},"The system then triggers the following sequence via ",[230,489,490],{},"RabbitMQ"," queues:",[493,494,495,515],"table",{},[496,497,498],"thead",{},[499,500,501,506,509,512],"tr",{},[502,503,505],"th",{"align":504},"left","Order",[502,507,508],{"align":504},"Workflow Name",[502,510,511],{"align":504},"Responsibility",[502,513,514],{"align":504},"n8n Link",[516,517,518,538,556,574],"tbody",{},[499,519,520,524,529,532],{},[521,522,523],"td",{"align":504},"1",[521,525,526],{"align":504},[343,527,528],{},"triggerBrightDataS3ExportV3.0",[521,530,531],{"align":504},"Reads chunks and performs keyword matching.",[521,533,534],{"align":504},[235,535,537],{"href":536,"target":238},"https:\u002F\u002Fn8n.esp-prod:5678\u002Fworkflow\u002F2TF9nU8SNxWYszzP","View Workflow",[499,539,540,543,548,551],{},[521,541,542],{"align":504},"2",[521,544,545],{"align":504},[343,546,547],{},"triggerBrightDataVendorRelevancyV2.0",[521,549,550],{"align":504},"Determines if the vendor is cybersecurity-relevant.",[521,552,553],{"align":504},[235,554,537],{"href":555,"target":238},"https:\u002F\u002Fn8n.esp-prod:5678\u002Fworkflow\u002FOhoy7gWYCTwUwKj5",[499,557,558,561,566,569],{},[521,559,560],{"align":504},"3",[521,562,563],{"align":504},[343,564,565],{},"triggerBrightDataVendorEnrichmentV2.0",[521,567,568],{"align":504},"Enriches data using LinkedIn records.",[521,570,571],{"align":504},[235,572,537],{"href":573,"target":238},"https:\u002F\u002Fn8n.esp-prod:5678\u002Fworkflow\u002F9YDIcDjagFZADNc4",[499,575,576,579,584,591],{},[521,577,578],{"align":504},"4",[521,580,581],{"align":504},[343,582,583],{},"triggerBrightDataVendorCreateV3.0",[521,585,586,587,590],{"align":504},"Adds validated vendors to the ",[230,588,589],{},"Draft Vendor"," table.",[521,592,593],{"align":504},[235,594,537],{"href":595,"target":238},"https:\u002F\u002Fn8n.esp-prod:5678\u002Fworkflow\u002Fq5tOKHD7UYbWZoul",[597,598],"hr",{},[312,600,602],{"id":601},"phase-c-final-approval","Phase C: Final Approval",[220,604,605],{},"Vendors identified by the pipeline must be manually reviewed before they are fully integrated.",[224,607,608,617,626,639],{},[227,609,610,613,614,240],{},[230,611,612],{},"Review:"," Log into the ",[230,615,616],{},"CPS Manage Space",[227,618,619,622,623,625],{},[230,620,621],{},"Navigate:"," Go to the ",[230,624,589],{}," space to see pending requests.",[227,627,628,631,632,635,636,240],{},[230,629,630],{},"Action:"," Review each record and either ",[230,633,634],{},"Approve"," or ",[230,637,638],{},"Reject",[227,640,641,644,645,648],{},[230,642,643],{},"Automatic Trigger:"," Once approved, the system sends a message to the ",[343,646,647],{},"draft.product.create"," bucket to begin product identification.",[406,650,652],{"id":651},"video-guide-reviewing-draft-vendors","Video Guide: Reviewing Draft Vendors",[411,654],{"src":655},"https:\u002F\u002Fassets.esprofiler.com\u002Fvideos\u002Fhandbook\u002Fdata-ops-review-draftvendors.mp4",[597,657],{},[215,659,661,662],{"id":660},"_3-product-creation-for-more-detail","3. Product Creation ",[235,663,665],{"href":664},"\u002Fdata-ops\u002Faddingproducts","For More Detail",[220,667,668],{},"The product creation pro ess is event-driven and begins automatically after a vendor is approved.",[224,670,671,681,687],{},[227,672,673,676,677,680],{},[230,674,675],{},"Trigger:"," A message is dropped into the ",[343,678,679],{},"dep.draft.product.create"," bucket.",[227,682,683,686],{},[230,684,685],{},"Processing:"," An n8n workflow identifies cybersecurity products, features, and use cases.",[227,688,689,692,693,696,697,696,700,240],{},[230,690,691],{},"Order of Execution:"," Entities are created in a strict hierarchy: ",[230,694,695],{},"Products"," → ",[230,698,699],{},"Features",[230,701,702],{},"Use Cases",{"title":704,"searchDepth":705,"depth":705,"links":706},"",2,[707,708,714],{"id":217,"depth":705,"text":218},{"id":306,"depth":705,"text":307,"children":709},[710,712,713],{"id":314,"depth":711,"text":315},3,{"id":448,"depth":711,"text":449},{"id":601,"depth":711,"text":602},{"id":660,"depth":705,"text":715},"3. Product Creation For More Detail","md",null,{},true,{"title":194,"description":704},"EWO-2hmcf8Uh4xfVseZyH3dgjSBuUSQ_lNzniGIQ5IY",[723,725],{"title":190,"path":191,"stem":192,"description":724,"children":-1},"Content to be added",{"title":198,"path":199,"stem":200,"description":704,"children":-1},1778263958792]