A mobile tasks module for an enterprise productivity suite used by large enterprises — built from scratch over 2.5 years, natively on Material 3 and spec-first, on a simple bet: beat paper, not Jira.
Ein mobiles Aufgaben-Modul für eine Enterprise-Productivity-Suite in großen Unternehmen — über 2,5 Jahre von Grund auf gebaut, nativ auf Material 3 und Spec-first, mit einer einfachen Wette: Papier schlagen, nicht Jira.

Employees manage work tasks in scattered tools — trackers, notes apps, paper, memory. The suite already had a task module, but it was invisible: only 7% of internal users (9 of 134) had ever used it — mostly because they never knew it existed.
Beschäftigte verwalten Arbeitsaufgaben in verstreuten Tools — Trackern, Notiz-Apps, auf Papier, im Kopf. Die Suite hatte bereits ein Aufgaben-Modul, aber es war unsichtbar: Nur 7% der internen Nutzer (9 von 134) hatten es je verwendet — meist, weil sie gar nicht wussten, dass es existiert.
The job wasn't to add features. It was to figure out what a task tool has to be before people even consider adopting it.
Die Aufgabe war nicht, Features hinzuzufügen — sondern herauszufinden, was ein Aufgaben-Tool sein muss, bevor Menschen es überhaupt in Betracht ziehen.
13 JTBD deep interviews — combined with usability tests of a lo-fi concept, one hour each — with non-developers who live in Google Tasks, Todoist, Notion, TickTick and the like. The jobs that mattered: capture a task in seconds; handle urgent requests without tracker overhead; get an explicit completion confirmation as a psychological reward; keep deadline-free notes so overdue alerts don't demotivate; and plan only 1–2 weeks ahead.
13 JTBD-Tiefeninterviews — kombiniert mit Usability-Tests eines Lo-Fi-Konzepts, jeweils eine Stunde — mit Nicht-Entwicklern, die in Google Tasks, Todoist, Notion, TickTick und Co. zu Hause sind. Die entscheidenden Jobs: eine Aufgabe in Sekunden erfassen; dringende Anfragen ohne Tracker-Overhead erledigen; eine explizite Erledigt-Bestätigung als psychologische Belohnung; Notizen ohne Deadline, damit Überfälligkeits-Alarme nicht demotivieren; und nur 1–2 Wochen im Voraus planen.
The competitor teardown of 7 apps — Outlook, Google Tasks, Todoist, TickTick, Apple Reminders and others — delivered the strategic insight of the project:
Der Wettbewerbs-Teardown von 7 Apps — Outlook, Google Tasks, Todoist, TickTick, Apple Reminders und weitere — lieferte die strategische Erkenntnis des Projekts:
Research here wasn't a phase — it was a documented pipeline. The ToDo 2024 development cycle ran on a written research plan, 5 documented user interviews with full protocols in a shared spreadsheet, a 16-page study on a new task-module representation that consolidated the results, and an agreements log where every decision with stakeholders was recorded instead of relitigated. A parallel 2024 CustDev cycle — 8 documents — fed the module roadmap.
Research war hier keine Phase — sondern eine dokumentierte Pipeline. Der ToDo-Entwicklungszyklus 2024 lief auf einem schriftlichen Research-Plan, 5 dokumentierten Nutzerinterviews mit vollständigen Protokollen in einer geteilten Tabelle, einer 16-seitigen Studie zu einer neuen Darstellung des Aufgaben-Moduls, die die Ergebnisse konsolidierte, und einem Vereinbarungs-Log, in dem jede Stakeholder-Entscheidung festgehalten statt neu verhandelt wurde. Ein paralleler CustDev-Zyklus 2024 — 8 Dokumente — speiste die Modul-Roadmap.
The competitor work got the same treatment: two dedicated competitor studies — one on task lists (14 pages), one on the task view (18 pages) — so every pattern decision could point at evidence, not taste.
Die Wettbewerbsanalyse bekam dieselbe Behandlung: zwei eigenständige Competitor-Studien — eine zu Aufgabenlisten (14 Seiten), eine zur Aufgabenansicht (18 Seiten) — damit jede Pattern-Entscheidung auf Belege zeigen konnte, nicht auf Geschmack.
Navigation. A drawer plus swipe navigation across aggregating lists — All, Due today, Upcoming, Overdue — alongside user-created lists with sharing.
Navigation. Ein Drawer plus Swipe-Navigation über aggregierende Listen — Alle, Heute fällig, Anstehend, Überfällig — neben nutzereigenen Listen mit Freigabe.
Speed over ceremony. Tap-to-complete for the reward moment, FAB creation for the seconds-fast capture the interviews demanded. Task fields cover priority, reminder and assignees; recurrence works like a simplified calendar pattern instead of a rules engine.
Tempo statt Zeremonie. Tap-to-Complete für den Belohnungsmoment, Erstellung per FAB für die sekundenschnelle Erfassung, die die Interviews forderten. Aufgabenfelder umfassen Priorität, Erinnerung und Zuständige; Wiederholungen funktionieren wie ein vereinfachtes Kalender-Muster statt einer Regel-Engine.
The invisible constraint: authorization runs through two servers with different functions — an architectural reality the flows had to absorb without the user ever noticing.
Die unsichtbare Randbedingung: Die Autorisierung läuft über zwei Server mit unterschiedlichen Funktionen — eine architektonische Realität, die die Flows schlucken mussten, ohne dass Nutzer je etwas davon merken.
The module wasn't skinned to look vaguely Android — it was built natively on Material 3 from day one. The team's Mobile Design System mirrors M3's own structure: every component is documented as Anatomy / States / Design tokens / Usage, the same four lenses Google uses. The UI kit covers 33 M3 components plus foundations, and the Tasks module contributed its own DS snippet — the Task Item, the row every list in the app is assembled from.
Das Modul wurde nicht auf „sieht irgendwie nach Android aus" geschminkt — es wurde von Tag eins nativ auf Material 3 gebaut. Das Mobile Design System des Teams spiegelt die Struktur von M3: Jede Komponente ist als Anatomy / States / Design tokens / Usage dokumentiert — dieselben vier Linsen, die Google nutzt. Das UI-Kit umfasst 33 M3-Komponenten plus Foundations, und das Aufgaben-Modul steuerte einen eigenen DS-Baustein bei — das Task Item, die Zeile, aus der jede Liste der App zusammengesetzt ist.
I proposed and documented 15 design-system components along the way and pushed the system towards design tokens, so a spec could reference a token instead of a hex value — and survive a theme change.
Unterwegs habe ich 15 Design-System-Komponenten vorgeschlagen und dokumentiert und das System Richtung Design Tokens bewegt — damit eine Spec ein Token referenziert statt eines Hex-Werts und einen Theme-Wechsel überlebt.
| LayerEbene | What it fixesWas sie festlegt | Example — Task ItemBeispiel — Task Item |
|---|---|---|
| Anatomy | named parts and their layout slotsbenannte Teile und ihre Layout-Slots | checkbox · title · due date · priority marker · overflowCheckbox · Titel · Fälligkeit · Prioritätsmarker · Overflow |
| States | every interactive state, no "designer will decide later"jeder interaktive Zustand, kein „klärt die Designerin später" | default · pressed · completed · overdue · disabledDefault · Pressed · Erledigt · Überfällig · Disabled |
| Design tokens | colors, type, spacing by reference, not by valueFarben, Typo, Abstände per Referenz statt Wert | surface, on-surface and error roles from the M3 paletteSurface-, On-Surface- und Error-Rollen aus der M3-Palette |
| Usage | when to use it — and when not towann man sie nutzt — und wann nicht | lists and search results; never as a standalone cardListen und Suchergebnisse; nie als freistehende Karte |
The module shipped on six [UX_UI] specification documents — about 140 pages including research — written so that engineering and QA never had to guess. The centerpiece: the View/Edit/Create Task spec, 31 pages covering every state and edge case — the single largest spec in the whole archive.
Das Modul lief auf sechs [UX_UI]-Spezifikationen — rund 140 Seiten inklusive Research — geschrieben, damit Engineering und QA nie raten mussten. Das Herzstück: die View/Edit/Create-Task-Spec, 31 Seiten mit jedem Zustand und Edge Case — die größte einzelne Spec im gesamten Archiv.
| SpecSpec | PagesSeiten | What it coversWas sie abdeckt |
|---|---|---|
| View / Edit / Create Task | 31 | All states and edge cases of the core object — the largest spec in the archiveAlle Zustände und Edge Cases des Kernobjekts — die größte Spec im Archiv |
| Task list | 19 | aggregating and user lists, sorting, badge navigationaggregierende und Nutzer-Listen, Sortierung, Badge-Navigation |
| Delete Task | 12 | deletion flows and their edge casesLösch-Flows und ihre Edge Cases |
| Complete Task in Task List | 7 | tap-to-complete — the reward moment, specifiedTap-to-Complete — der Belohnungsmoment, spezifiziert |
| Task navigation / Drawer | 7 | drawer structure and list-to-list movementDrawer-Struktur und Bewegung zwischen Listen |
| Task View (early)(früh) | — | first-generation view spec, later superseded by the 31-page documentSpec der ersten Generation, später von den 31 Seiten abgelöst |






