[{"data":1,"prerenderedAt":178},["ShallowReactive",2],{"{\"resolve_links\":\"url\",\"resolve_relations\":\"case_list.cases,timeline.roles,role.cases,move.proof\",\"version\":\"published\"}work\u002Ftubr":3,"datasource:disciplines":169},{"data":4,"headers":147},{"story":5,"cv":144,"rels":145,"links":146},{"name":6,"created_at":7,"published_at":8,"updated_at":9,"id":10,"uuid":11,"content":12,"slug":133,"full_slug":134,"sort_by_date":135,"position":136,"tag_list":137,"is_startpage":138,"parent_id":139,"meta_data":135,"group_id":140,"first_published_at":141,"release_id":135,"lang":142,"path":135,"alternates":143,"default_full_slug":135,"translated_slugs":135},"Tubr","2026-10-15T13:38:59.685Z","2026-10-15T13:44:27.347Z","2026-10-15T13:44:27.363Z",230940424982289,"846b44ab-e8dd-467d-a4c1-316c5fdd10df",{"_uid":13,"body":14,"role":118,"asked":119,"title":6,"accent":120,"client":6,"period":121,"sector":122,"summary":123,"actually":124,"component":125,"disciplines":126,"outcome_label":131,"outcome_figure":131,"seo_description":132},"97a4b90b-3af2-41cf-99ea-5c6cd6fcf1e5",[15,36,59,78,104],{"_uid":16,"items":17,"component":35},"3b85feae-e3f2-42f1-b47e-e2d882819b50",[18,23,27,31],{"_uid":19,"label":20,"value":21,"component":22},"ac4801eb-af74-49ee-aa7a-7348a8f25dab","Role","Fractional CPO","spec",{"_uid":24,"label":25,"value":26,"component":22},"1ece08b9-36c6-497d-8729-4b611f966d68","Team","Lead data scientist, ML engineer",{"_uid":28,"label":29,"value":30,"component":22},"250cf86e-296c-431d-bc7c-b245fc27520d","Since","February 2026",{"_uid":32,"label":33,"value":34,"component":22},"a8642927-c5b3-4c1e-bc62-3e6f396ea068","Status","Working towards launch","context_strip",{"_uid":37,"text":38,"component":58},"76abe35f-ed1c-4daf-adff-6cbeaf4d5dce",{"type":39,"content":40},"doc",[41,49,54],{"type":42,"attrs":43,"content":45},"heading",{"level":44},2,[46],{"text":47,"type":48},"Chat-first to glance-first","text",{"type":50,"content":51},"paragraph",[52],{"text":53,"type":48},"The app started as a chat interface. Ask it about your week and it would tell you. I spent a lot of time talking to people who work in hospitality, and the picture was consistent: a manager with one eye on the kitchen and one ear on the floor doesn't want to start a conversation with an app. They want to look at it and know.",{"type":50,"content":55},[56],{"text":57,"type":48},"So I made the call to rebuild it around a dashboard fed by insights. They arrive, you scan them. People can comment on forecasts and come back later to see what actually happened, so the feed becomes a record of the business rather than a stream that scrolls away.","rich_text",{"_uid":60,"heading":61,"options":62,"component":77},"8154a5f6-322e-4b1c-a780-491b0cfcab0b","How to show forecasts for local events",[63,68,72],{"_uid":64,"text":65,"title":66,"component":67},"fc8968c7-ccea-4be7-842e-ba3f0f6d5e39","What the model produces. But a predicted £3 contribution invites false confidence, and events rarely repeat exactly.","Money per event","option_card",{"_uid":69,"text":70,"title":71,"component":67},"39a65144-1eed-4271-ac25-835bd4e744a8","Safe, but it throws away a signal operators genuinely care about.","Leave events out",{"_uid":73,"text":74,"title":75,"chosen":76,"component":67},"fe946a39-6bac-4cc1-b32a-ef969766e63e","Summarise what's happening nearby as busier or quieter. Closer to how operators already think about their patch.","The local scene",true,"options_compare",{"_uid":79,"text":80,"component":58},"4fffe218-4795-4ef5-b93e-9c11d68aab7c",{"type":39,"content":81},[82,87,91,96,100],{"type":42,"attrs":83,"content":84},{"level":44},[85],{"text":86,"type":48},"Under the hood",{"type":50,"content":88},[89],{"text":90,"type":48},"I designed the data model for the insight feed. It's multi-tenant across companies and outlets, with visibility resolved by user, role, outlet and company. Each person's state lives apart from the generated content, so regenerating a forecast can't wipe out someone's comments.",{"type":42,"attrs":92,"content":93},{"level":44},[94],{"text":95,"type":48},"Making a small team faster",{"type":50,"content":97},[98],{"text":99,"type":48},"When I arrived, deploying infrastructure meant running Terraform from someone's laptop. The newer parts of the stack now build from pull requests, each with its own preview environment that tears itself down after seven days if it isn't merged.",{"type":50,"content":101},[102],{"text":103,"type":48},"I've moved the team onto AI-native ways of working: agentic workflows for parallel development and bug fixing, Linear tickets raised from Slack, and PostHog usage stats asked for in plain English. Less context switching, more shipping.",{"_uid":105,"text":106,"heading":116,"component":117},"537b881c-1074-4cd0-b0af-fda03df0ba56",{"type":39,"content":107},[108,112],{"type":50,"content":109},[110],{"text":111,"type":48},"I haven't shown yet that any of this helps operators make better decisions. That's the next job, and it's why the app is instrumented.",{"type":50,"content":113},[114],{"text":115,"type":48},"The local scene view also has to stay honest about the model underneath it. Nearby events can draw trade away as well as bring it in, and a summary like 'busier' has to carry that uncertainty rather than smooth it over. That's the bit I'm working on now.","What I haven't proved yet","reflection","Fractional Chief Product Officer","Keep building the chat-first app over the forecasting models.","bar","2026 to now","Hospitality forecasting","Tubr uses machine learning to forecast trade for hospitality businesses. I lead product and a small data team, and I ship code. The two calls I'd defend hardest: moving the app from chat-first to a dashboard feed, and replacing precise event forecasts with a broader picture of the local scene.","Hospitality operators don't have time to ask an app questions. They want to glance at what's coming and get back to service. And a forecast that says an event is worth £3 to you isn't information, it's noise.","case_study",[127,128,129,130],"product-direction","data-ux","engineering","leadership","","Product leadership at Tubr: turning ML forecasts into something a hospitality manager can read at a glance, and making a small team faster.","tubr","work\u002Ftubr",null,-40,[],false,230940080752588,"811339ef-26ad-483a-9874-eb8fd48f82a3","2026-10-15T13:38:59.765Z","default",[],1792072709,[],[],{"cache-control":148,"connection":149,"content-encoding":150,"content-type":151,"date":152,"etag":153,"referrer-policy":154,"sb-be-version":155,"server":156,"transfer-encoding":157,"vary":158,"via":159,"x-amz-cf-id":160,"x-amz-cf-pop":161,"x-cache":162,"x-content-type-options":163,"x-frame-options":164,"x-permitted-cross-domain-policies":165,"x-request-id":166,"x-runtime":167,"x-xss-protection":168},"max-age=0, public, s-maxage=604800, stale-if-error=3600","keep-alive","gzip","application\u002Fjson; charset=utf-8","Thu, 15 Oct 2026 13:59:06 GMT","W\u002F\"ed72d79a7befec06bae4bc365bc2b56b\"","strict-origin-when-cross-origin","5.980.1","nginx\u002F1.29.1","chunked","Origin,Accept-Encoding","1.1 deef642c5ef65e4b94c85ecbbbc16d34.cloudfront.net (CloudFront)","-3df4qPB9sHUSMyrxJXBXmhdGYYVys06i2PjhH5hpXKffxyIdlL4eA==","MIA50-P7","Miss from cloudfront","nosniff","SAMEORIGIN","none","cd6484ac-27ac-423e-bce1-2caf1a62da2f","0.025423","0",{"discovery":170,"service-design":171,"product-direction":172,"facilitation":173,"front-end":174,"engineering":175,"leadership":176,"data-ux":177},"Discovery","Service design","Product direction","Facilitation","Front end","Engineering","Leadership","Data UX",1792072745633]