[{"data":1,"prerenderedAt":555},["ShallowReactive",2],{"navigation_docs":3,"-introduction":348,"-introduction-surround":552},[4,8,68,98,216,245,259,280,344],{"title":5,"path":6,"stem":7},"Introduction","\u002Fintroduction","0.introduction",{"title":9,"icon":10,"path":11,"stem":12,"children":13,"page":63},"Company","i-lucide-building-2","\u002Fcompany","1.company",[14,18,22,26,30,34,38,42,46,50,64],{"title":15,"path":16,"stem":17},"About","\u002Fcompany\u002Fabout","1.company\u002F0.about",{"title":19,"path":20,"stem":21},"Values","\u002Fcompany\u002Fvalues","1.company\u002F1.values",{"title":23,"path":24,"stem":25},"Communication","\u002Fcompany\u002Fcommunication","1.company\u002Fcommunication",{"title":27,"path":28,"stem":29},"Competition","\u002Fcompany\u002Fcompetition","1.company\u002Fcompetition",{"title":31,"path":32,"stem":33},"Hybrid Working","\u002Fcompany\u002Fhybrid-working","1.company\u002Fhybrid-working",{"title":35,"path":36,"stem":37},"Manchester Office","\u002Fcompany\u002Foffice","1.company\u002Foffice",{"title":39,"path":40,"stem":41},"Operations","\u002Fcompany\u002Foperations","1.company\u002Foperations",{"title":43,"path":44,"stem":45},"Policies","\u002Fcompany\u002Fpolicies","1.company\u002Fpolicies",{"title":47,"path":48,"stem":49},"Product Strategy","\u002Fcompany\u002Fproduct-strategy","1.company\u002Fproduct-strategy",{"title":51,"path":52,"stem":53,"children":54,"page":63},"Products","\u002Fcompany\u002Fproducts","1.company\u002Fproducts",[55,59],{"title":56,"path":57,"stem":58},"Capability Exchange","\u002Fcompany\u002Fproducts\u002Fcapability-exchange","1.company\u002Fproducts\u002Fcapability-exchange",{"title":60,"path":61,"stem":62},"ESProfiler Platform","\u002Fcompany\u002Fproducts\u002Fesprofiler","1.company\u002Fproducts\u002Fesprofiler",false,{"title":65,"path":66,"stem":67},"Security","\u002Fcompany\u002Fsecurity","1.company\u002Fsecurity",{"title":69,"icon":70,"path":71,"stem":72,"children":73,"page":63},"People Ops","i-lucide-users","\u002Fpeople-ops","2.people-ops",[74,78,82,86,90,94],{"title":75,"path":76,"stem":77},"Compensation","\u002Fpeople-ops\u002Fcompensation","2.people-ops\u002Fcompensation",{"title":79,"path":80,"stem":81},"Education","\u002Fpeople-ops\u002Feducation","2.people-ops\u002Feducation",{"title":83,"path":84,"stem":85},"Expenses","\u002Fpeople-ops\u002Fexpenses","2.people-ops\u002Fexpenses",{"title":87,"path":88,"stem":89},"Holiday & Leave","\u002Fpeople-ops\u002Fleave","2.people-ops\u002Fleave",{"title":91,"path":92,"stem":93},"Onboarding","\u002Fpeople-ops\u002Fonboarding","2.people-ops\u002Fonboarding",{"title":95,"path":96,"stem":97},"Recruitment","\u002Fpeople-ops\u002Frecruitment","2.people-ops\u002Frecruitment",{"title":99,"icon":100,"path":101,"stem":102,"children":103,"page":63},"Engineering","i-lucide-rocket","\u002Fengineering","3.engineering",[104,147,151,171,192,196,204,208,212],{"title":105,"path":106,"stem":107,"children":108,"page":63},"Contributing","\u002Fengineering\u002Fcontributing","3.engineering\u002Fcontributing",[109,113,117,121,125,138],{"title":110,"path":111,"stem":112},"Development Setup","\u002Fengineering\u002Fcontributing\u002Fdevelopment-setup","3.engineering\u002Fcontributing\u002F1.development-setup",{"title":114,"path":115,"stem":116},"Engineering Operations","\u002Fengineering\u002Fcontributing\u002Fengineering-operations","3.engineering\u002Fcontributing\u002F2.engineering-operations",{"title":118,"path":119,"stem":120},"Documentation","\u002Fengineering\u002Fcontributing\u002Fdocumentation","3.engineering\u002Fcontributing\u002F3.documentation",{"title":122,"path":123,"stem":124},"Agentic Coding","\u002Fengineering\u002Fcontributing\u002Fagentic-coding","3.engineering\u002Fcontributing\u002Fagentic-coding",{"title":126,"path":127,"stem":128,"children":129,"page":63},"Back End","\u002Fengineering\u002Fcontributing\u002Fback-end","3.engineering\u002Fcontributing\u002Fback-end",[130,134],{"title":131,"path":132,"stem":133},"API Guidelines","\u002Fengineering\u002Fcontributing\u002Fback-end\u002Fapi-guidelines","3.engineering\u002Fcontributing\u002Fback-end\u002Fapi-guidelines",{"title":135,"path":136,"stem":137},"LLM Prompts & Langfuse Integration","\u002Fengineering\u002Fcontributing\u002Fback-end\u002Fllm-prompts","3.engineering\u002Fcontributing\u002Fback-end\u002Fllm-prompts",{"title":139,"path":140,"stem":141,"children":142,"page":63},"Front End","\u002Fengineering\u002Fcontributing\u002Ffront-end","3.engineering\u002Fcontributing\u002Ffront-end",[143],{"title":144,"path":145,"stem":146},"Testing","\u002Fengineering\u002Fcontributing\u002Ffront-end\u002Ftesting","3.engineering\u002Fcontributing\u002Ffront-end\u002Ftesting",{"title":148,"path":149,"stem":150},"Production Database","\u002Fengineering\u002Fdatabase-connection","3.engineering\u002Fdatabase-connection",{"title":152,"path":153,"stem":154,"children":155},"Deployment","\u002Fengineering\u002Fdeployment","3.engineering\u002Fdeployment",[156,159,163,167],{"title":56,"path":157,"stem":158},"\u002Fengineering\u002Fdeployment\u002Fcapability-exchange","3.engineering\u002Fdeployment\u002Fcapability-exchange",{"title":160,"path":161,"stem":162},"Langfuse Deployment","\u002Fengineering\u002Fdeployment\u002Fecs-langfuse-deployment","3.engineering\u002Fdeployment\u002Fecs-langfuse-deployment",{"title":164,"path":165,"stem":166},"ESP Platform Configuration","\u002Fengineering\u002Fdeployment\u002Fesp-platform-configuration","3.engineering\u002Fdeployment\u002Fesp-platform-configuration",{"title":168,"path":169,"stem":170},"Platform","\u002Fengineering\u002Fdeployment\u002Fplatform","3.engineering\u002Fdeployment\u002Fplatform",{"title":172,"path":173,"stem":174,"children":175,"page":63},"Github","\u002Fengineering\u002Fgithub","3.engineering\u002Fgithub",[176,180,184,188],{"title":177,"path":178,"stem":179},"Packages","\u002Fengineering\u002Fgithub\u002Fpackages","3.engineering\u002Fgithub\u002Fpackages",{"title":181,"path":182,"stem":183},"Personal Access Token","\u002Fengineering\u002Fgithub\u002Fpersonal-access-token","3.engineering\u002Fgithub\u002Fpersonal-access-token",{"title":185,"path":186,"stem":187},"Troubleshooting","\u002Fengineering\u002Fgithub\u002Ftroubleshooting","3.engineering\u002Fgithub\u002Ftroubleshooting",{"title":189,"path":190,"stem":191},"Workflows","\u002Fengineering\u002Fgithub\u002Fworkflows","3.engineering\u002Fgithub\u002Fworkflows",{"title":193,"path":194,"stem":195},"Platform Ops","\u002Fengineering\u002Fplatform-ops","3.engineering\u002Fplatform-ops",{"title":168,"path":197,"stem":198,"children":199,"page":63},"\u002Fengineering\u002Fplatform","3.engineering\u002Fplatform",[200],{"title":201,"path":202,"stem":203},"useAPI","\u002Fengineering\u002Fplatform\u002Fuse-api","3.engineering\u002Fplatform\u002Fuse-api",{"title":205,"path":206,"stem":207},"Project Management","\u002Fengineering\u002Fproject-management","3.engineering\u002Fproject-management",{"title":209,"path":210,"stem":211},"Releases","\u002Fengineering\u002Frelease","3.engineering\u002Frelease",{"title":213,"path":214,"stem":215},"Tools","\u002Fengineering\u002Ftools","3.engineering\u002Ftools",{"title":217,"icon":218,"path":219,"stem":220,"children":221,"page":63},"Design","i-lucide-palette","\u002Fdesign","4.design",[222,226,230,234,238,241],{"title":223,"path":224,"stem":225},"Design Thinking","\u002Fdesign\u002Fdesign-thinking","4.design\u002F1.design-thinking",{"title":227,"path":228,"stem":229},"Figma","\u002Fdesign\u002Ffigma-structure","4.design\u002F2.figma-structure",{"title":231,"path":232,"stem":233},"Design & Development","\u002Fdesign\u002Fdesign-and-development","4.design\u002F3.design-and-development",{"title":235,"path":236,"stem":237},"Branding","\u002Fdesign\u002Fbranding","4.design\u002F4.branding",{"title":213,"path":239,"stem":240},"\u002Fdesign\u002Ftools","4.design\u002F5.tools",{"title":242,"path":243,"stem":244},"Customer Success","\u002Fdesign\u002Fworking-with-customers","4.design\u002F6.working-with-customers",{"title":246,"icon":247,"path":248,"stem":249,"children":250,"page":63},"Sales","i-lucide-dollar-sign","\u002Fsales","4.sales",[251,255],{"title":252,"path":253,"stem":254},"Customer Onboarding","\u002Fsales\u002Fonboarding","4.sales\u002Fonboarding",{"title":256,"path":257,"stem":258},"Sales Tools","\u002Fsales\u002Ftools","4.sales\u002Ftools",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":63},"Marketing","i-lucide-book-image","\u002Fmarketing","5.marketing",[265,269,273,276],{"title":266,"path":267,"stem":268},"Content","\u002Fmarketing\u002Fcontent","5.marketing\u002Fcontent",{"title":270,"path":271,"stem":272},"Messaging","\u002Fmarketing\u002Fmessaging","5.marketing\u002Fmessaging",{"title":213,"path":274,"stem":275},"\u002Fmarketing\u002Ftools","5.marketing\u002Ftools",{"title":277,"path":278,"stem":279},"Website","\u002Fmarketing\u002Fwebsite","5.marketing\u002Fwebsite",{"title":281,"icon":282,"path":283,"stem":284,"children":285,"page":63},"AI & Data Ops","i-lucide-database","\u002Fdata-ops","6.data-ops",[286,294,298,323,340],{"title":56,"path":287,"stem":288,"children":289,"page":63},"\u002Fdata-ops\u002Fcapability-exchange","6.data-ops\u002FCapability Exchange",[290],{"title":291,"path":292,"stem":293},"Leaderboard Calculation","\u002Fdata-ops\u002Fcapability-exchange\u002Fleaderboard-calculation","6.data-ops\u002FCapability Exchange\u002Fleaderboard-calculation",{"title":295,"path":296,"stem":297},"Account Portal (CAS)","\u002Fdata-ops\u002Faccount-portal","6.data-ops\u002Faccount-portal",{"title":299,"path":300,"stem":301,"children":302,"page":63},"Data Management","\u002Fdata-ops\u002Fdata-management","6.data-ops\u002Fdata-management",[303,307,311,315,319],{"title":304,"path":305,"stem":306},"Adding Products","\u002Fdata-ops\u002Fdata-management\u002Fadding-products","6.data-ops\u002Fdata-management\u002Fadding-products",{"title":308,"path":309,"stem":310},"Adding Vendors","\u002Fdata-ops\u002Fdata-management\u002Fadding-vendors","6.data-ops\u002Fdata-management\u002Fadding-vendors",{"title":312,"path":313,"stem":314},"Framework Mapping","\u002Fdata-ops\u002Fdata-management\u002Fframework-mapping","6.data-ops\u002Fdata-management\u002Fframework-mapping",{"title":316,"path":317,"stem":318},"Refreshing Vendors","\u002Fdata-ops\u002Fdata-management\u002Frefreshing-vendors","6.data-ops\u002Fdata-management\u002Frefreshing-vendors",{"title":320,"path":321,"stem":322},"Reviewing Draft Vendors","\u002Fdata-ops\u002Fdata-management\u002Freviewing-draft-vendors","6.data-ops\u002Fdata-management\u002Freviewing-draft-vendors",{"title":324,"path":325,"stem":326,"children":327,"page":63},"LLM Ops","\u002Fdata-ops\u002Fllm-ops","6.data-ops\u002Fllm-ops",[328,332,336],{"title":329,"path":330,"stem":331},"Agents","\u002Fdata-ops\u002Fllm-ops\u002Fagents","6.data-ops\u002Fllm-ops\u002F1.agents",{"title":333,"path":334,"stem":335},"ESPi Architecture & Query Flow","\u002Fdata-ops\u002Fllm-ops\u002Fespi-architecture","6.data-ops\u002Fllm-ops\u002F2.espi-architecture",{"title":337,"path":338,"stem":339},"Evaluating Agents","\u002Fdata-ops\u002Fllm-ops\u002Fevaluations","6.data-ops\u002Fllm-ops\u002F3.evaluations",{"title":341,"path":342,"stem":343},"Message Queues","\u002Fdata-ops\u002Fmessage-queues","6.data-ops\u002Fmessage-queues",{"title":345,"path":346,"stem":347},"Glossary","\u002Fglossary","glossary",{"id":349,"title":5,"body":350,"description":461,"extension":546,"links":547,"meta":548,"navigation":549,"path":6,"seo":550,"stem":7,"__hash__":551},"docs\u002F0.introduction.md",{"type":351,"value":352,"toc":535},"minimark",[353,357,362,379,382,385,389,392,396,403,406,435,438,447,452,455,472,476,479,484,487,508,519,522,531],[354,355,356],"p",{},"At ESProfiler we are a team, we work together collectively to provide the best possible\nservice to all of our customers without exception, our aim is to change the cyber\nsecurity landscape in the 21st Century, and to do that we have to work together, take\npride in everything we all do, and help each other to achieve our collective goal.",[358,359,361],"h2",{"id":360},"about-the-handbook","About the Handbook",[354,363,364,365,372,373,378],{},"The ESProfiler handbook is inspired by the ",[366,367,371],"a",{"href":368,"rel":369},"https:\u002F\u002Fhandbook.gitlab.com\u002F",[370],"nofollow","GitLab handbook",". As a hybrid company, we share their ",[366,374,377],{"href":375,"rel":376},"https:\u002F\u002Fhandbook.gitlab.com\u002Fhandbook\u002Fabout\u002F#advantages",[370],"rationale"," for having a handbook.",[354,380,381],{},"The aim is to avoid institutional knowledge building up inside our heads without also being written down for others to share. We could do that all on the internal Google Drive or Confluence, but by publishing in the handbook it allows for an open and honest conversation about what we do and how we operate.",[354,383,384],{},"Our handbook is more than just a collection of policies; it is the living embodiment of our core values. We believe that documenting our work and culture is essential to our success, and this handbook is how we put our values into practice every single day.",[358,386,388],{"id":387},"internal-information","Internal information",[354,390,391],{},"Whilst instinctively we want to be open in all we do, there will inevitably be content that is not appropriate to make public. That content is not shared in this handbook.",[358,393,395],{"id":394},"handbook-first","Handbook-first",[354,397,398,399,402],{},"Being ",[400,401,394],"em",{}," means that our handbook is not a static document we update after a decision is made. It is the very place where our proposals and discussions happen. We believe that this approach is the most effective way to live our values and ensure that our communication is clear, efficient, and transparent.",[354,404,405],{},"Instead of starting a discussion on Google Chat or in a meeting, we start it in the handbook. Here’s how we do it:",[407,408,409,417,423,429],"ul",{},[410,411,412,416],"li",{},[413,414,415],"strong",{},"Start with a Proposal, not a Chat:"," When you have an idea for a new process, a change to an existing one, or a solution to a problem, you don't send a message on Google Chat. You create a proposal directly in the handbook. This proposal is a merge request that includes your suggested changes, allowing everyone to see and comment on the content directly. This ensures the full context of a discussion is preserved and universally accessible.",[410,418,419,422],{},[413,420,421],{},"Integrate Discussion and Documentation:"," The discussion about your proposal happens right there in the merge request. Team members can provide feedback, ask questions, and suggest edits. This allows us to disagree and commit in a transparent way. Once a consensus is reached or a decision is made, the final version is merged into the handbook, and the entire discussion trail is saved for future reference.",[410,424,425,428],{},[413,426,427],{},"Empower Everyone to Contribute:"," This system allows anyone at ESProfiler—from a new hire to a senior leader—to contribute directly to our company's culture and processes. It generates a shared responsibility to maintain the pace of documentation through a pay-it-forward mentality. The history of every change is visible, showing how learning happens and how iteration shapes proposals.",[410,430,431,434],{},[413,432,433],{},"Eliminate Wasted Effort:"," By making the handbook the hub of our collaborative work, we ensure that the information we need is always where it should be. This prevents us from having to document something after the fact—a step that is often skipped—and avoids the \"torturous pattern of people pinging people for updates\". This is how we prioritize results and stay focused on what matters.",[358,436,105],{"id":437},"contributing",[354,439,440,441,446],{},"We encourage everyone to contribute to the handbook. If you see something that could be improved or something missing, please feel free to open a pull request. You can find the handbook repository ",[366,442,445],{"href":443,"rel":444},"https:\u002F\u002Fgithub.com\u002FES-Profiler\u002Fhandbook",[370],"here",".",[448,449,451],"h3",{"id":450},"images","Images",[354,453,454],{},"If you are uploading images to the handbook, then they can be directly uploaded into the repository. You can show images in markdown using the following syntax:",[456,457,462],"pre",{"className":458,"code":459,"language":460,"meta":461,"style":461},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","![Image Description](path\u002Fto\u002Fimage.jpg)\n","markdown","",[463,464,465],"code",{"__ignoreMap":461},[466,467,470],"span",{"class":468,"line":469},"line",1,[466,471,459],{},[448,473,475],{"id":474},"videos","Videos",[354,477,478],{},"If you are uploading videos to the handbook, then they can be uploaded to our AWS S3 bucket. You will need to send your video to someone in the team with AWS S3 access to upload it for you.",[480,481,483],"h4",{"id":482},"uploading-videos-to-aws-s3","Uploading videos to AWS S3",[354,485,486],{},"Only employees with administrator access to AWS can upload videos to the S3 bucket.",[488,489,490,493,496,499,502,505],"ol",{},[410,491,492],{},"Access AWS via the \"AWS Console\" link in the Island Browser quick navigation (open a new tab and you'll see it listed in \"Secure Workspace\").",[410,494,495],{},"Select the \"ESProfiler\" organisation and \"AdministratorAccess\"",[410,497,498],{},"Navigate to \"S3\".",[410,500,501],{},"Select the \"assets.esprofiler.com\" bucket.",[410,503,504],{},"Choose the \"videos\u002Fhandbook\" folder.",[410,506,507],{},"Click \"Upload\" and upload the video here",[354,509,510,511,514],{},"Once uploaded, select the file and then extract the latter part of the \"Object URL\" to use in the markdown, e.g. ",[463,512,513],{},"Object URL https:\u002F\u002Fs3.eu-west-2.amazonaws.com\u002Fassets.esprofiler.com\u002Fvideos\u002Fhandbook\u002Fmy-video.mp4`` becomes ",[366,515,518],{"href":516,"rel":517},"https:\u002F\u002Fassets.esprofiler.com\u002Fvideos\u002Fhandbook\u002Fmy-video.mp4%60",[370],"https:\u002F\u002Fassets.esprofiler.com\u002Fvideos\u002Fhandbook\u002Fmy-video.mp4`",[354,520,521],{},"To then include this video in the handbook, you can use the following markdown:",[456,523,525],{"className":458,"code":524,"language":460,"meta":461,"style":461},"![Video Title](https:\u002F\u002Fassets.esprofiler.com\u002Fvideos\u002Fhandbook\u002Fmy-video.mp4)\n",[463,526,527],{"__ignoreMap":461},[466,528,529],{"class":468,"line":469},[466,530,524],{},[532,533,534],"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);}",{"title":461,"searchDepth":536,"depth":536,"links":537},2,[538,539,540,541],{"id":360,"depth":536,"text":361},{"id":387,"depth":536,"text":388},{"id":394,"depth":536,"text":395},{"id":437,"depth":536,"text":105,"children":542},[543,545],{"id":450,"depth":544,"text":451},3,{"id":474,"depth":544,"text":475},"md",null,{},true,{"title":5,"description":461},"erAZoNDEmvXgKODHBZ2eJ4HHByGDnIaaNYL4tpZ2kKI",[547,553],{"title":15,"path":16,"stem":17,"description":554,"children":-1},"A high-level overview of ESProfiler.",1789726606042]