Documents are in their original working language — shown as authentic process artifacts.Die Dokumente sind in der Original-Arbeitssprache — gezeigt als authentische Prozess-Artefakte.
Concept split-test. Two UI concepts — badges/tabs vs accordions — tested with an external panel of 100 plus 134 internal users. Badges won on both measures: participants completed the task set faster (97s vs 125s total) and preferred them 62 of 133. Badges shipped.
Konzept-Split-Test. Zwei UI-Konzepte — Badges/Tabs vs. Akkordeons — getestet mit einem externen Panel von 100 plus 134 internen Nutzern. Badges gewannen auf beiden Achsen: Die Aufgaben wurden schneller abgeschlossen (insgesamt 97s vs. 125s) und 62 von 133 bevorzugten sie. Badges wurden ausgeliefert.
Evidence-based cuts. A 3-state task status looked popular — until the data showed the demand spike came almost entirely from Jira users (31 of 42). Cut. Overdue tasks were pinned to the top of Today, matching what users expected, and completed tasks moved to a separate section so done work stops cluttering the list.
Evidenzbasierte Streichungen. Ein Aufgabenstatus mit 3 Zuständen wirkte beliebt — bis die Daten zeigten, dass die Nachfrage fast ausschließlich von Jira-Nutzern kam (31 von 42). Gestrichen. Überfällige Aufgaben wurden oben in „Heute" angepinnt — genau wie Nutzer es erwarteten — und erledigte Aufgaben zogen in einen eigenen Bereich, damit Erledigtes die Liste nicht verstopft.
The honest note: retention landed around 40% against a 60% goal. That gap is the agenda for the next cycle — closed with analytics-driven iteration, not with wishful thinking.
Der ehrliche Punkt: Die Retention lag bei rund 40% gegenüber einem Ziel von 60%. Diese Lücke ist die Agenda für den nächsten Zyklus — geschlossen mit analytics-getriebener Iteration, nicht mit Wunschdenken.