[{"_1":2},"routes/case-study",{"_3":4},"data",{"_5":6,"_7":8,"_9":10,"_11":12},"unlocked",true,"cs",{"_17":176,"_203":6,"_21":177,"_23":178,"_25":26,"_27":179,"_29":204,"_31":32,"_37":183,"_39":184,"_41":42,"_43":185,"_205":206,"_207":208,"_209":210,"_211":212,"_213":214,"_215":216,"_217":218,"_219":220,"_221":222,"_20":223,"_224":-7,"_225":-7,"_226":-7,"_227":-7},"meta",{"_17":176,"_19":20,"_21":177,"_23":178,"_25":26,"_27":179,"_29":180,"_31":32,"_33":181,"_35":182,"_37":183,"_39":184,"_41":42,"_43":185,"_45":186,"_187":-7},"more",[13,14,15,16],{"_17":155,"_21":156,"_23":157,"_25":158,"_27":159,"_29":160,"_31":161,"_162":155,"_35":163,"_37":164,"_39":165,"_41":42,"_43":166,"_135":167},{"_17":125,"_21":126,"_23":127,"_25":26,"_27":128,"_29":129,"_31":32,"_93":130,"_35":131,"_37":132,"_39":133,"_41":42,"_43":134,"_135":136},{"_17":87,"_21":88,"_23":89,"_25":90,"_27":91,"_29":92,"_31":32,"_93":94,"_95":96,"_35":97,"_37":98,"_39":99,"_41":100,"_43":101},{"_17":18,"_19":20,"_21":22,"_23":24,"_25":26,"_27":28,"_29":30,"_31":32,"_33":34,"_35":36,"_37":38,"_39":40,"_41":42,"_43":44,"_45":46},"slug","extension","kind","gallery","order","06","title","Sole designer for the first MVP of the browser extension","client","Toggl 2.0","discipline","Browser extension · sole designer","tags",[84,85,86],"cover","stack","devices",{"_59":60,"_61":62,"_63":64},"logo",{"_50":51,"_52":53,"_54":26,"_55":56,"_57":58},"accent","#1F6F78","accentBright","#5FB8C2","accentInk","#FFFFFF","cardSummary","Toggl’s browser extension for Chrome and Firefox: a lightweight companion to the web app, built around tracking time without leaving the work.","pill",{"_23":47,"_48":49},"Toggl 2.0 extension","sub","Sole designer for the first versions","src","/logos/toggl-2-dark.svg","srcDark","/logos/toggl-2-0-on-dark.svg","alt","width",249,"height",60,"previews",[65,66],"previewBg","#fceaf8","previewBgDark","#2e1838",{"_50":77,"_52":78,"_54":79,"_70":80},{"_50":67,"_52":68,"_54":69,"_70":71},"/tiles/extension-study/popover-card.svg","/tiles/extension-study/popover-card-dark.svg","The confirmation popover from a page: the entry’s name, Project, Tags, Delete and Done","place",{"_72":73,"_74":75,"_55":76},"left","50%","top","8%","46%","/tiles/extension-popup-hover.webp","/tiles/extension-popup-hover-dark.webp","The extension popup, with the day’s tracked entries",{"_72":81,"_74":82,"_55":83},"6%","38%","92%","Prototyped in code","Ambient UI","Shipped in part","oroom","07","The hotel already had the trust. The website didn’t.","OROOM","Web design · hospitality",[122,123,124],"loop",{"_50":110,"_111":107,"_112":113,"_55":114,"_57":115,"_116":117},"shot",{"_50":107,"_55":108,"_57":109},{"_50":102,"_54":90,"_55":103,"_57":104,"_105":106},"#c2186f","#f279b4","#fdf4f8","A hotel website rebuilt around the decision a guest is actually making — sell the stay, not the room inventory.","/logos/oroom.webp",447,80,"scale",0.85,"/tiles/oroom-rooms-poster.webp",1200,546,"/tiles/oroom-loop.webp","poster","video",{"_118":119,"_120":121},1000,455,"matte","#150515","mp4","/tiles/oroom-loop.mp4","webm","/tiles/oroom-loop.webm","Freelance","End-to-end","Conversion","timesheet","05","The timesheet kept getting more complicated. The interface didn’t have to.","Product design · continuous ownership",[152,153,154],{"_50":137,"_52":138,"_111":139,"_140":141,"_112":142,"_55":143,"_57":143,"_144":145},{"_50":51,"_52":53,"_54":26,"_55":56,"_57":58},"#4A5578","#8B96C4","One surface, still evolving. 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.","lockNote","Shipped client work. The write-up quotes production internals, so it’s shared on request rather than published.","/tiles/timesheet.webp","/tiles/timesheet-dark.webp","/tiles/timesheet-poster.webp","posterDark","/tiles/timesheet-dark-poster.webp",{"_118":146,"_120":147,"_148":149,"_150":151},800,"fit","contain","/tiles/timesheet.mp4","/tiles/timesheet.webm","mp4Dark","/tiles/timesheet-dark.mp4","webmDark","/tiles/timesheet-dark.webm","Research-grounded","Product critique","Shipped","navigator","04","Sometimes the right move is to change the question.","Toggl","Product design · originator, then advisor",[173,174,175],"grid","story",{"_50":168,"_54":169,"_55":170,"_57":171,"_105":172},"#3F6B5C","#6FA893","Asked to redesign an onboarding screen, I argued the screen wasn’t the problem. The feature navigator that came out of it is still running — and the pattern was rebuilt for Toggl 2.0.","Shipped client work. The write-up quotes production outcomes, so it’s shared on request rather than published.","/logos/toggl-track.svg","Toggl Track",568,367,1.5,"Scope refusal","Instrumentation","V1 → V2","toggl-mobile","03","Sole designer for the first versions of the brand-new mobile app","Mobile · 0 → 1",[200,201,202],{"_59":191,"_61":184,"_63":64,"_192":6},{"_50":190,"_52":53,"_54":26,"_55":56,"_57":58},"#8a3fb0","#c15ee7","A companion app designed from a brief in three months, then — when Track users started arriving — the recovery, the in-app importer and phone sign-in that brought them across.",{"_23":188,"_48":189},"head","Toggl 2.0 mobile","First version · moving Track users across","/logos/toggl-2-0.svg",[193,194],"previewBgInk",{"_50":198,"_54":199},{"_50":195,"_54":196,"_197":6},"/tiles/mobile-phone-screen.webp","A phone in front showing the mobile calendar in dark mode, a week of colour-coded time blocks","dark","/tiles/mobile-phone-2-screen.webp","A phone showing the Timer screen in light mode","0 → 1","Migration","Design in code","ungated",[200,201,202],"hook","I designed the first version of a new mobile app, and in my last month the way people from the old one found their way into it: the wrong-app recovery, an importer built in the app’s own code, and signing in on the phone.","year","2025–2026","role","Sole product designer","timeline","Aug 2025 – Sep 2026","team","PM, mobile engineers","platform","iOS · Android","scope","Tasks · Calendar · timer · store launch · Track import","metrics",[],"blocks",[],{"_228":229,"_23":178,"_230":231,"_232":233,"_234":235},"tldr","inShort","showcase","execSummary","kicker","Toggl 2.0 on iOS and Android","paragraphs",[418,419],"links",[406,407],"sections",[236,237,238,239,240,241,242],{"_243":385,"_245":386,"_247":387,"_261":6,"_248":388,"_250":389},{"_243":345,"_245":346,"_247":154,"_261":6,"_248":347,"_250":348},{"_243":320,"_245":321,"_247":154,"_261":6,"_248":322,"_250":323},{"_243":302,"_245":303,"_247":154,"_261":6,"_248":304,"_250":305},{"_243":287,"_245":288,"_247":154,"_261":6,"_248":289,"_250":290},{"_243":260,"_245":246,"_247":154,"_261":6,"_248":262,"_250":263},{"_243":244,"_245":246,"_247":154,"_248":249,"_250":251},"label","Signing in on the phone","period","Aug 2026","status","note","Once the app was installed, the web route to pair it disappeared. The pairing page got a persistent way in and step-by-step instructions in light and dark.","images",[252],{"_50":253,"_54":254,"_55":255,"_57":256,"_257":258,"_259":6},"/work-assets/toggl-mobile/pairing.webp","The pairing page states",2400,1253,"caption","Every state of pairing a phone.","wide","Bringing Track data across","phones","An importer on the phone for Track users moving to 2.0 — built as a working preview in the app’s own code, live on 25 August 2026.",[264,265,266,267],{"_50":279,"_112":280,"_54":281,"_55":282,"_57":283,"_257":284},{"_50":276,"_54":277,"_55":270,"_57":271,"_257":278},{"_50":273,"_54":274,"_55":270,"_57":271,"_257":275},{"_50":268,"_54":269,"_55":270,"_57":271,"_257":272},"/work-assets/toggl-mobile/imp-04.webp","Importer: import in progress, step 3 of 6, with an illustration and a note that it keeps going if you leave",804,1748,"Importing","/work-assets/toggl-mobile/imp-02.webp","Importer: choosing the Track organization and workspace, and what comes across","Choose a workspace","/work-assets/toggl-mobile/imp-01.webp","Importer: Welcome to Toggl 2.0 — bring your existing data with you, or skip for now","Welcome","/work-assets/toggl-mobile/importer-flow-poster.webp",{"_118":285,"_120":286},"The importer flow, animated: welcome, choosing a workspace, the preview, importing and done",402,874,"The whole flow","/work-assets/toggl-mobile/importer-flow.mp4","/work-assets/toggl-mobile/importer-flow.webm","New store visuals","2026","A new set of store screenshots for the tracking-first app, designed by me.",[291,292,293],{"_50":300,"_54":301,"_55":296,"_57":297},{"_50":298,"_54":299,"_55":296,"_57":297},{"_50":294,"_54":295,"_55":296,"_57":297},"/tiles/mobile-shot-3.webp","Store visual: Stay on top of your priorities — the tasks list grouped by when",460,995,"/tiles/mobile-shot-2.webp","Store visual: See your full day in one place — the calendar day view in dark mode","/tiles/mobile-shot-1.webp","Store visual: Track your time, plan better — the calendar week with a running timer","On both stores","Nov 2025","Live on Android on 3 November 2025 and on iOS three days later. The store screenshots are mine too.",[306,307,308,309],{"_50":318,"_54":319,"_55":312,"_57":313},{"_50":316,"_54":317,"_55":312,"_57":313},{"_50":314,"_54":315,"_55":312,"_57":313},{"_50":310,"_54":311,"_55":312,"_57":313},"/work-assets/toggl-mobile/store-4.webp","Store screenshot: Sync across devices and plan with real data, not guesswork — a calendar event open on the phone beside the web app’s calendar",750,1625,"/work-assets/toggl-mobile/store-3.webp","Store screenshot: Track and resume tasks as you go — then just mark them done. Today’s focus with logged and blocked time and a task being tracked","/work-assets/toggl-mobile/store-2.webp","Store screenshot: Effortless time tracking. Start with one tap, from anywhere — the calendar day in dark mode, planned beside logged, with a timer running","/work-assets/toggl-mobile/store-1.webp","Store screenshot: Plan and track in one place. No more juggling apps or losing data between tools — the calendar day with a running timer and a task’s scheduled and logged time","Calendar","Oct 2025","Planned and logged time side by side, connecting a calendar, and the new settings page.",[324,325,326,327,328],{"_50":342,"_54":343,"_55":270,"_57":271,"_257":344},{"_50":339,"_54":340,"_55":270,"_57":271,"_257":341},{"_50":336,"_54":337,"_55":270,"_57":271,"_257":338},{"_50":333,"_54":334,"_55":270,"_57":271,"_257":335},{"_50":329,"_54":330,"_55":255,"_57":331,"_257":332,"_259":6},"/work-assets/toggl-mobile/sec-calendar.webp","Calendar column explorations: planned and logged, labels and contrast",1910,"The calendar views I explored.","/work-assets/toggl-mobile/settings.webp","The new settings page","Settings","/work-assets/toggl-mobile/cal-connect.webp","Connecting a calendar","Connect a calendar","/work-assets/toggl-mobile/cal-event.webp","A calendar event open","An event","/work-assets/toggl-mobile/cal-empty.webp","The empty calendar","Empty","The first version","Sep – Oct 2025","Drawn as a day — empty, the start of it, tracking, the end — then tasks, filters and every empty, loading and edge state with the engineers.",[349,350,351,352,353,354,355,356],{"_50":383,"_54":384,"_55":270,"_57":375,"_257":344},{"_50":380,"_54":381,"_55":270,"_57":375,"_257":382},{"_50":377,"_54":378,"_55":270,"_57":375,"_257":379},{"_50":373,"_54":374,"_55":270,"_57":375,"_257":376},{"_50":369,"_54":370,"_55":270,"_57":371,"_257":372},{"_50":366,"_54":367,"_55":270,"_57":271,"_257":368},{"_50":362,"_54":363,"_55":364,"_57":255,"_257":365},{"_50":357,"_54":358,"_55":359,"_57":360,"_257":361},"/work-assets/toggl-mobile/sec-empty.webp","Loading and empty states",1841,1448,"Loading more, and every empty state.","/work-assets/toggl-mobile/sec-tracking.webp","Time tracking states across the first version",1612,"The timer’s states, from every place it can start.","/work-assets/toggl-mobile/tasks-filters.webp","Filtering the task list","Filters","/work-assets/toggl-mobile/tasks-list.webp","The task list: To plan, This week with starred priorities and progress, and Next week",1746,"Tasks","/work-assets/toggl-mobile/day-end.webp","The end of the day",1782,"End of the day","/work-assets/toggl-mobile/day-tracking.webp","Later in the day, a task being tracked","Tracking","/work-assets/toggl-mobile/day-start.webp","Starred priorities at the start of the day","Start of the day","/work-assets/toggl-mobile/day-empty.webp","An empty day in the first version","First draft","Aug 2025","Prototype","A companion to the planning web app: quick actions on the go, platform-native, time tracking at its core. The first draft, before the team review.",[390,391,392,393],{"_50":403,"_54":404,"_55":270,"_57":271,"_257":405},{"_50":400,"_54":401,"_55":270,"_57":271,"_257":402},{"_50":397,"_54":398,"_55":270,"_57":271,"_257":399},{"_50":394,"_54":395,"_55":270,"_57":271,"_257":396},"/work-assets/toggl-mobile/draft-edit-tracking.webp","First draft: editing a task that is being tracked","Tracking a task","/work-assets/toggl-mobile/draft-nav.webp","First draft: an interactive navigation bar","Navigation","/work-assets/toggl-mobile/draft-calendar.webp","First draft: the day with a calendar strip","A calendar strip","/work-assets/toggl-mobile/draft-priorities.webp","First draft: the day's priorities","The day’s priorities",{"_243":415,"_409":416,"_411":417,"_413":414},{"_243":408,"_409":410,"_411":412,"_413":414},"Get it on Google Play","href","https://play.google.com/store/apps/details?id=com.toggl.focus","badge","/tiles/badge-google-play.png","text","Download at the store","Download on the App Store","https://apps.apple.com/us/app/toggl-2-0/id6746402581","/tiles/badge-app-store.svg","**A planning product on web, a time-tracking companion on mobile.** I rethought Focus for mobile around the moments where people actually need to track time — from Tasks and Calendar, with the timer accessible from both — while keeping planned and logged time connected to the wider product.","**From first version to launch.** I owned the experience across iOS and Android, from information architecture and interaction design to every screen and state."]
