Inspiration Research from the University of California, Irvine reveals a staggering statistic: it takes an average of 23 minutes and 15 seconds to regain deep focus after a single interruption.
For knowledge workers, students, and especially people with ADHD or executive dysfunction, interruptions aren’t just annoying—they cause working memory to wipe completely blank. I know the feeling all too well: you return to your desk and stare at your screen thinking, "Where was I? What was I about to test?"
Existing productivity tools like Jira, Notion, and Todoist make this worse. They demand projects, tags, priority matrices, and due dates when you literally have five seconds before your focus vanishes. That cognitive friction causes people to abandon them.
I built PickUp to act as a bookmark for your working memory—a zero-friction tool that lets you park your spot in under 5 seconds and resume effortlessly without task initiation paralysis.
What it does PickUp is an offline-first, low-friction focus preservation tool that protects your train of thought:
5-Second "Park It" Capture: Hit a hotkey or tap the microphone to brain-dump raw, unstructured thoughts. No tags, no folders, zero organization. Deterministic 3-Cue Distillation: In under 2 milliseconds, PickUp distills your mess into three vital anchors: Where was I? (Context) Next 5-minute action (A concrete micro-step starting with an active verb) Waiting on (External blockers or teammates) Single-Card Resume View: Staring at a 50-item backlog triggers executive freeze. When returning, PickUp isolates only the single card you left behind. The 2-Minute Warm-Up Timer: To conquer task paralysis, PickUp provides psychological permission: "Just start for 2 minutes. You can stop after." Lowering the barrier to entry lets momentum take over. Zero-Database Peer Handoff: Pass your spot to a colleague with no accounts and no servers. Cards are serialized and base64-encoded directly into the URL hash (#handoff=...). Built-in Evidence Mode (?study=1): Includes a researcher stopwatch and local trial metrics to scientifically measure resumption time before and after using PickUp. How I built it I engineered PickUp with radical ethical constraints—offline-first, zero tracking, and zero bloated runtime dependencies:
Core & Architecture: Built entirely in Vanilla TypeScript with Vite and Vanilla CSS design tokens. Zero unapproved runtime npm libraries. Client-Side Heuristic Engine: I developed a deterministic regex-based NLP parser in src/lib/cardBuilder.ts that detects imperative verbs, tokenizes sentence clauses, and isolates blocker triggers with sub-2ms latency. Resilient State Management: Custom LocalStorage layer (pickup_cards_v1) featuring a 20-card FIFO cap and an automatic in-memory fallback if storage quotas are exceeded. PWA & Offline Capability: Service Worker and Web Manifest caching all application assets, allowing 100% offline usage on an airplane or subway. Optional Edge AI Polish: I built a serverless function (/api/polish) using Google Gemini 1.5 Flash. It enforces an 8-second AbortController timeout, in-memory IP rate limiting, and strict JSON schema validation. If the network drops or the API is unavailable, it silently falls back to the deterministic card with a "Made without AI" badge. Testing & Quality: 72 automated unit tests across 12 test suites using Vitest, with 100% strict TypeScript type safety (tsc --noEmit). Challenges I ran into The Sub-5-Second Constraint: I initially considered using an LLM for all text parsing. However, API latency (1–3 seconds) and network dependency meant that if a user was interrupted with poor Wi-Fi, the app stalled and context was lost. I solved this by architecting a client-side heuristic engine first, making AI an optional, non-blocking enhancement. Screen Reader Live Buffer Flooding: A countdown timer ticking every second can flood screen-reader buffers with aria-live announcements, making the app unusable for visually impaired users. I engineered an announcement scheduler that only dispatches polite screen-reader alerts upon timer start and timer completion. Zero-Backend Peer Sharing: Sharing card state without spinning up a cloud database required compact serialization. I solved this by compressing and base64-encoding the card into the URL hash, enforcing a strict 2048-byte payload limit, and rendering imported content exclusively via DOM textContent nodes to ensure complete XSS immunity. Accomplishments that I'm proud of Zero Runtime Dependencies: The entire production bundle is pure, hand-crafted TypeScript and CSS tokens running under 65 kB gzipped. Instantaneous Latency: Interrupted thoughts are parsed and locked in within milliseconds. Full Accessibility (WCAG AAA): Built with a 3-tier text scaler, self-hosted dyslexia-friendly typography stack, and high-contrast theme—achieving 95+ Lighthouse accessibility scores. 72/72 Passing Automated Tests: Comprehensive coverage across storage fallbacks, XSS edge cases, timer drift, and speech dictation mocks. Privacy by Design: Not a single byte of personal user data or private notes leaves the browser. What I learned Friction is the ultimate enemy of working memory: If an app requires more than two clicks or asks for categorization during an interruption, users will close it and lose their thought. Deterministic heuristics are vastly underrated: While AI models are powerful, simple regex pattern matching and verb scoring provide instant, reliable, zero-cost utility that works 100% offline. Psychological permission beats productivity pressure: The "2-minute rule" works because it removes the fear of finishing a massive project; getting people to start for 120 seconds is all it takes to rebuild momentum. What's next for pickUp IDE & Browser Extensions: A lightweight VS Code and Chrome extension to park your exact file, line number, or open tabs with a single keyboard shortcut (Ctrl+Alt+P). OS Global Hotkey: A native system tray helper (Alt+Space) to dump a thought instantly from any desktop application. Encrypted Peer-to-Peer Sync: Local-network (LAN) or WebRTC sync for teams to pass off cards without cloud servers. Calendar-Aware Auto-Prompts: Calm local notifications 2 minutes before scheduled calendar meetings: "Meeting starting soon. Park your current thought?"
Log in or sign up for Devpost to join the conversation.