[{"_1":2},"routes/case-study",{"_3":4},"data",{"_5":6,"_7":8,"_9":10,"_11":12},"unlocked",false,"pub",{"_16":437,"_18":131,"_20":438,"_22":439,"_24":440,"_26":530,"_28":442,"_33":444,"_35":445,"_37":-7,"_39":40,"_41":531,"_532":533,"_534":535,"_536":537,"_538":539,"_540":541,"_542":543,"_544":-7,"_545":546,"_547":548,"_549":550,"_551":552},"meta",{"_16":437,"_18":131,"_20":438,"_22":439,"_24":440,"_26":441,"_28":442,"_30":437,"_31":443,"_33":444,"_35":445,"_39":40,"_41":446,"_43":44,"_47":447},"more",[13,14,15],{"_16":306,"_18":116,"_20":307,"_22":23,"_24":308,"_26":309,"_28":203,"_204":310,"_31":311,"_33":312,"_35":313,"_39":40,"_41":314,"_43":315,"_47":316},{"_16":198,"_18":97,"_20":199,"_22":200,"_24":201,"_26":202,"_28":203,"_204":205,"_206":207,"_31":208,"_33":209,"_35":210,"_39":211,"_41":212,"_47":213},{"_16":17,"_18":19,"_20":21,"_22":23,"_24":25,"_26":27,"_28":29,"_30":17,"_31":32,"_33":34,"_35":36,"_37":38,"_39":40,"_41":42,"_43":44,"_45":46,"_47":48},"slug","goals","order","01","title","Goals: designing a state system, not a feature","client","Toggl 2.0","discipline","Product design · 0→1, sole designer","tags",[195,196,197],"cover","orbits","story","logo",{"_82":191,"_84":192,"_86":23,"_88":193,"_90":194},"accent","#936900","accentBright","#E4AC21","accentLarge","#B88400","accentInk","#FFFFFF","cardSummary","A goal-tracking feature for Toggl 2.0, where the real design problem wasn’t the layout — it was what a goal’s state means when users can still edit the past.","lockNote","Shipped client work. The write-up quotes production outcomes, so it's shared on request rather than published.","pill",{"_20":189,"_76":190},"head",{"_49":50,"_51":52,"_53":54,"_20":55,"_56":57,"_58":59,"_60":61,"_62":63},"carriesEvidence",true,"context","Goals · Toggl 2.0 · Web app","eyebrow","From design handoff to staging in 2 working days.","I didn’t prototype the screens.\nI prototyped the product.","lede","I took Goals from research to a complete, working experience in code — exploring behaviour, states and edge cases before development. The prototype became the team’s reference for how the feature should work.","proof",[168,169,170,171],"facts",[154,155,156,157],"process",{"_20":64,"_65":66},"One feature. Designed, built and tested before production.","stages",[67,68,69,70,71],{"_72":19,"_74":140,"_76":141,"_78":142,"_80":143},{"_72":131,"_74":132,"_76":133,"_80":134},{"_72":116,"_74":117,"_76":118,"_78":119,"_80":120},{"_72":97,"_74":98,"_76":99,"_78":100,"_80":101,"_102":103},{"_72":73,"_74":75,"_76":77,"_78":79,"_80":81},"n","05","name","Ship","sub","PRs → staging → beta → QA → GA","item",{"_82":92,"_84":93,"_86":94,"_88":95,"_90":96},"art",{"_82":83,"_84":85,"_86":87,"_88":89,"_90":91},"src","/tiles/goals-process/05-ship.webp","srcDark","/tiles/goals-process/05-ship-dark.webp","alt","The create-a-goal modal from the final handoff prototype, previewing the time already logged toward the new goal","width",1024,"height",768,"/tiles/goals-process/items/ship.webp","/tiles/goals-process/items/ship-dark.webp","Three merged pull requests",187,99,"04","Resolve","Edge cases + badge backend alignment",{"_82":111,"_84":112,"_86":113,"_88":114,"_90":115},{"_82":106,"_84":107,"_86":108,"_88":109,"_90":110},"gatedArt",{"_82":104,"_84":105},"/tiles/goals-process/04-resolve-locked.webp","/tiles/goals-process/04-resolve-locked-dark.webp","/tiles/goals-process/04-resolve.webp","/tiles/goals-process/04-resolve-dark.webp","The unified state matrix agreed with the backend lead: every situation for an at-least goal and a cap goal, its current badge against the proposed one",865,649,"/tiles/goals-process/items/resolve.webp","/tiles/goals-process/items/resolve-dark.webp","One column of the state matrix: Reached tinted while the period runs, Reached solid or Missed once it banks",250,145,"03","Build","Storybook variants + full coded prototype",{"_82":126,"_84":127,"_86":128,"_88":129,"_90":130},{"_82":121,"_84":122,"_86":123,"_88":124,"_90":125},"/tiles/goals-process/03-build.webp","/tiles/goals-process/03-build-dark.webp","Every display treatment for a goal rendered side by side in Storybook: chip strips, panel rows, ring cards and tile cards",1057,1457,"/tiles/goals-process/items/build.webp","/tiles/goals-process/items/build-dark.webp","Two goal chips with a percentage ring, one of the treatments weighed in Storybook",262,104,"02","Explore","Competitor research + visual state exploration",{"_82":135,"_84":136,"_86":137,"_88":138,"_90":139},"/tiles/goals-process/02-explore.webp","/tiles/goals-process/02-explore-dark.webp","The Figma exploration board: an early goals strip, the create-a-goal modal and its pickers, beside screens from competitor goal apps",1258,848,"Research","Old Goals + user testing",{"_82":149,"_84":150,"_86":151,"_88":152,"_90":153},{"_82":144,"_84":145,"_86":146,"_88":147,"_90":148},"/tiles/goals-process/01-research.webp","/tiles/goals-process/01-research-dark.webp","The old Goals panel: four goals, each a progress ring with the hours logged against its target",1022,766,"/tiles/goals-process/items/research.webp","/tiles/goals-process/items/research-dark.webp","Three rows of the old Goals panel: a ring and a fraction each",428,328,{"_158":166,"_160":167},{"_158":164,"_160":165},{"_158":162,"_160":163},{"_158":159,"_160":161},"label","Scope","value","Research →\nUX → UI →\ncoded prototype","Team","Product manager\nFront-end engineer\nBack-end engineer\nTech lead","Timeline","5 weeks\nReleased 24 Jul 2026","Role","Sole product designer",{"_160":183,"_173":184,"_158":185,"_186":187,"_188":50},{"_160":180,"_173":181,"_158":182},{"_160":177,"_173":178,"_158":179},{"_160":172,"_173":174,"_158":175,"_176":50},"2,224","unit","goals created","in the first 7 weeks","gatedValue","47","commits to prototype","working reference the team built from","6,266","lines in prototype","whole experience, not a sketch","2","working days","from handoff to the first build on staging","info","Feature-complete in one more week → one week in beta → released to all users on 24 Jul 2026.","gatedInfo","I prototyped the product, not just the screens.","I took Goals from research to a working experience in code.","/logos/toggl-2-dark.svg","/logos/toggl-2-0-on-dark.svg",249,60,"Research-led","Prototyped in code","Shipped","oroom","From browsing to booking","OROOM","Web design · hospitality",[303,304,305],"stack","loop",{"_82":291,"_292":288,"_293":294,"_88":295,"_90":296,"_297":298},"shot",{"_82":288,"_88":289,"_90":290},{"_82":283,"_86":200,"_88":284,"_90":285,"_286":287},"#c2186f","#f279b4","#fdf4f8","A hotel website rebuilt around the decision a guest is actually making — sell the stay, not the room inventory.",{"_49":50,"_51":214,"_53":215,"_20":216,"_56":217,"_58":218,"_60":219,"_62":220},"Hotel website · OROOM · Responsive web","Conversion up 6.4× after the redesign.","From browsing\nto booking","The website wasn’t failing aesthetically — it was failing strategically. Visitors kept asking the one question the site never answered: what am I actually paying for?",[267,268,269,270],[259,260,261,262],{"_20":221,"_65":222},"One website. Researched, argued for, redesigned, tested.",[223,224,225,226,227],{"_72":19,"_74":140,"_76":254,"_80":255},{"_72":131,"_74":247,"_76":248,"_80":249},{"_72":116,"_74":241,"_76":242,"_80":243},{"_72":97,"_74":234,"_76":235,"_80":236},{"_72":73,"_74":75,"_76":228,"_80":229},"Responsive, in both languages",{"_82":230,"_86":231,"_88":232,"_90":233},"/work-assets/oroom/home-after-desktop.webp","The redesigned homepage",1814,3083,"Test","Same task, before vs after",{"_82":237,"_86":238,"_88":239,"_90":240},"/work-assets/oroom/calendar-desktop.webp","The master calendar",2000,2192,"Design","Wireframes → three moves",{"_82":244,"_86":245,"_88":239,"_90":246},"/work-assets/oroom/wireframes.webp","Wireframes of the redesigned site",998,"Define","Three pain points → how might we",{"_82":250,"_86":251,"_88":252,"_90":253},"/work-assets/oroom/google-score.webp","The Google review summary",1630,446,"Hotjar recordings + review mining",{"_82":256,"_86":257,"_88":239,"_90":258},"/work-assets/oroom/hotjar-calendar.webp","A Hotjar recording of the old calendar",937,{"_158":166,"_160":266},{"_158":164,"_160":265},{"_158":162,"_160":264},{"_158":159,"_160":263},"Research →\nUX → UI →\ndesktop + mobile layouts","CEO\nDevelopers\nMarketing team","4 months","Product designer\n& research lead",{"_160":280,"_173":281,"_158":282},{"_160":277,"_173":278,"_158":279},{"_160":274,"_173":275,"_158":276},{"_160":271,"_173":272,"_158":273},"3","more locations","opened since,\non the same design","4.5 → 8.8","average usability score","same task, before vs. after","+44%","engaged sessions","after the redesign","6.4×","conversion rate","from 0.25% to 1.85%","/logos/oroom.png",893,160,"scale",0.85,"/tiles/oroom-rooms-poster.webp",1200,546,"/tiles/oroom-loop.webp","poster","video",{"_299":300,"_301":302},1000,455,"matte","#150515","mp4","/tiles/oroom-loop.mp4","webm","/tiles/oroom-loop.webm","Freelance","End-to-end","Conversion","timesheet","The timesheet kept getting more complicated. The interface didn't have to.","Product design · continuous ownership",[435,436,197],{"_82":420,"_84":421,"_292":422,"_423":424,"_293":425,"_88":426,"_90":426,"_427":428},{"_82":191,"_84":192,"_86":23,"_88":193,"_90":194},"#4A5578","#8B96C4","Five months on one surface. As the Timesheet grew from a flat entry grid to four levels of grouping and richer summaries, the work was deciding what people needed to see, and when.","Shipped client work. The write-up quotes production internals, so it's shared on request rather than published.",{"_49":50,"_51":317,"_53":318,"_20":319,"_56":320,"_58":321,"_60":322,"_62":323},"Timesheet · Toggl 2.0 · Web app","Five months on one surface.","The timesheet kept getting more complicated.\nThe interface didn’t have to.","From an MVP time-entry surface to grouped rows, deeper hierarchy and richer summaries, I kept evolving the Timesheet as its complexity grew — using research, product critique and production prototypes to decide what users needed to see, and when.",[404,405,406,407],[397,398,399,400],{"_20":324,"_65":325},"One surface. Researched, grouped, tested in the product, shipped.",[326,327,328,329,330,331],{"_72":19,"_74":140,"_76":387,"_78":388,"_102":389},{"_72":131,"_74":374,"_76":375,"_78":376,"_80":377},{"_72":116,"_74":132,"_76":363,"_78":364,"_80":365},{"_72":97,"_74":98,"_76":354,"_78":355,"_80":356},{"_72":73,"_74":346,"_76":347,"_78":348},{"_72":332,"_74":75,"_76":333,"_78":334,"_80":335},"06","Four grouping modes · 31 files · PM + engineering review",{"_82":341,"_84":342,"_86":343,"_88":344,"_90":345},{"_82":336,"_84":337,"_86":338,"_88":339,"_90":340},"/tiles/timesheet-story/05-ship.webp","/tiles/timesheet-story/05-ship-dark.webp","The merged grouping on realistic data: Apollo Inc. and Northwind Trading with their projects, tasks and first day cells",620,465,"/tiles/timesheet-story/items/tiers.webp","/tiles/timesheet-story/items/tiers-dark.webp","The shipped grouping: Group by Client & project, and the four levels on neutral tiers with compact, quieter logs",572,230,"Extend","Roll-ups, responsive behaviour, more capability",{"_82":349,"_84":350,"_86":351,"_88":352,"_90":353},"/tiles/timesheet-story/05-carry.webp","/tiles/timesheet-story/05-carry-dark.webp","The squeezed sheet: the day columns clipped at Wednesday with the totals column pinned",360,270,"Experimental PR → production PR → engineering review",{"_82":361,"_84":362,"_86":94,"_88":95,"_90":96},{"_82":357,"_84":358,"_86":359,"_88":239,"_90":360},"/tiles/timesheet-story/shipped-check-light.png","/tiles/timesheet-story/shipped-check.png","The visual check before merge: the grouped view on realistic data",994,"/tiles/timesheet-story/items/ship.webp","/tiles/timesheet-story/items/ship-dark.webp","Visual hypotheses as live toggles in the product",{"_82":370,"_84":371,"_86":372,"_88":373,"_90":373},{"_82":366,"_84":367,"_86":368,"_88":239,"_90":369},"/tiles/timesheet-story/density-console-light.png","/tiles/timesheet-story/density-console.png","The density console: the visual hypotheses as toggles over the real grouped timesheet",1020,"/tiles/timesheet-story/items/console.webp","/tiles/timesheet-story/items/console-dark.webp","The density console: neutral tiers, compact logs, tree guides and quieter log text as live switches",284,"Diagnose","Four levels, one visual treatment",{"_82":383,"_84":384,"_86":385,"_88":344,"_90":386},{"_82":378,"_84":379,"_86":380,"_88":381,"_90":382},"/tiles/timesheet-story/02-diagnose.webp","/tiles/timesheet-story/02-diagnose-dark.webp","The first grouped timesheet: the Slack group, its tasks and their logs sharing one visual treatment",507,380,"/tiles/timesheet-story/items/levels.webp","/tiles/timesheet-story/items/levels-dark.webp","Four levels of one grouped week — client, project, task, time log — every row in the same treatment",190,"Screener + moderated testing set the entry rules",{"_392":50,"_82":393,"_84":394,"_86":395,"_88":396,"_90":289},{"_82":390,"_84":391},"/tiles/timesheet-story/01-research-locked.webp","/tiles/timesheet-story/01-research-dark-locked.webp","fill","/tiles/timesheet-story/01-research.webp","/tiles/timesheet-story/01-research-dark.webp","Tasks logged per day across 801 screener responses: 29% log one or two, 46% three to five, 17% six to ten, 8% more than ten",1600,{"_158":166,"_160":167},{"_158":164,"_160":403},{"_158":162,"_160":402},{"_158":159,"_160":401},"Research →\nUX → UI →\nmerged PR","Product manager\nFront-end engineer","Mar–Aug 2026",{"_160":417,"_173":418,"_158":419},{"_160":414,"_173":415,"_158":416},{"_160":411,"_173":412,"_158":413},{"_160":408,"_173":409,"_158":410},"31","files touched","in the shipped implementation","+2,405","lines added","across my merged PR","801","research responses","that set the entry rules","5","months","one surface, from a flat grid to grouped hierarchy","/tiles/timesheet.webp","/tiles/timesheet-dark.webp","/tiles/timesheet-poster.webp","posterDark","/tiles/timesheet-dark-poster.webp",{"_299":429,"_301":430,"_431":432,"_433":434},800,"fit","contain","/tiles/timesheet.mp4","/tiles/timesheet.webm","mp4Dark","/tiles/timesheet-dark.mp4","webmDark","/tiles/timesheet-dark.webm","Research-grounded","Product critique","navigator","The pattern that outlived my involvement","Toggl","Product design · originator, then advisor",[527,528,529],"grid",{"_82":522,"_86":523,"_88":524,"_90":525,"_286":526},"#3F6B5C","#6FA893","Asked to redesign an onboarding screen, I argued the screen wasn't the problem. The feature navigator that came out of it ran for ten months — and a year later I went back and broke the number that had justified it.",{"_49":50,"_51":448,"_53":449,"_20":450,"_56":451,"_58":452,"_60":453,"_62":454},"Navigator · Toggl Track · Windows desktop","Asked to redesign onboarding, I argued it wasn’t the problem.","Sometimes the right move\nis to change the question.","I turned an onboarding redesign\ninto a persistent feature navigator —\na pattern that shipped and was\nlater rebuilt for Toggl 2.0.",[508,509,510,511],[500,501,502,503],{"_20":455,"_65":456},"One pattern. Argued for, shipped, re-examined, rebuilt.",[457,458,459,460,461],{"_72":19,"_74":140,"_76":493,"_78":494},{"_72":131,"_74":485,"_76":486,"_78":487},{"_72":116,"_74":75,"_76":478,"_78":479},{"_72":97,"_74":470,"_76":471,"_78":472},{"_72":73,"_74":462,"_76":463,"_78":464},"V2","Rebuilt for Toggl 2.0 by another team",{"_82":465,"_84":466,"_86":467,"_88":468,"_90":469},"/tiles/navigator-items/v2.webp","/tiles/navigator-items/v2-dark.webp","The Toggl 2.0 desktop navigator, built by another team: Make tracking automatic, a 1 of 4 progress bar, one feature marked Done and the next with its Turn on button",432,322,"Readout","Ten months of telemetry, then the number I broke",{"_82":473,"_84":474,"_86":475,"_88":476,"_90":477},"/tiles/navigator-items/media.webp","/tiles/navigator-items/media-dark.webp","The calendar clip from the feature page: a week of events, one converted into a running Client sync entry",374,205,"V1 on Windows, four or five items, personalised",{"_82":480,"_84":481,"_86":482,"_88":483,"_90":484},"/tiles/navigator-items/panel.webp","/tiles/navigator-items/panel-dark.webp","The navigator panel: Track Navigator, its line, and the first two rows — Projects and Calendar integration",391,234,"Refuse","Not a better screen: a navigator",{"_82":488,"_84":489,"_86":490,"_88":491,"_90":492},"/tiles/navigator-items/pillHover.webp","/tiles/navigator-items/pillHover-dark.webp","The Navigator button with the pointer resting on it",152,61,"Users skip onboarding, and the tooltips too",{"_82":495,"_84":496,"_86":497,"_88":498,"_90":499},"/tiles/navigator-items/empty.webp","/tiles/navigator-items/empty-dark.webp","The Windows timer’s empty state: the laptop illustration and Let’s get tracking!",207,247,{"_158":166,"_160":507},{"_158":164,"_160":506},{"_158":162,"_160":505},{"_158":159,"_160":504},"Strategy → research →\nUX → UI → specification","Cross-product —\nWindows desktop → Toggl 2.0","V1: Aug 2025 → ~Oct 2025\nV2: Jun–Jul 2026","V1 — originator & sole designer\nV2 — advisor",{"_160":515,"_173":520,"_158":521,"_186":515,"_176":50,"_188":50},{"_160":515,"_173":518,"_158":519,"_186":515,"_176":50,"_188":50},{"_160":515,"_173":516,"_158":517,"_186":515,"_176":50,"_188":50},{"_160":512,"_173":513,"_158":514,"_186":515,"_188":50},"4","personalized features","before selection dropped away","","Navigator selections","actual interaction with the system, not just exposure","of new Windows users","engaged with the Navigator","new users","opened the Navigator","/logos/toggl-track.svg","Toggl Track",568,367,1.5,"Scope refusal","Instrumentation","V1 → V2",[527,528,529],"Asked to redesign an onboarding screen, I argued the screen wasn’t the problem. The feature navigator that came out of it ran for ten months — and a year later I went back and broke the number that had justified it.","hook","The number that made my project look good was the number I went back and disproved. That’s the most useful thing in this case study.","year","2025–2026","role","V1 — originator and sole designer · V2 — advisor","timeline","V1 spec Aug 2025, live ~Oct 2025 · V2 Jun–Jul 2026","team","Cross-product — desktop, then Toggl 2.0","platform","Windows desktop → Toggl 2.0","prerelease","publicSummary",{"_915":916,"_917":918,"_919":920,"_921":922,"_798":923},"inShort",[905,906,907,908],"publicTldr",[849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,582,583,584,866,586,587,867,868,869,870],"publicFull",[553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599],{"_600":617,"_158":844,"_80":845},{"_600":611,"_611":839,"_26":840},{"_600":601,"_158":515,"_602":836},{"_600":601,"_158":515,"_602":834},{"_600":642,"_674":50,"_643":826},{"_600":601,"_158":515,"_602":824},{"_600":617,"_158":822,"_80":823},{"_600":611,"_611":140,"_26":818},{"_600":601,"_158":515,"_602":812},{"_600":601,"_158":808,"_602":809},{"_600":601,"_158":515,"_602":806},{"_600":795,"_796":797,"_798":799},{"_600":617,"_158":789,"_619":50,"_80":790},{"_600":611,"_611":783,"_26":784},{"_600":601,"_158":515,"_602":780},{"_600":642,"_674":50,"_643":773},{"_600":601,"_158":515,"_602":771},{"_600":642,"_674":50,"_760":761,"_643":762},{"_600":601,"_158":515,"_602":758},{"_600":601,"_158":753,"_602":754},{"_600":601,"_158":515,"_674":50,"_602":750},{"_600":601,"_158":745,"_602":746},{"_600":617,"_158":738,"_619":50,"_80":739},{"_600":611,"_611":733,"_26":734},{"_600":601,"_158":515,"_602":730},{"_600":623,"_158":515,"_624":717},{"_600":601,"_158":515,"_602":714},{"_600":617,"_158":708,"_619":50,"_80":709,"_667":50,"_668":50},{"_600":617,"_158":701,"_619":50,"_80":702,"_667":50,"_703":50},{"_600":611,"_611":696,"_26":697},{"_600":601,"_158":515,"_602":692},{"_600":601,"_158":515,"_602":690},{"_600":682,"_667":50,"_674":50,"_624":683},{"_600":601,"_158":515,"_602":679},{"_600":601,"_158":515,"_674":50,"_602":675},{"_600":617,"_158":665,"_619":50,"_80":666,"_667":50,"_668":50},{"_600":617,"_158":659,"_619":50,"_80":660},{"_600":611,"_611":462,"_26":656},{"_600":601,"_158":515,"_602":651},{"_600":642,"_643":644},{"_600":601,"_158":639,"_602":640},{"_600":623,"_158":515,"_624":625},{"_600":601,"_158":515,"_602":621},{"_600":617,"_158":618,"_619":50,"_80":620},{"_600":611,"_611":612,"_26":613},{"_600":601,"_158":515,"_602":605},{"_600":601,"_158":515,"_602":603},"kind","prose","paragraphs",[604],"That’s the part I value most: not that the first version was perfect, but that **the design decision was useful enough to survive the product it was originally built for**.",[606,607,608,609,610],"Navigator started as a request to redesign onboarding.","The research showed that the more important problem was what happened before and after onboarding: new users hadn’t experienced the product yet, and discovery stopped once the initial flow ended.","So I changed the model from a one-time tour to **ongoing product discovery**.","V1 shipped and reached a meaningful share of new Windows users. The data showed where the Navigator worked, where the experience broke, and where our measurement was weaker than we thought.","And the pattern lasted beyond my involvement.","stage","What I take from it",[614,615,616],"change the model","ongoing discovery","a pattern that lasted","chapter","The most useful outcome wasn’t a retention number.","artWide",{"_82":480,"_84":481,"_86":482,"_88":483,"_90":484},[622],"These weren’t V1 features I designed and shipped. They were **V2 extensions built by another team** on top of the pattern V1 established.","highlights","items",[626,627,628,629],{"_20":637,"_631":638},{"_20":635,"_631":636},{"_20":633,"_631":634},{"_20":630,"_631":632},"State tied to the product","body","Completion reflected whether the underlying feature was actually enabled, rather than whether the user had simply finished the Navigator flow.","Analytics from the start","The funnel was instrumented before build rather than reconstructed after launch.","Contextual discovery","Banners created another way into feature discovery for users who never opened the Navigator itself.","Persistent re-entry","The Navigator could remain available beyond the initial discovery period rather than disappearing completely.","What changed in V2",[641],"The new version addressed several things we had learned from V1:","flow","steps",[645,646],{"_158":649,"_76":650},{"_158":647,"_76":648},"V2 · Toggl 2.0","Rebuilt and extended by another team, based on the V1 Navigator.","V1 · Toggl Track, Windows desktop","Originated and designed by me.",[652,653,654,655],"When Toggl 2.0 was being developed, another team rebuilt the Navigator pattern for the new product.","I wasn’t the designer responsible for V2.","My role was advisory.","But the important part was that **the Navigator concept and visual direction from V1 carried over**, while the new team extended the pattern with their own work and learnings.",[23,657,658],"another team","advisory role","The idea lived on.",{"_82":661,"_84":662,"_86":663,"_88":468,"_90":664},"/tiles/navigator-items/v2-row.webp","/tiles/navigator-items/v2-row-dark.webp","One row of the Toggl 2.0 navigator, built by another team: Record your computer activity, marked Done",90,"I found a product defect before the data did.",{"_82":669,"_84":670,"_86":671,"_88":672,"_90":673},"gated","locked","/tiles/navigator-items/cta.webp","/tiles/navigator-items/cta-dark.webp","The foot of the calendar feature page: Skip for now, and the Connect calendar button",334,36,"tight",[676,677,678],"The lesson wasn’t that the Navigator failed.","It was that the original retention relationship was **correlation, not proof of causation**.","That distinction matters — especially when the number that makes your project look good is the number you’re most tempted to stop questioning.",[680,681],"There was **no holdout** in either analysis, so neither result could establish causation.","The likely explanation was that the populations had changed. As Navigator engagement grew, the non-engaged group increasingly included experienced users who were already familiar with Toggl and therefore didn’t need the Navigator.","stats",[684,685],{"_160":515,"_173":688,"_158":689},{"_160":515,"_173":686,"_158":687},"retention","the same relationship, re-derived on a fresh cohort in June 2026","seven-day retention","for users who engaged with the Navigator — the December 2025 readout",[691],"The relationship had inverted:",[693,694,695],"The original December readout showed markedly higher seven-day retention among users who engaged with the Navigator.","It was an attractive result — and one that could easily have become the headline of this case study.","Instead, I went back and re-derived it on a fresh cohort in June 2026.","The number",[698,699,700],"Dec 2025 readout","fresh cohort, Jun 2026","no holdout","The first retention signal looked great. It didn’t survive re-examination.",{"_82":704,"_84":705,"_86":706,"_88":483,"_90":707},"hasMore","/tiles/navigator-items/viewed.webp","/tiles/navigator-items/viewed-dark.webp","Under PREVIOUSLY VIEWED, the Calendar integration row greyed with a green check",97,"About one in four new Windows users opened the Navigator.",{"_82":710,"_84":711,"_86":712,"_88":483,"_90":713},"/tiles/navigator-items/engage.webp","/tiles/navigator-items/engage-dark.webp","The Calendar integration row under the pointer, highlighted — the click the telemetry counted as engagement",79,[715,716],"It then ran in the Windows app for **10 months**.","The important part here is that this wasn’t just a proposed onboarding concept. It became a real product pattern and accumulated enough usage to evaluate what happened next.",[718,719,720,721],{"_20":728,"_631":729},{"_20":726,"_631":727},{"_20":724,"_631":725},{"_20":722,"_631":723},"Personalization based on onboarding answers","Team work saw reports and timeline first; personal productivity saw the fundamentals.","Persistent access","Rather than a one-time tour.","Feature-specific discovery pages","Each feature introduced on its own page, not in a linear tour.","Four to five personalized features","Selected from the user’s onboarding answers.",[731,732],"V1 was specified in August 2025 and went live around October.","The Navigator shipped with the structure I designed:","V1",[735,736,737],"specified Aug 2025","live ~Oct 2025","10 months in the Windows app","It shipped as specified.",{"_82":740,"_84":741,"_86":742,"_88":743,"_90":744},"/tiles/navigator-items/header.webp","/tiles/navigator-items/header-dark.webp","The panel’s own name: a waving hand, Track Navigator, Make time tracking work better for you",294,51,"Designed as a pattern, not a Windows-only feature",[747,748,749],"I also deliberately designed the Navigator as a **portable product pattern** rather than something tied to the Windows app.","The next generation of the product was already on the roadmap, so I wanted the underlying interaction model to be useful beyond the immediate brief.","That decision became important later.",[751,752],"The goal wasn’t to teach everything.","It was to give users **enough context to know what was worth exploring next**.","A small set, personalized to the user",[755,756,757],"The Navigator showed **four or five features at most**, selected according to what the user had told us during onboarding.","Someone setting up Toggl for team work could see reports and timeline-related features first. Someone focused on personal productivity could see a different set of fundamentals.","Each feature had its own page, so the Navigator could introduce the value of a feature without forcing users through a linear tour.",[759],"The Navigator would give users a **small, personalized set of features to explore** rather than asking them to understand the whole product upfront.","highlight",3,[763,764,765,766],{"_158":770,"_76":515},{"_158":769,"_76":515},{"_158":768,"_76":515},{"_158":767,"_76":515},"Keep discovery available","Let users explore","Surface relevant features","Introduce the product",[772],"to:",[774,775,776],{"_158":779,"_76":515},{"_158":778,"_76":515},{"_158":777,"_76":515},"Finish","Explain the product","Onboarding",[781,782],"Instead of making onboarding better at explaining the product, I proposed a **persistent feature navigator**.","The model changed from:","The decision",[785,786,787,788],"persistent navigator","4–5 features","personalised","portable pattern","Don’t improve the tour. Change the model.",{"_82":791,"_84":792,"_86":793,"_88":483,"_90":794},"/tiles/navigator-items/rows.webp","/tiles/navigator-items/rows-dark.webp","Two rows of the navigator: Projects and Calendar integration, each with its line and a chevron",167,"converge","columns",[800,801],"outcome","The question the Navigator answers",{"_158":804,"_631":805},{"_158":802,"_631":803},"To","How do we keep product discovery going after onboarding?","From","How do we improve onboarding?",[807],"That changed the question from:","The insight",[810,811],"We were asking too much, too soon — before users had a chance to understand what Toggl could actually do.","What they needed wasn’t a longer introduction. They needed a chance to **experience the product, see what was relevant to them, and discover more when they were ready**.",[813,814,815,816,817],"I traced the onboarding flows across Windows and macOS and looked at the experience from the perspective of someone completely new to Toggl.","A pattern emerged: desktop users were often entering Toggl **without having seen the product before**. Yet very early in the experience, we were asking them to make configuration decisions and invest effort into setup — including things like idle detection and calendar connections.","There was also little allowance for personalization because we didn’t yet know enough about who the person signing up was or what they needed from Toggl.","And once onboarding was over, the opportunity didn’t really come back.","Users were skipping the onboarding. They were also skipping tooltips. So **adding more explanation to the same flow wasn’t going to solve the underlying problem**.",[819,820,821],"Windows + macOS flows","new-user walkthrough","skipped onboarding, skipped tooltips","We were asking new users to configure a product they hadn’t experienced yet.",{"_82":495,"_84":496,"_86":497,"_88":498,"_90":499},[825],"But before redesigning the screens, I wanted to understand **what happened before, during and after onboarding** — and who was actually going through it.",[827,828,829],{"_158":832,"_76":833},{"_158":831,"_76":515},{"_158":830,"_76":515},"Activation and retention improve","More people use them","Show the features","during onboarding",[835],"The assumption was straightforward:",[837,838],"The original brief was to redesign the onboarding flow for the Windows desktop app.","The underlying product goal was broader: **increase adoption of desktop-specific features** that could contribute to activation and retention.","The brief",[841,842,843],"Windows desktop app","onboarding redesign","activation + retention","The goal wasn’t onboarding. It was feature adoption.",{"_82":846,"_84":847,"_86":848,"_88":491,"_90":673},"/tiles/navigator-items/pill.webp","/tiles/navigator-items/pill-dark.webp","The Navigator button from the timer’s empty state: a rocket, the word Navigator, a chevron",{"_600":617,"_158":844,"_80":904},{"_600":611,"_611":839,"_26":903},{"_600":601,"_158":515,"_602":902},{"_600":601,"_158":515,"_602":901},{"_600":642,"_674":50,"_643":897},{"_600":601,"_158":515,"_602":896},{"_600":617,"_158":789,"_619":50,"_80":895},{"_600":611,"_611":783,"_26":894},{"_600":601,"_158":515,"_602":893},{"_600":642,"_674":50,"_643":889},{"_600":601,"_158":515,"_602":888},{"_600":642,"_674":50,"_760":761,"_643":883},{"_600":601,"_158":515,"_602":882},{"_600":601,"_158":753,"_602":881},{"_600":601,"_158":515,"_674":50,"_602":880},{"_600":601,"_158":745,"_602":879},{"_600":617,"_158":701,"_619":50,"_80":878,"_667":50},{"_600":682,"_667":50,"_674":50,"_624":875},{"_600":617,"_158":618,"_619":50,"_80":874},{"_600":611,"_611":612,"_26":873},{"_600":601,"_158":515,"_602":872},{"_600":601,"_158":515,"_602":871},[604],[606,607,608,609,610],[614,615,616],{"_82":480,"_84":481,"_86":482,"_88":483,"_90":484},[876,877],{"_160":515,"_173":688,"_158":689},{"_160":515,"_173":686,"_158":687},{"_82":704,"_84":705,"_86":706,"_88":483,"_90":707},[747,748,749],[751,752],[755,756,757],[759],[884,885,886,887],{"_158":770,"_76":515},{"_158":769,"_76":515},{"_158":768,"_76":515},{"_158":767,"_76":515},[772],[890,891,892],{"_158":779,"_76":515},{"_158":778,"_76":515},{"_158":777,"_76":515},[781,782],[785,786,787,788],{"_82":791,"_84":792,"_86":793,"_88":483,"_90":794},[825],[898,899,900],{"_158":832,"_76":833},{"_158":831,"_76":515},{"_158":830,"_76":515},[835],[837,838],[841,842,843],{"_82":846,"_84":847,"_86":848,"_88":491,"_90":673},{"_158":839,"_631":914},{"_158":808,"_631":913},{"_158":911,"_631":912},{"_158":909,"_631":910},"The results","V1 reached a **meaningful share of new Windows users**, with engagement growing over its ten months. Attention concentrated on the first four personalized features.","The solution","A **persistent, personalized Navigator** that introduced relevant features and let users explore them at their own pace.","New desktop users were being asked to **configure the product before they’d had a chance to experience it** — and discovery largely stopped after onboarding.","Increase adoption of **desktop-specific features** that contributed to activation and retention.","problem","I was asked to redesign the onboarding *screens* for the Windows app. Research said the screens weren’t the problem: users skipped onboarding, and they skipped the tooltips too. Underneath that, there was almost no overlap between web and desktop users — people downloaded the desktop app and stayed there. Desktop wasn’t a companion surface, it was the **only** surface, and nothing in it ever told them what it contained.","users","New desktop users who would never see the web app, and who skip anything that looks like a tour. Later, the same problem one product generation over.","approach","Not a better onboarding screen — a persistent feature navigator users could explore on their own, with personalised progressive disclosure: four or five items maximum, chosen by what the user picked during onboarding. Designed deliberately as a pattern that could carry to the next product, which was already on the roadmap.","shipped","Shipped in the Windows desktop app, then rebuilt for Toggl 2.0 by a different team — with V1’s failure modes written into the new spec as requirements.","The part I did not expect: a year on I re-derived the retention claim that had justified the original build, and it did not hold. That reversal is the reason this study exists."]
