[{"data":1,"prerenderedAt":370},["ShallowReactive",2],{"navigation_docs":3,"-engineering-platform-ops":209,"-engineering-platform-ops-surround":365},[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":118,"body":211,"description":358,"extension":359,"links":360,"meta":361,"navigation":362,"path":119,"seo":363,"stem":120,"__hash__":364},"docs\u002F3.engineering\u002Fplatform-ops.md",{"type":212,"value":213,"toc":350},"minimark",[214,219,224,235,250,259,264,272,305,309,324,327],[215,216,218],"h2",{"id":217},"production-logs","Production Logs",[220,221,223],"h3",{"id":222},"posthog","PostHog",[225,226,227,228,234],"p",{},"We use ",[229,230,223],"a",{"href":231,"rel":232},"https:\u002F\u002Feu.posthog.com\u002Fproject\u002F118187",[233],"nofollow"," to track product usage across the platform. We use PostHog's \"Autocapture\" feature to capture product interaction, as well as emitting specific events from our backend to PostHog such as:",[236,237,238,245],"ul",{},[239,240,241],"li",{},[242,243,244],"code",{},"esp-capability-mapping-requested",[239,246,247],{},[242,248,249],{},"espi-message",[225,251,252,253,258],{},"You can view ",[229,254,257],{"href":255,"rel":256},"https:\u002F\u002Feu.posthog.com\u002Fproject\u002F118187\u002Factivity\u002Fexplore",[233],"PostHog Activity"," to see a raw list of all events captured.",[260,261,263],"h4",{"id":262},"posthog-actions","PostHog Actions",[225,265,266,267,271],{},"We can classify our self-defined events and autocapture  classified as ",[229,268,263],{"href":269,"rel":270},"https:\u002F\u002Feu.posthog.com\u002Fproject\u002F118187\u002Fdata-management\u002Factions",[233],", where you can select user interactions in the form of explicit events or other behaviours. The benefit here is that you might have multiple events (that occur in different parts of the application) that all classify as the same \"Action\". Examples of a PostHog action include:",[236,273,274,281,287,293,299],{},[239,275,276,280],{},[277,278,279],"strong",{},"Auth: Platform Login"," - Tracks when a user has logged into the platform.",[239,282,283,286],{},[277,284,285],{},"User Task: Create Task"," - Tracks when a user has created a new user task.",[239,288,289,292],{},[277,290,291],{},"ESPi: New Message"," - Tracks when a user has sent a message to ESPi.",[239,294,295,298],{},[277,296,297],{},"Portfolio: Map Capabilities"," - Tracks when a user has triggered a new mapping process for their portfolio.",[239,300,301,304],{},[277,302,303],{},"Agent Task: Start Task"," - Tracks when a user has started a new deep research\u002Fagent task.",[260,306,308],{"id":307},"integrations-posthog-destinations","Integrations: PostHog Destinations",[225,310,311,312,317,318,323],{},"We setup ",[229,313,316],{"href":314,"rel":315},"https:\u002F\u002Feu.posthog.com\u002Fproject\u002F118187\u002Fdata-management\u002Fdestinations",[233],"PostHog Destinations"," to automatically funnel events from PostHog out to other resources. We use Slack primarily here and report into the ",[229,319,322],{"href":320,"rel":321},"https:\u002F\u002Fesprofiler.slack.com\u002Farchives\u002FC0ANWSPAVEV",[233],"#ops-production"," channel.",[225,325,326],{},"If you want to start recording new events in Slack, add a new Destination. You can then define which events which you want to feed to the destination and the message format that is sent to Slack too. It is advised to follow conventions:",[236,328,329,338,344],{},[239,330,331,334,335],{},[277,332,333],{},"Bot Name:"," ",[242,336,337],{},"PostHog: Platform Ops",[239,339,340,343],{},[277,341,342],{},"Emoji Icon:"," Use an appropriate emoji that differentiates it from other event types.",[239,345,346,349],{},[277,347,348],{},"Trigger Options:"," This can be a useful tool to limit the notification traffic going into Slack. You can choose whether every action\u002Fevent triggers a message, or set intervals\u002Flimits, e.g. sending a notification just when a user sends their first ESPi message, rather than every message.",{"title":351,"searchDepth":352,"depth":352,"links":353},"",2,[354],{"id":217,"depth":352,"text":218,"children":355},[356],{"id":222,"depth":357,"text":223},3,"Eveyrthing you need to know about observability of ESProfiler, as well as reporting and handling issues as they arise with infrastructure and hosting.","md",null,{},true,{"title":118,"description":358},"xcST-Zc15lfjQ2yr3SyeTnVDyFjtFgrTDDmKNhRDf1w",[366,368],{"title":114,"path":115,"stem":116,"description":367,"children":-1},"Reusable and centralised GitHub Actions workflows used across ESProfiler repositories.",{"title":122,"path":123,"stem":124,"description":369,"children":-1},"A comprehensive overview of project management processes and procedures that guide product development at ESProfiler.",1778263960966]