{"id":173,"date":"2026-04-14T20:53:00","date_gmt":"2026-04-15T00:53:00","guid":{"rendered":"https:\/\/wp.stgeorges.bc.ca\/connork\/?p=173"},"modified":"2026-04-14T20:53:00","modified_gmt":"2026-04-15T00:53:00","slug":"project-update-building-a-task-manager-for-adhd-brains","status":"publish","type":"post","link":"https:\/\/wp.stgeorges.bc.ca\/connork\/2026\/04\/14\/project-update-building-a-task-manager-for-adhd-brains\/","title":{"rendered":"Project Update: Building a Task Manager for ADHD Brains"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\">The Problem<\/h4>\n\n\n\n<p>I have ADHD. So do about one in twenty people, and a lot of them are students trying to deal with school. The thing nobody outside of it really gets is that it&#8217;s not a motivation problem. It&#8217;s that big vague tasks don&#8217;t compute. &#8220;Study for chem&#8221; doesn&#8217;t register as something you can start. Your brain looks at it, sees a wall, and before you&#8217;ve even decided to do anything else you&#8217;re somehow eight minutes into a YouTube video about medieval siege weapons.<\/p>\n\n\n\n<p>My definition statement was about fixing that for students like me. Take the big unstartable thing, break it into pieces, show one piece at a time, and pull assignments in from Canvas so the work comes to you instead of the other way around.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Research<\/h4>\n\n\n\n<p>I spent the first couple of weeks reading before I wrote any code, which felt slow at the time but ended up being the reason a lot of the design choices work.<\/p>\n\n\n\n<p>The biggest thing I learned is that productivity advice is almost all aimed at the wrong problem. Focus timers, app blockers, noise-cancelling headphones: these all help you stay on task once you&#8217;ve started. But the ADHD research keeps pointing at a different problem, which is <em>starting<\/em> in the first place. Once you&#8217;re moving, you&#8217;re usually fine. The wall is at the beginning. So the app had to be built around &#8220;what&#8217;s the next concrete thing I actually do&#8221; instead of &#8220;block Instagram for 25 minutes.&#8221;<\/p>\n\n\n\n<p>Working memory was the other big one. People with ADHD have less of it, which means a to-do list with fifteen items on it doesn&#8217;t read as information, it reads as pressure. That&#8217;s why the app defaults to showing one task at a time. Everything else is hidden until you ask for it.<\/p>\n\n\n\n<p>The reward loop came from reading about how the ADHD brain weighs future rewards. Basically, it doesn&#8217;t. A task that pays off in two weeks feels like nothing next to a video that pays off in two seconds. So I built a small immediate loop into the app: swipe to finish, haptic pulse, streak goes up by one. It&#8217;s not revolutionary but it&#8217;s grounded in why it works.<\/p>\n\n\n\n<p>I also looked at what already exists. Tiimo is a gorgeous ADHD calendar but it doesn&#8217;t break tasks down. Goblin Tools does breakdown but the interface is kind of ugly and there&#8217;s no school integration. Shimmer is a coaching app which is a different product entirely. Nothing I found combines AI breakdown, one-task focus view, and your actual school assignments in one place. That gap is what LevelUp is aiming at.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">What I&#8217;m Building<\/h4>\n\n\n\n<p>LevelUp is a native iOS app. I originally planned to build it in React Native because I thought cross-platform would be faster, but once I dug into Apple&#8217;s docs I realized Swift gave me access to stuff React Native couldn&#8217;t touch without pain: WidgetKit for the lock screen, SwiftData for persistence, real iOS design language. Switching cost me about two weeks but the app actually feels like it belongs on iOS now instead of a website in a phone costume.<\/p>\n\n\n\n<p>The way it works: you connect it to Canvas with a token, it pulls your real assignments, and you can tap any vague one (&#8220;work on history essay&#8221;) and Gemini breaks it into a sequence of concrete steps with rough time estimates. The default screen is one task, full-screen, nothing else on it. Swipe up to push it off, swipe right to mark it done. Done gives you haptic feedback and a streak counter and a little bit of the dopamine your brain is otherwise trying to get from TikTok.<\/p>\n\n\n\n<p>The Canvas integration is the part I&#8217;m proudest of technically because it forced me to learn how real APIs work. Rate limits, token auth, messy response data. The Canvas API is also just kind of a disaster, which was its own education.<\/p>\n\n\n\n<p>Testing the app against my definition statement turned out to be really simple: I use it every day for my own schoolwork. If I stop using it, something in the design is broken. That&#8217;s happened a few times and taught me more than any structured test would have.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Progress<\/h4>\n\n\n\n<p>The app is basically done as a v1. Everything from the original plan works, it&#8217;s on my phone, and I use it for school.<\/p>\n\n\n\n<p>Last week I posted about it on r\/ADHD and r\/iOSProgramming to see what strangers thought. The response was better than I expected. The single-task focus view kept coming up as the thing ADHD users said made it feel different from Tiimo and Goblin Tools. A few iOS developers asked technical questions about the Canvas setup. Nobody said the idea already existed, which was what I was most nervous about.<\/p>\n\n\n\n<p>The other big thing this month was the design identity. The first version looked like a stock SwiftUI app that I genuinely hated. System fonts, Apple blue, zero personality. It worked, but it didn&#8217;t feel like something anyone would actually want to open. So I spent probably too long building a real design system: Satoshi as the display font, a custom colour palette with a dark mode that actually feels intentional, consistent spacing, a set of icons I drew myself. Before and after is night and day. It went from looking like a school project to looking like a thing.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Challenges<\/h4>\n\n\n\n<p>Three things are on my mind.<\/p>\n\n\n\n<p>Distribution is one. Building the app is one problem. Getting other ADHD students to actually try it is a different problem I haven&#8217;t really solved. I don&#8217;t want to spam Reddit or buy ads. TestFlight with friends and a few people from the Reddit thread is the next step, and beyond that I&#8217;m still figuring it out.<\/p>\n\n\n\n<p>AI cost is another. Gemini is cheap for one user but if this thing gets fifty active users doing breakdowns all day the API bill gets real. I&#8217;ll probably need to cache common decompositions or fall back to a cheaper model for the easy cases.<\/p>\n\n\n\n<p>And then there&#8217;s the cold-start problem, which is that the first few breakdowns for any new user are generic. Over time I want the app to learn what kind of breakdown <em>that specific person<\/em> actually responds to. That&#8217;s a real machine learning problem I don&#8217;t know how to solve yet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Next Steps<\/h2>\n\n\n\n<p>Short-term: polish the onboarding (currently it&#8217;s basically nothing), write App Store metadata, and push to TestFlight.<\/p>\n\n\n\n<p>After that I want to run a tiny two-week study with five to ten ADHD students. Not formal research, just enough signal to know if the design choices hold up when the user isn&#8217;t me.<\/p>\n\n\n\n<p>Longer term there&#8217;s a thread I keep pulling on in my head and don&#8217;t have an answer for yet. The app works great when you open it. But the ADHD brain that needs it the most is the brain that&#8217;s not going to open any app at all. It&#8217;ll open TikTok. How do you help someone who has already checked out before they reach for help? I don&#8217;t know. That&#8217;s probably the problem I want to go after once v1 is out in users&#8217; hands.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">AI Usage<\/h2>\n\n\n\n<p>Yes, I use AI a decent amount, and I think the honest version of this is worth writing down.<\/p>\n\n\n\n<p>Claude acts as a copilot for Swift. When I&#8217;m stuck on something, I describe what I&#8217;m trying to do and what error I&#8217;m getting, and it helps me figure out where my mental model is wrong. It&#8217;s faster than Stack Overflow and way faster than reading the full Apple docs. <\/p>\n\n\n\n<p>Gemini is the engine inside the app itself, the thing that breaks tasks down for users. That&#8217;s a completely different kind of use. There, it&#8217;s a component of the product, not a tool for me.<\/p>\n\n\n\n<p>The reason I use AI this way is simple: the alternative is handwriting code, and therefore building more slowly. The interesting decisions are still mine. What to build, how to structure it, what the app is for, which features matter. AI helps me move through the parts that aren&#8217;t those decisions. Transcripts are saved in my project folder and I can share them if you want to see the process.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Key Takeaways<\/h4>\n\n\n\n<p>The app works, ADHD users who&#8217;ve tried it have said the things I was hoping they&#8217;d say, and the design identity push this month is what took it from &#8220;Connor&#8217;s project&#8221; to something that looks like a real product. Next phase is strangers using it. And there&#8217;s an open question I keep coming back to about the users who won&#8217;t open any app in the first place, which I think is going to be the real problem after v1 ships.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Problem I have ADHD. So do about one in twenty people, and a lot of them are students trying to deal with school. The thing nobody outside of it really gets is that it&#8217;s not a motivation problem. It&#8217;s that big vague tasks don&#8217;t compute. &#8220;Study for chem&#8221; doesn&#8217;t register as something you can [&hellip;]<\/p>\n","protected":false},"author":19,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-173","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/wp.stgeorges.bc.ca\/connork\/wp-json\/wp\/v2\/posts\/173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.stgeorges.bc.ca\/connork\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wp.stgeorges.bc.ca\/connork\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wp.stgeorges.bc.ca\/connork\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.stgeorges.bc.ca\/connork\/wp-json\/wp\/v2\/comments?post=173"}],"version-history":[{"count":2,"href":"https:\/\/wp.stgeorges.bc.ca\/connork\/wp-json\/wp\/v2\/posts\/173\/revisions"}],"predecessor-version":[{"id":179,"href":"https:\/\/wp.stgeorges.bc.ca\/connork\/wp-json\/wp\/v2\/posts\/173\/revisions\/179"}],"wp:attachment":[{"href":"https:\/\/wp.stgeorges.bc.ca\/connork\/wp-json\/wp\/v2\/media?parent=173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wp.stgeorges.bc.ca\/connork\/wp-json\/wp\/v2\/categories?post=173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wp.stgeorges.bc.ca\/connork\/wp-json\/wp\/v2\/tags?post=173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}