Compare commits
2 Commits
claude/aut
...
103585d7ea
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
103585d7ea | ||
|
|
017425d976 |
619
docs/brand/kon-brand-guidelines.md
Normal file
619
docs/brand/kon-brand-guidelines.md
Normal file
@@ -0,0 +1,619 @@
|
||||
# Kon — Brand Guidelines
|
||||
|
||||
**Version:** 1.1
|
||||
**Date:** 2026/03/21
|
||||
**Source:** Brand Forge — six-phase visual identity development
|
||||
|
||||
---
|
||||
|
||||
## 1. Brand Foundation
|
||||
|
||||
**Purpose:** Kon exists because the tools meant to organise your thoughts demand more mental energy than the thoughts themselves.
|
||||
|
||||
**Essence:** Clarity without friction.
|
||||
|
||||
**Archetype:** Sage (primary) + Magician (secondary)
|
||||
|
||||
**Voice sliders:**
|
||||
- Formal 3 ↔ Casual **7**
|
||||
- Serious **5** ↔ Funny 5
|
||||
- Respectful **5** ↔ Irreverent 5
|
||||
- Enthusiastic 3 ↔ Matter-of-fact **7**
|
||||
|
||||
**We Are / We Are Not:**
|
||||
|
||||
| We are | We are not |
|
||||
|---|---|
|
||||
| Astute | Rambling |
|
||||
| Concise | Rude |
|
||||
| Direct | Dishonest |
|
||||
| Listening | Judging |
|
||||
| Peace | Static |
|
||||
|
||||
**Tenets:**
|
||||
1. "How can I make this person feel seen and heard?"
|
||||
2. "Does this add or remove complexity from daily life?"
|
||||
3. "Is this scientifically backed? Is it respectful? Is it honest?"
|
||||
4. "Is the message clear and unambiguous?"
|
||||
5. Integrity, honour, respect.
|
||||
6. Progressive disclosure — never show the full complexity.
|
||||
7. Build the ecosystem.
|
||||
|
||||
---
|
||||
|
||||
## 2. Brand Marks
|
||||
|
||||
### Primary: Wordmark
|
||||
|
||||
**"Kon"** set in Instrument Serif Italic, 400 weight, amber (#e8a87c on dark / #b87a4a on light).
|
||||
|
||||
**Usage:**
|
||||
- The wordmark is the primary brand identifier across all contexts
|
||||
- Always italic — the italic-only choice gives it a handwritten, personal quality
|
||||
- Minimum size: 18px digital
|
||||
- Clear space: half the cap-height of the "K" on all sides
|
||||
- Accompanied by tagline "Think out loud" in Lexend 400, `--text-tertiary`, when space permits
|
||||
|
||||
**Don'ts:**
|
||||
- Never set the wordmark in Lexend or any other font
|
||||
- Never use Instrument Serif for anything other than the wordmark and marketing display
|
||||
- Never use the wordmark in upright (roman) — always italic
|
||||
- Never stretch, rotate, add shadows, or apply effects
|
||||
- Never place on a busy or low-contrast background
|
||||
|
||||
### Secondary: Waveform Mark
|
||||
|
||||
A minimal abstracted waveform — three vertical bars of asymmetric heights in amber. Used where the wordmark won't fit.
|
||||
|
||||
**Variants:**
|
||||
- **Static:** Three bars, amber (#e8a87c), asymmetric heights. Favicon, system tray, social profile picture
|
||||
- **Animated (recording):** Gentle amplitude pulse, 2s cycle, ease-in-out. Amplitude clamped to a gentle visual range regardless of input level — status indicator, not a VU meter. Disabled when `prefers-reduced-motion: reduce` is active
|
||||
|
||||
**Proportions:**
|
||||
- Three bars, left to right: 60% height, 100% height, 40% height
|
||||
- Bar width: 20% of total mark width
|
||||
- Gap between bars: 15% of total mark width
|
||||
- Rounded terminals (radius = half bar width) — consistent with Lucide icon language
|
||||
- At 16×16px: bars are 3px wide, 1px gap between, heights 6px / 10px / 4px (centred vertically)
|
||||
- At 512×512px: bars are 96px wide, 48px gap, heights 192px / 320px / 128px
|
||||
|
||||
**Sizing:** Must remain legible at 16×16px (favicon) and scale cleanly to 512×512px (app store)
|
||||
|
||||
**Note:** The CORBEL fox mark is not a Kon asset. Never use the fox on Kon materials.
|
||||
|
||||
---
|
||||
|
||||
## 3. Colour System
|
||||
|
||||
### Design Tokens — Dark Theme (Primary)
|
||||
|
||||
#### Surfaces
|
||||
|
||||
| Token | Hex | Usage |
|
||||
|---|---|---|
|
||||
| `--bg` | #0f0e0c | Primary background (60%) |
|
||||
| `--bg-elevated` | #171614 | Elevated panels, popovers |
|
||||
| `--bg-card` | #1b1a17 | Content containers, cards |
|
||||
| `--bg-input` | #151412 | Input fields |
|
||||
| `--sidebar` | #13120f | Navigation surface |
|
||||
|
||||
#### Text
|
||||
|
||||
| Token | Hex | Min size | Usage |
|
||||
|---|---|---|---|
|
||||
| `--text` | #f0ece4 | 12px | Primary text — AAA on all surfaces |
|
||||
| `--text-secondary` | #9a9486 | 12px | Supporting text — AA on all surfaces |
|
||||
| `--text-tertiary` | #716b60 | 18px bold / 24px regular | Labels, captions, metadata — large text only |
|
||||
|
||||
#### Accent
|
||||
|
||||
| Token | Hex | Usage |
|
||||
|---|---|---|
|
||||
| `--accent` | #e8a87c | Primary accent — CTAs, active states, brand moments |
|
||||
| `--accent-hover` | #d4976a | Interactive hover state |
|
||||
| `--accent-subtle` | #e8a87c10 | Tinted backgrounds, selected states |
|
||||
| `--accent-glow` | #e8a87c25 | Selection highlights, focus rings |
|
||||
|
||||
#### Borders & Interactive
|
||||
|
||||
| Token | Hex | Usage |
|
||||
|---|---|---|
|
||||
| `--border` | #2c2923 | Primary borders |
|
||||
| `--border-subtle` | #221f1b | Subtle dividers |
|
||||
| `--nav-active` | #201e1a | Active navigation state |
|
||||
| `--hover` | #1e1c18 | Hover states |
|
||||
|
||||
#### Semantic
|
||||
|
||||
| Token | Hex | Usage |
|
||||
|---|---|---|
|
||||
| `--success` | #7ec89a | Positive states, completion |
|
||||
| `--danger` | #e87171 | Errors, recording active, destructive actions |
|
||||
| `--warning` | #e8c86e | Loading, caution states |
|
||||
|
||||
#### Sensory Zones
|
||||
|
||||
| Token | Hex | Purpose |
|
||||
|---|---|---|
|
||||
| `--zone-cave` | #1a2a2e | Deep focus — cool teal tint |
|
||||
| `--zone-energy` | #2a2520 | Collaboration — warm neutral |
|
||||
| `--zone-reset` | #1e2420 | Relaxation — muted sage |
|
||||
|
||||
Zone transitions: 300–500ms cross-fade, disabled when `prefers-reduced-motion: reduce`.
|
||||
|
||||
### Design Tokens — Light Theme
|
||||
|
||||
#### Surfaces
|
||||
|
||||
| Token | Hex |
|
||||
|---|---|
|
||||
| `--bg` | #faf8f5 |
|
||||
| `--bg-elevated` | #f3f0eb |
|
||||
| `--bg-card` | #ffffff |
|
||||
| `--bg-input` | #f0ede8 |
|
||||
| `--sidebar` | #f5f2ed |
|
||||
|
||||
#### Text
|
||||
|
||||
| Token | Hex |
|
||||
|---|---|
|
||||
| `--text` | #1a1816 |
|
||||
| `--text-secondary` | #5c574d |
|
||||
| `--text-tertiary` | #8a8578 |
|
||||
|
||||
#### Accent
|
||||
|
||||
| Token | Hex | Note |
|
||||
|---|---|---|
|
||||
| `--accent` | #b87a4a | Darkened from legacy #d4956a for contrast compliance |
|
||||
| `--accent-hover` | #a06b3e | |
|
||||
| `--accent-subtle` | #b87a4a10 | |
|
||||
| `--accent-glow` | #b87a4a20 | |
|
||||
|
||||
#### Semantic
|
||||
|
||||
| Token | Hex |
|
||||
|---|---|
|
||||
| `--success` | #3d8a5a |
|
||||
| `--danger` | #c44d4d |
|
||||
| `--warning` | #b89a3e |
|
||||
|
||||
#### Sensory Zones (Light)
|
||||
|
||||
| Token | Hex |
|
||||
|---|---|
|
||||
| `--zone-cave` | #e8f0f2 |
|
||||
| `--zone-energy` | #f5f0e8 |
|
||||
| `--zone-reset` | #edf2ea |
|
||||
|
||||
### Colour Rules
|
||||
|
||||
1. **Never** pure black (#000000) on pure white (#FFFFFF) — causes halation for neurodivergent users
|
||||
2. **Amber accent is always meaningful** — signals interactivity, recording state, or brand identity. Never decorative
|
||||
3. **Tertiary text is large text only** — minimum 18px bold or 24px regular
|
||||
4. **Grain texture** at 2.5% opacity (dark) / 1.5% opacity (light)
|
||||
5. **All neutrals carry a warm amber undertone** for palette cohesion
|
||||
6. **60-30-10 rule:** 60% surface, 30% elevated surfaces, 10% amber accent
|
||||
|
||||
---
|
||||
|
||||
## 4. Typography
|
||||
|
||||
### Font Stack
|
||||
|
||||
| Role | Font | Source | Licence |
|
||||
|---|---|---|---|
|
||||
| **Display** | Instrument Serif Italic | Google Fonts | OFL |
|
||||
| **UI / Body** | Lexend (variable, 300–700) | Google Fonts | OFL |
|
||||
| **Mono** | JetBrains Mono | JetBrains | OFL |
|
||||
|
||||
```css
|
||||
@import url('https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@1&family=Lexend:wdth,wght@75..125,300..700&display=swap');
|
||||
|
||||
:root {
|
||||
--font-ui: "Lexend", system-ui, sans-serif;
|
||||
--font-display: "Instrument Serif", Georgia, serif;
|
||||
--font-mono: "JetBrains Mono", "Fira Code", monospace;
|
||||
}
|
||||
```
|
||||
|
||||
### Why Lexend
|
||||
|
||||
Lexend was designed by Bonnie Shaver-Troup specifically to improve reading proficiency for people with reading difficulties. It is a variable font with adjustable width axis, enabling users to dynamically adapt letter spacing to their own fluctuating visual-perceptual thresholds — a direct requirement from the Kon design principles. High x-height, generous spacing, optimised letterforms.
|
||||
|
||||
User-selectable alternatives in settings: Atkinson Hyperlegible Next, OpenDyslexic.
|
||||
|
||||
### Type Scale
|
||||
|
||||
Base: 16px. Ratio: 1.250 (Major Third).
|
||||
|
||||
| Label | Size | Weight | Line Height | Usage |
|
||||
|---|---|---|---|---|
|
||||
| Caption | 12px | 400 | 1.4 | Metadata, version numbers, tertiary labels. **Note:** 12px is the absolute floor — test on 1366×768 displays before locking in. ADHD users on budget laptops are a real segment. Consider bumping to 13px if legibility is marginal on low-DPI hardware |
|
||||
| Small | 13px | 400–500 | 1.5 | Button text, status indicators, badges |
|
||||
| Body Small | 13px | 400 | 1.5 | Secondary UI text, settings descriptions |
|
||||
| Body | 16px | 400 | 1.5 | Base body text, primary UI text |
|
||||
| Body Large | 18px | 400 | 1.6 | Lead paragraphs, onboarding text |
|
||||
| Transcript | 16–24px | 400 | 1.85 | Transcript reading (user-adjustable) |
|
||||
| H4 | 18px | 600 | 1.3 | Subsection headings, card titles |
|
||||
| H3 | 21px | 600 | 1.3 | Section headings |
|
||||
| H2 | 26px | 600 | 1.2 | Page titles |
|
||||
| H1 | 32px | 700 | 1.15 | Hero text (marketing only) |
|
||||
| Display | 26px | 400 italic | 1.1 | Wordmark (Instrument Serif only) |
|
||||
|
||||
### Typography Rules
|
||||
|
||||
**Do:**
|
||||
- Minimum 16px for all body text
|
||||
- 1.5× line spacing minimum for body
|
||||
- Left-aligned only — never centred or justified for body copy
|
||||
- Maximum 75-character line width
|
||||
- Sentence case for headings — never all-caps for extended text
|
||||
- Offer user-adjustable letter spacing via Lexend's variable width axis
|
||||
|
||||
**Never:**
|
||||
- Never use Instrument Serif for body or UI text — display/brand only
|
||||
- Never use italic for extended reading
|
||||
- Never go below 12px for any text
|
||||
- Never use more than 3 weights on a single screen
|
||||
- Never use decorative or script fonts anywhere
|
||||
|
||||
### Accessibility Typography Features
|
||||
|
||||
| Feature | Default | User-adjustable |
|
||||
|---|---|---|
|
||||
| Font family | Lexend | Lexend / Atkinson Hyperlegible Next / OpenDyslexic |
|
||||
| Font size (transcript) | 16px | 16–24px slider |
|
||||
| Letter spacing | Default | Adjustable via Lexend variable axis |
|
||||
| Line height | 1.5 (UI) / 1.85 (transcript) | 1.3–2.2 range |
|
||||
| Bionic reading | Off | Toggle |
|
||||
| Reduce motion | Follows system | Override toggle |
|
||||
|
||||
### Bionic Reading
|
||||
|
||||
Optional mode that bolds the first 1–3 letters of each word (typically half the word length, rounded up for short words) to create fixation points at word onset:
|
||||
|
||||
```
|
||||
Standard: The quick brown fox jumps over the lazy dog
|
||||
Bionic: The quick brown fox jumps over the lazy dog
|
||||
^^ ^^^ ^^^ ^^ ^^^ ^^ ^^ ^^ ^^
|
||||
```
|
||||
|
||||
Off by default. User-controlled toggle in settings.
|
||||
|
||||
### Fallback Stacks
|
||||
|
||||
| Context | Primary | Fallback |
|
||||
|---|---|---|
|
||||
| App (Tauri) | Lexend (bundled) | system-ui, sans-serif |
|
||||
| Marketing site | Lexend (Google Fonts) | system-ui, sans-serif |
|
||||
| Documents | Lexend (if installed) | Calibri, Segoe UI |
|
||||
| Email | system-ui | Arial, Helvetica |
|
||||
|
||||
---
|
||||
|
||||
## 5. Imagery & Illustration
|
||||
|
||||
### Photography Brief
|
||||
|
||||
**Subjects:** Textured surfaces (wood grain, concrete, weathered stone, warm-lit materials), architecture (brutalist, human-centred), close-up material photography. App screenshots on the warm dark UI.
|
||||
|
||||
**Human element:** Hands only — writing, holding a coffee, interacting with physical objects. Never face-to-camera. Never screens or devices. Let screenshot treatments handle product demonstration.
|
||||
|
||||
**Mood:** Warm colour temperature, natural light, soft and directional, low-to-medium contrast. "Late afternoon through a window."
|
||||
|
||||
**Off-limits:** AI-generated people, stock photos of people at screens, cold/clinical environments, anything resembling a SaaS landing page hero.
|
||||
|
||||
**Stock sources:** Unsplash or Pexels, curated into a single reference library of 20–30 images. The warm grain wash treatment unifies material from either source.
|
||||
|
||||
### Image Treatments
|
||||
|
||||
**Primary — Warm Grain Wash:**
|
||||
- Shift colour temperature toward amber (#e8a87c)
|
||||
- Grain texture overlay at 2–3% opacity
|
||||
- Slight vignette (10–15%)
|
||||
- Applied to all texture and architecture photography
|
||||
|
||||
**Secondary — Amber Duotone (high-impact moments only):**
|
||||
- Shadows: #0f0e0c
|
||||
- Highlights: #e8a87c
|
||||
- For hero sections, social feature images, milestone announcements
|
||||
|
||||
**Rules:**
|
||||
- Never apply colour treatments over hands/human elements
|
||||
- Screenshots are shown untreated — the UI is already brand-aligned
|
||||
- Textures and architecture always receive warm grain wash at minimum
|
||||
|
||||
### Illustration Approach
|
||||
|
||||
Kon does not use traditional illustration. Visual communication beyond photography uses:
|
||||
- Abstract waveform/sound ripple motifs in amber
|
||||
- Geometric line work — 2px stroke, amber on dark surfaces
|
||||
- Data visualisation-style graphics for explaining features
|
||||
|
||||
**Constraints:** Brand colours only. 2px stroke. No characters, mascots, or anthropomorphised elements. No gradients — flat colour with opacity variations.
|
||||
|
||||
### Empty States
|
||||
|
||||
Empty states are high-emotion moments for neurodivergent users — blank screens trigger freeze response.
|
||||
|
||||
| State | Treatment |
|
||||
|---|---|
|
||||
| First launch | Faint ambient waveform in `--accent-subtle`. Single action: press the record button |
|
||||
| Empty transcript | Waveform motif + "Press record or Ctrl+Shift+R" |
|
||||
| Empty task list | "Tasks will appear here when Kon finds them in your transcripts" |
|
||||
| Empty history | "Your transcriptions will be saved here" |
|
||||
| Failed transcription | "Something went wrong with that transcription. Your audio is saved — try again when you're ready." Clear recovery path, never blame the user. This is the highest-emotion failure state in the app |
|
||||
|
||||
**Principle:** Ambient presence, not demanding call to action. "I'm here when you're ready."
|
||||
|
||||
### Iconography
|
||||
|
||||
**Library:** Lucide Icons — open source, MIT licence, 2px stroke, rounded terminals.
|
||||
|
||||
**Rules:**
|
||||
- Every icon MUST be paired with a literal text label
|
||||
- No standalone icons without labels
|
||||
- Colour: `--text-tertiary` default, `--accent` when active
|
||||
- Size: 16px (navigation), 20px (feature areas), 24px (primary actions)
|
||||
- Never modify Lucide icons
|
||||
|
||||
**Core Set:**
|
||||
|
||||
| Function | Icon | Label |
|
||||
|---|---|---|
|
||||
| Dictation | `mic` | Dictation |
|
||||
| Files | `file-text` | Files |
|
||||
| Tasks | `square-check` | Tasks |
|
||||
| History | `clock` | History |
|
||||
| Settings | `settings` | Settings |
|
||||
| Record | `circle` | Record |
|
||||
| Stop | `square` | Stop |
|
||||
| Copy | `copy` | Copy |
|
||||
| Export | `download` | Export |
|
||||
| Clear | `x` | Clear |
|
||||
| Save | `save` | Save |
|
||||
| Collapse | `chevron-left` | Collapse |
|
||||
| Expand | `chevron-right` | Expand |
|
||||
|
||||
### AI Imagery Policy
|
||||
|
||||
- **Never** AI-generated images of people
|
||||
- AI textures, patterns, and backgrounds acceptable if run through brand treatment
|
||||
- AI waveform visualisations acceptable for marketing
|
||||
- Disclose AI generation where audience would reasonably expect to know
|
||||
|
||||
---
|
||||
|
||||
## 6. Motion & Animation
|
||||
|
||||
**Personality:** Slow, calm, deliberate. Elderflower, not espresso.
|
||||
|
||||
| Property | Value |
|
||||
|---|---|
|
||||
| Default easing | ease-out — cubic-bezier(0.2, 0.8, 0.2, 1) |
|
||||
| UI transitions | 150–200ms |
|
||||
| Decorative motion | 300–500ms |
|
||||
| Zone transitions | 300–500ms cross-fade |
|
||||
| Wordmark animation | Fade-in, 400ms |
|
||||
| Waveform mark (recording) | Amplitude pulse, 2s cycle, ease-in-out, clamped range |
|
||||
| Reduced motion | All animations → instant or single-frame |
|
||||
|
||||
**Never:** Bounce effects, screen shake, slide-from-offscreen, auto-playing content, aggressive attention-grabbing animation.
|
||||
|
||||
**Reduced motion implementation:**
|
||||
```css
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
*, *::before, *::after {
|
||||
animation-duration: 0.01ms !important;
|
||||
animation-iteration-count: 1 !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Social & Content
|
||||
|
||||
### Platform Priority
|
||||
|
||||
| Tier | Platform | Role |
|
||||
|---|---|---|
|
||||
| Primary | Reddit | Community participation, dev logs |
|
||||
| Secondary | Twitter/X | Build-in-public, feature GIFs |
|
||||
| Tertiary | YouTube | Milestone content only |
|
||||
| Passive | Mastodon | Cross-post from X |
|
||||
| Never | LinkedIn | Wrong audience, wrong culture |
|
||||
|
||||
### Key Subreddits
|
||||
|
||||
r/ADHD, r/productivity, r/neurodiversity, r/selfhosted, r/IndieDev, r/SomebodyMakeThis
|
||||
|
||||
**Reddit rule:** "If a post would work without mentioning Kon at all, it's a good post."
|
||||
|
||||
### Social Templates (Canva Brand Kit)
|
||||
|
||||
Four templates, dark background (#0f0e0c), grain overlay, Lexend body, amber accent:
|
||||
|
||||
1. **Dev Log Card** — 1200×675 (X) / 1200×900 (Reddit)
|
||||
2. **Feature Screenshot Frame** — 1200×675
|
||||
3. **Quote/Text Post** — 1200×1200
|
||||
4. **Announcement** — 1200×675
|
||||
|
||||
**Layout rules:** 60px padding, wordmark bottom-left (small, amber), Lexend only in templates, grain at 2.5%.
|
||||
|
||||
### Content Voice
|
||||
|
||||
At pre-launch: Jake's voice, not a brand voice. Direct, honest, no filter. Authenticity IS the brand for a solo founder.
|
||||
|
||||
---
|
||||
|
||||
## 8. Voice & Tone Guide
|
||||
|
||||
### Core Voice
|
||||
|
||||
"We sound like peace, not like static."
|
||||
|
||||
Kon speaks the way a thoughtful friend listens — calm, direct, never judgmental. The brand voice is astute, concise, and matter-of-fact. It never rambles, never condescends, never performs enthusiasm it doesn't feel.
|
||||
|
||||
### Catchphrase
|
||||
|
||||
**"Talk now, think later."**
|
||||
|
||||
### Tone by Context
|
||||
|
||||
| Context | Tone adjustment |
|
||||
|---|---|
|
||||
| Onboarding | Warm, encouraging, extremely simple. One instruction at a time |
|
||||
| Error messages | Calm, informative, solution-first. Never blame the user |
|
||||
| Marketing | Direct, occasionally provocative. Anti-subscription, pro-ownership |
|
||||
| Reddit/community | Jake's natural voice. Honest, self-deprecating, never promotional |
|
||||
| Feature descriptions | Matter-of-fact, benefit-led, no jargon. "Kon does X so you can Y" |
|
||||
| Empty states | Gentle, ambient, patient. "I'm here when you're ready" |
|
||||
|
||||
### Tone by Audience
|
||||
|
||||
The Brand Platform (`kon-brand-platform.md`, Section 17) contains a full Messaging Architecture with primary/supporting messages, anticipated objections, and persuasive responses for each audience. The voice flexes as follows:
|
||||
|
||||
| Audience | Tone shift | Key emphasis |
|
||||
|---|---|---|
|
||||
| **Neurodivergent individuals** | Warm, peer-to-peer, no clinical language | The problem you live with. We built this for the same reason |
|
||||
| **Writers & power users** | Slightly more technical, feature-aware | What it adds to your existing workflow. Respect their expertise |
|
||||
| **Privacy-conscious professionals** | Evidence-led, sceptical-friendly | Architectural transparency. Respect their distrust — it's earned |
|
||||
|
||||
### Example Copy
|
||||
|
||||
**Onboarding:**
|
||||
> Press the button. Start talking. That's it. Kon handles the rest.
|
||||
|
||||
**Error message:**
|
||||
> Recording interrupted — looks like the microphone disconnected. Your transcript up to this point is saved. Plug back in and pick up where you left off.
|
||||
|
||||
**Marketing (social):**
|
||||
> Your brain had 47 ideas on the drive home. By the time you found a pen, you remembered 3. Kon catches all 47. Locally. No subscription. No cloud. Just you and your thoughts.
|
||||
|
||||
**Empty state:**
|
||||
> Tasks will appear here when Kon finds them in your transcripts.
|
||||
|
||||
**Feature description:**
|
||||
> Kon transcribes your voice on your device. Nothing leaves your machine. No internet required.
|
||||
|
||||
### Words to Use / Words to Avoid
|
||||
|
||||
| Use | Avoid |
|
||||
|---|---|
|
||||
| Capture | Productivity hack |
|
||||
| Clarity | Optimise |
|
||||
| Your device | The cloud |
|
||||
| Lifetime | Subscribe |
|
||||
| Brain dump | Workflow |
|
||||
| Think out loud | Leverage |
|
||||
| Thoughts | Data points |
|
||||
| Simple | Easy (implies judgement about difficulty) |
|
||||
|
||||
---
|
||||
|
||||
## 9. Touchpoint Priority
|
||||
|
||||
### Tier 1 — Build Now
|
||||
|
||||
| Touchpoint | Impact | Why |
|
||||
|---|---|---|
|
||||
| **The app itself** | 10 | The app IS the brand. Every design decision in these guidelines lives or dies here |
|
||||
| **Landing page** | 9 | Single well-designed page. Dark, warm, app screenshots, clear value prop, download CTA |
|
||||
| **GitHub/Gitea README** | 8 | For the self-hosted/privacy crowd. Technical credibility, screenshots, honest tone |
|
||||
|
||||
### Tier 2 — Build for Launch
|
||||
|
||||
| Touchpoint | Impact | Why |
|
||||
|---|---|---|
|
||||
| **Social templates** | 7 | The 4-template Canva kit from Phase 5 |
|
||||
| **Demo video** | 7 | Single 2-minute "why I built this" + product demo |
|
||||
| **Reddit launch post** | 8 | One shot — needs to be templated before launch day |
|
||||
|
||||
### Tier 3 — Build When Needed
|
||||
|
||||
| Touchpoint | Impact | Why |
|
||||
|---|---|---|
|
||||
| **Email capture / newsletter** | 5 | When there's an audience to nurture |
|
||||
| **Documentation site** | 5 | When the product is complex enough to need it |
|
||||
| **App store listing** | 6 | When distribution moves beyond direct download |
|
||||
|
||||
### Reddit Launch Post Template
|
||||
|
||||
Impact 8, one shot. Use this structure for the primary launch post (r/ADHD or r/selfhosted depending on angle).
|
||||
|
||||
**Title format:** "I built [thing] because [personal problem]" — never "Introducing..." or "Check out..."
|
||||
|
||||
**Post anatomy (target: 400–600 words):**
|
||||
|
||||
| Section | Word count | Content |
|
||||
|---|---|---|
|
||||
| **1. The problem** | 80–100 | Your lived experience. The paralysis, the stasis, the tools that made it worse. First person, specific, emotional. This is the hook — if this doesn't resonate, they stop reading |
|
||||
| **2. The journey** | 80–100 | How you got from frustration to building. The DND transcriber, seeing Whispr's price, realising local transcription was possible. Include a doubt or false start — "I nearly didn't..." |
|
||||
| **3. What I built** | 100–150 | What Kon actually does, in plain language. Voice capture, local transcription, automatic task extraction. Lead with the mechanism, not the features. Screenshots here (2–3 max, warm dark UI) |
|
||||
| **4. The principles** | 60–80 | Local-first, lifetime licence, no subscription, no data leaves your device. These are the lines that get upvoted. State them plainly |
|
||||
| **5. What's next** | 40–60 | Where you're headed, what feedback you want. End with a specific question — "What would make this useful for you?" drives comments |
|
||||
|
||||
**Tone:** Jake's natural voice. Self-deprecating where genuine. Never promotional. Never "we" — always "I."
|
||||
|
||||
**Checklist before posting:**
|
||||
- [ ] Read the subreddit rules — some ban self-promotion entirely
|
||||
- [ ] Check the subreddit's recent posts — is now a good time or is there drama?
|
||||
- [ ] Screenshots are high-quality, warm dark UI visible, no marketing polish
|
||||
- [ ] The post works as a story even if the reader never clicks the link
|
||||
- [ ] No "please upvote" or engagement bait
|
||||
- [ ] Link to download/repo is present but not the focus
|
||||
- [ ] Flair is correct for the subreddit
|
||||
|
||||
**Anti-patterns (will get you killed on Reddit):**
|
||||
- "We're excited to announce..." — corporate speak, instant downvote
|
||||
- Posting in multiple subreddits simultaneously — looks like spam
|
||||
- Responding to criticism defensively — thank them, note it, move on
|
||||
- Linking to a landing page instead of the actual product
|
||||
- Astroturfing with alt accounts
|
||||
|
||||
### Launch Day Sequence (All Platforms)
|
||||
|
||||
| Order | Platform | Asset | Timing |
|
||||
|---|---|---|---|
|
||||
| 1 | YouTube | "Why I built this" demo (2 min) | Upload morning, unlisted until step 3 |
|
||||
| 2 | Twitter/X | Launch thread (problem → product → principles → link) | Post, pin to profile |
|
||||
| 3 | Reddit | Primary launch post (r/ADHD or r/selfhosted) | Post after X thread is live, include YouTube link |
|
||||
| 4 | Reddit | Secondary post (alternate subreddit, different angle) | 24–48 hours after primary |
|
||||
| 5 | Mastodon | Cross-post from X | Same day as X |
|
||||
|
||||
---
|
||||
|
||||
## 10. Maintenance
|
||||
|
||||
**Monthly:** Review social templates — cohesive feed? Any drift?
|
||||
|
||||
**Quarterly:** Review guidelines against actual output. Update guidelines to match reality, not the other way around.
|
||||
|
||||
**Annually:** Full brand review. Run a fresh visual audit (Phase 1). Check competitive landscape. Does the white space position still hold?
|
||||
|
||||
**Signals to upgrade:**
|
||||
- Materials don't match the quality of the product
|
||||
- Competitors have visually overtaken you
|
||||
- You're spending more time on design than a freelancer would cost
|
||||
- The guidelines don't cover scenarios you're actually encountering
|
||||
|
||||
---
|
||||
|
||||
## Appendix: Designer Briefing Template
|
||||
|
||||
When commissioning external design work, provide:
|
||||
|
||||
1. **This document** — the complete brand guidelines
|
||||
2. **The Brand Platform** (`kon-brand-platform.md`) — strategic context
|
||||
3. **Specific deliverable** — what you need, in what format, by when
|
||||
4. **"We Are / We Are Not" table** — from Section 1
|
||||
5. **Anti-references** — Notion (too much going on), Tiimo (values betrayal), generic SaaS (white/blue/FAANG)
|
||||
6. **Inspiration references** — The Barbican, Amsterdam urban design, Muji, Nujabes album art
|
||||
7. **Budget and timeline**
|
||||
|
||||
---
|
||||
|
||||
*This is a living document. The brand is not the guidelines — the brand is every interaction filtered through them. Consistency compounds.*
|
||||
308
docs/brand/kon-brand-platform.md
Normal file
308
docs/brand/kon-brand-platform.md
Normal file
@@ -0,0 +1,308 @@
|
||||
# Kon — Brand Platform
|
||||
|
||||
**Version:** 1.0
|
||||
**Date:** 2026/03/21
|
||||
**Source:** Brand Gauntlet — full six-round discovery with founder
|
||||
|
||||
---
|
||||
|
||||
## 1. Brand Purpose
|
||||
|
||||
Kon exists because the tools meant to organise your thoughts demand more mental energy than the thoughts themselves. It was built by someone who spent more time managing systems than getting ideas on paper — and who believes nobody should have to earn a PhD in file structures just to think clearly.
|
||||
|
||||
## 2. Brand Vision
|
||||
|
||||
A world where capturing and organising your thoughts costs zero cognitive effort. Where the tools you rely on run on your device, respect your privacy, and never punish you for a missed day. Where neurodivergent people have access to the same frictionless workflows everyone else takes for granted — and where Kon is the first piece of a wider ecosystem that levels that playing field entirely.
|
||||
|
||||
## 3. Brand Enemy
|
||||
|
||||
Software that treats your thoughts as its product. The subscription-or-nothing model. Cloud dependency that fails you mid-sentence on a car journey. Tools designed for neurotypical brains and marketed as "for everyone." The entire paradigm of "you will own nothing and be happy about it."
|
||||
|
||||
## 4. Brand Values
|
||||
|
||||
| Value | What it means in practice |
|
||||
|---|---|
|
||||
| **Ownership** | Your data stays on your device. Your licence doesn't expire. You own the tool, it doesn't own you. Most companies would disagree — their revenue model depends on the opposite. |
|
||||
| **Honesty** | No dark patterns, no guilt messaging, no streak-shaming. If Kon can't do something, it says so. The brand voice is direct and transparent, even when that's commercially uncomfortable. |
|
||||
| **Cognitive respect** | Every design decision is measured by whether it reduces mental load or adds to it. If a feature requires more than 90 seconds to understand, it doesn't ship. This isn't a nice-to-have — it's the core design constraint. |
|
||||
| **Accessibility as default** | Neurodivergent-first design, not neurodivergent-as-afterthought. The app is built for the people most tools forget, and those design choices make it better for everyone. |
|
||||
|
||||
## 5. Brand Tenets
|
||||
|
||||
1. **"How can I make this person feel seen and heard?"** — Ask before every customer interaction. Kon is a service animal, not a showpiece.
|
||||
2. **"Does this add or remove complexity from daily life?"** — Ask before every product decision. If it adds complexity, it doesn't ship.
|
||||
3. **"Is this scientifically backed? Is it respectful? Is it honest?"** — Ask before every piece of content. No fabricated claims, no condescension, no spin.
|
||||
4. **"Is the message clear and unambiguous?"** — Ask before every touchpoint. Literal labels always. If it could be misread, rewrite it.
|
||||
5. **"Integrity, honour, respect."** — The governing principle for all relationships. Customers, partners, yourself.
|
||||
6. **"Progressive disclosure."** — The creative constraint. Never show the full complexity. Reveal only the next step. This keeps the brand honest about what users actually need in the moment.
|
||||
7. **"Build the ecosystem."** — The ambition tenet. Kon is the first piece, not the whole picture. Every decision should move toward a frictionless cognitive load reduction stack.
|
||||
|
||||
## 6. Target Audience
|
||||
|
||||
**Primary: The Misfiring Engine**
|
||||
|
||||
Someone with a head full of half-started ideas and genuine capability, drowning in sensory noise and subscription fatigue. They've tried Notion, Obsidian, Apple Notes, voice memos — each one felt like it was designed for someone else's brain. They're not lazy; their friends describe them as having "so much energy but so unfocused." They believe they deserve better tools, but they fear every option they try doesn't have their specific issues in mind.
|
||||
|
||||
Their Tuesday: wake up, scroll bad news, feel bad. Go to work, bright lights, headache. Go shopping, overwhelmed juggling the list and the people and the sensory overload. Get home exhausted, no energy to cook, waste money on takeout even though they just went food shopping.
|
||||
|
||||
At 3am: everything. Nothing specific. Thoughts blipping in and out of existence, impossible to pin down.
|
||||
|
||||
**Emotional precondition:** Frustration. They don't open Kon feeling aspirational — they open it thinking "I need to get this OUT of my head."
|
||||
|
||||
**Identity reinforcement:** They want to be their authentic self and self-actualise. Kon helps them believe that's possible by removing the friction between thought and action.
|
||||
|
||||
**Trust prerequisite:** They need to believe the founder built this to solve their own problem — not to monetise their attention.
|
||||
|
||||
**Secondary audiences (post-validation):** Writers and creatives seeking unblocking. TTRPG game masters. Privacy-conscious professionals. Power users wanting another tool in the belt.
|
||||
|
||||
## 7. Brand Promise
|
||||
|
||||
When you speak, Kon listens without judgement, organises without friction, and gives your thoughts back to you in a form you can act on — with nothing leaving your device and nothing expiring at the end of the month.
|
||||
|
||||
## 8. Onliness Statement
|
||||
|
||||
We are the only **voice-first capture tool** that **runs entirely on your device with no subscription** for **neurodivergent people** who want **to turn mental chaos into clarity** during **an era where every tool demands your data, your money, and your attention.**
|
||||
|
||||
## 9. Brand Personality
|
||||
|
||||
**Archetype blend:** Sage (primary) + Magician (secondary)
|
||||
|
||||
Kon understands your thoughts (Sage) and transforms them into something actionable (Magician). It listens more than it speaks. It matches your energy. It's the straight person who's unknowingly comedic — genuine, not performed.
|
||||
|
||||
**Tone dimensions:**
|
||||
- Formal (1) ↔ Casual (10): **7**
|
||||
- Serious (1) ↔ Funny (10): **5**
|
||||
- Respectful (1) ↔ Irreverent (10): **5**
|
||||
- Enthusiastic (1) ↔ Matter-of-fact (10): **7**
|
||||
|
||||
**We Are / We Are Not:**
|
||||
|
||||
| We are | We are not |
|
||||
|---|---|
|
||||
| Astute | Rambling |
|
||||
| Concise | Rude |
|
||||
| Direct | Dishonest |
|
||||
| Listening | Judging |
|
||||
| Peace | Static |
|
||||
|
||||
**How Kon shows up:** Arrives in thrifted quality clothes — function over form, but with taste. At an event, asks questions, talks about life and experiences, never pitches. Naturally funny without trying. After a few drinks: giddy, keeps the bit going. The filter comes off but the person underneath is the same.
|
||||
|
||||
## 10. Brand Voice
|
||||
|
||||
**Register:** Casual but never sloppy. British English. No corporate filler.
|
||||
|
||||
**Vocabulary:** Plain language, literal labels, no jargon. Technical accuracy when needed, but explained in human terms.
|
||||
|
||||
**Rhythm:** Short sentences. Matter-of-fact. Warm but not effusive.
|
||||
|
||||
**Example — social media post:**
|
||||
> Your brain had 47 ideas on the drive home. By the time you found a pen, you remembered 3. Kon catches all 47. Locally. No subscription. No cloud. Just you and your thoughts.
|
||||
|
||||
**Example — error message:**
|
||||
> Recording interrupted — looks like the microphone disconnected. Your transcript up to this point is saved. Plug back in and pick up where you left off.
|
||||
|
||||
**Example — onboarding:**
|
||||
> Press the button. Start talking. That's it. Kon handles the rest.
|
||||
|
||||
## 11. Brand Story
|
||||
|
||||
Jake spent years cycling through note-taking tools — OneNote, Google Suite, then Obsidian. Obsidian was incredible, but he spent more time agonising over file structures, tags, and links than actually capturing his thoughts. The system demanded more energy than the thinking it was supposed to support.
|
||||
|
||||
Meanwhile, executive dysfunction made the simplest tasks feel impossible. Not laziness — paralysis. The feeling of being in stasis, waiting for something to kick-start the doing. Every productivity tool assumed you could already activate. None of them helped you start.
|
||||
|
||||
Then he saw Whispr Flow's monthly price tag and thought: I could build this myself. He remembered experimenting with local transcription for his DND game sessions. The technology existed. The only missing piece was software that respected both the user's brain and their data.
|
||||
|
||||
Kon was born from that collision — the frustration of systems that serve themselves, and the realisation that local AI had matured enough to serve the user instead.
|
||||
|
||||
## 12. Competitive Position
|
||||
|
||||
**Positioning axes:** Privacy (cloud → local) × Cognitive accessibility (neurotypical-default → neurodivergent-first)
|
||||
|
||||
Kon occupies the quadrant no competitor currently holds: local-first AND neurodivergent-first.
|
||||
|
||||
| Competitor | Privacy | Cognitive accessibility | Pricing |
|
||||
|---|---|---|---|
|
||||
| Whispr Flow | Cloud-dependent | Neurotypical-default | Monthly subscription |
|
||||
| Tiimo | Cloud-based | Neurodivergent-aware | Removed lifetime licence |
|
||||
| Google Recorder | Walled garden (Pixel only) | Neurotypical-default | Free (data cost) |
|
||||
| Otter.ai | Cloud-dependent | Neurotypical-default | Freemium/subscription |
|
||||
| **Kon** | **Fully local** | **Neurodivergent-first** | **Lifetime licence** |
|
||||
|
||||
**Key differentiators:** Local processing, lifetime licence, voice-first capture, neurodivergent-first design, zero-friction onboarding (under 90 seconds).
|
||||
|
||||
**Key vulnerability:** Solo founder, early-stage, thin proof base, no integration ecosystem yet.
|
||||
|
||||
## 13. Brand Manifesto
|
||||
|
||||
You've tried the apps. You've built the systems. You've watched tutorials about building a second brain and felt your first one shut down halfway through.
|
||||
|
||||
You are not the problem.
|
||||
|
||||
The tools are wrong. They were built for people who already know how to organise. For brains that activate on command. For users who don't mind handing their thoughts to a server farm and paying monthly for the privilege.
|
||||
|
||||
Kon is different.
|
||||
|
||||
Press a button. Start talking. Your thoughts — all of them, the messy ones, the half-formed ones, the 3am ones that vanish by morning — captured instantly, organised automatically, stored on your device. No internet required. No subscription. No judgement.
|
||||
|
||||
We built this because we needed it. Because executive dysfunction isn't a productivity hack away from being solved. Because your inner monologue shouldn't cost £9.99 a month. Because you deserve a tool that listens like a friend and works like a coach.
|
||||
|
||||
Talk now. Think later. The clarity will follow.
|
||||
|
||||
## 14. Brand Essence
|
||||
|
||||
**Clarity without friction.**
|
||||
|
||||
Everything Kon does — voice capture, local processing, automatic organisation, lifetime ownership — serves this single concept. If a decision reinforces frictionless clarity, it's right. If it doesn't, it's wrong.
|
||||
|
||||
## 15. Benefits Ladder
|
||||
|
||||
| Level | Benefit |
|
||||
|---|---|
|
||||
| **Functional** | Captures voice, transcribes locally, organises thoughts into actionable tasks — with no internet dependency and no subscription. |
|
||||
| **Emotional** | Relief. The feeling of the blockage being cleared. Permission to be messy, unfocused, and still make progress. |
|
||||
| **Social** | "I finally have a system that works for my brain" — signals self-awareness and agency, not dysfunction. Reframes neurodivergence from limitation to difference. |
|
||||
| **Self-actualisation** | "I finally wrote that book." Kon clears the path between who you are and who you want to become. |
|
||||
|
||||
## 16. Reasons to Believe
|
||||
|
||||
1. **Working prototype** — local transcription proven technically feasible with Whisper and Parakeet engines running on-device.
|
||||
2. **Founder's lived experience** — built to solve the founder's own executive dysfunction, not to chase a market opportunity.
|
||||
3. **Neurodivergent validation** — direct positive feedback from Roo (background in neurodivergent support, ADHD themselves).
|
||||
4. **Research-backed design** — design principles grounded in peer-reviewed accessibility research (Rello & Baeza-Yates 2016, Kuster et al. 2018, empirical HCI onboarding thresholds).
|
||||
5. **Lifetime licence commitment** — publicly stated, non-negotiable. Revenue model documented in economic analysis.
|
||||
|
||||
**Evidence gap:** Beta user testimonials, measurable outcome data, and wider community validation are the immediate priorities for strengthening the proof base.
|
||||
|
||||
## 17. Messaging Architecture
|
||||
|
||||
### Audience 1: Neurodivergent individuals (ADHD, autism, executive dysfunction)
|
||||
|
||||
**Primary message:** Kon captures your thoughts the moment they appear — no friction, no cloud, no subscription. Just speak and it's done.
|
||||
|
||||
**Supporting messages:**
|
||||
- Designed for brains that work differently, not adapted as an afterthought
|
||||
- Everything runs on your device — your thoughts never leave your machine
|
||||
- Lifetime licence. Pay once, own it forever
|
||||
|
||||
**Anticipated objections:**
|
||||
- "I've tried productivity apps before and they all fail me eventually"
|
||||
- "How is this different from just talking to ChatGPT?"
|
||||
- "It's just one developer — will this still be around in a year?"
|
||||
|
||||
**Persuasive responses:**
|
||||
- "Kon isn't a productivity system — it's a capture tool. There's nothing to set up, nothing to maintain, nothing to fail. Press a button and talk."
|
||||
- "ChatGPT needs internet, sends your data to OpenAI, and costs a subscription. Kon runs locally, keeps your data on your device, and you own it outright."
|
||||
- "The lifetime licence model means Kon doesn't need exponential growth to survive. It's built to be sustainable, not to scale at all costs."
|
||||
|
||||
**Proof points:** Working prototype, founder's lived experience, Roo's validation, research-backed design.
|
||||
|
||||
**Tone:** Warm, direct, no clinical language. Speak as a peer, not a provider.
|
||||
|
||||
### Audience 2: Writers, creatives, and power users
|
||||
|
||||
**Primary message:** Kon turns brain dumps into structured output — a new tool in your creative workflow that works offline and integrates with what you already use.
|
||||
|
||||
**Supporting messages:**
|
||||
- Voice-first capture for when typing is the bottleneck
|
||||
- Export to Markdown, plain text, CSV, HTML, SRT, WebVTT
|
||||
- Template system for structured capture (meeting notes, brainstorms, outlines)
|
||||
|
||||
**Anticipated objections:**
|
||||
- "I already have a workflow that works"
|
||||
- "Can it integrate with Obsidian/Notion/my existing tools?"
|
||||
|
||||
**Persuasive responses:**
|
||||
- "Kon doesn't replace your workflow — it adds a capture layer. Speak your thoughts, export to your tool of choice."
|
||||
- "Export formats cover all major tools. Direct integrations are on the roadmap."
|
||||
|
||||
**Proof points:** Working export system, template functionality, DND transcription origin story.
|
||||
|
||||
**Tone:** Slightly more technical, feature-focused. Respect their existing expertise.
|
||||
|
||||
### Audience 3: Privacy-conscious professionals
|
||||
|
||||
**Primary message:** Everything runs on-device. No data leaves your machine. No cloud. No telemetry.
|
||||
|
||||
**Supporting messages:**
|
||||
- Local Whisper/Parakeet models — no API calls
|
||||
- No account required
|
||||
- Lifetime licence — no ongoing data relationship
|
||||
|
||||
**Anticipated objections:**
|
||||
- "How can I verify it's actually local?"
|
||||
- "What about updates and model improvements?"
|
||||
|
||||
**Persuasive responses:**
|
||||
- "Kon is open about its architecture. The transcription models run entirely on your hardware. Network monitor confirms zero outbound traffic during transcription."
|
||||
- "Model updates are downloaded and installed locally — same as any desktop software update."
|
||||
|
||||
**Proof points:** Technical architecture, no-account-required design, open development approach.
|
||||
|
||||
**Tone:** More technical, evidence-led. Respect their scepticism — it's earned.
|
||||
|
||||
## 18. Visual Direction Bridge
|
||||
|
||||
### Mood / Energy
|
||||
|
||||
Warm, spacious, unhurried. The sonic reference is Jack Johnson, M83 (Outro), Nujabes (Feather), Metronomy (The Beach) — lo-fi but layered, emotionally honest, never aggressive. The visual equivalent: amber light through a window, worn wood surfaces, a well-organised desk with nothing unnecessary on it.
|
||||
|
||||
### Semiotic Territory
|
||||
|
||||
**Dominant codes to break:**
|
||||
- Productivity apps default to clean white/blue, sharp geometric sans-serifs, dashboard-heavy interfaces. Kon should feel nothing like a SaaS dashboard.
|
||||
- Note-taking tools trend toward complexity pride — graph views, backlink maps, plugin ecosystems. Kon should feel like the opposite of that visual noise.
|
||||
|
||||
**Emergent codes to explore:**
|
||||
- Warm brutalism — honest materials, structural clarity, but with human warmth. The Barbican metaphor.
|
||||
- Textured surfaces — grain, warmth, depth. Not flat design, not skeuomorphism. Something tactile.
|
||||
- Serif/sans-serif pairing for personality — the legacy app's Instrument Serif + DM Sans combination already occupies this territory well.
|
||||
|
||||
### Anti-References
|
||||
|
||||
- Notion — too much going on, clunky, feature-density as identity
|
||||
- Tiimo — removed lifetime licence (values betrayal)
|
||||
- Generic SaaS — white/blue, FAANG aesthetics, corporate trust signals
|
||||
- Any tool that looks like it was designed in San Francisco for San Francisco
|
||||
|
||||
### Inspiration References (outside category)
|
||||
|
||||
- **The Barbican** — brutalist structure creating warmth and safety inside
|
||||
- **Amsterdam urban design** — infrastructure built for people, not machines
|
||||
- **VW Buggy** — iconic simplicity, unpretentious, does what it says
|
||||
- **Muji** — function-first design with quiet quality and warmth
|
||||
- **Nujabes album art** — warm, layered, lo-fi, contemplative
|
||||
|
||||
### Typography & Colour Instincts
|
||||
|
||||
**Typography:** The legacy app uses DM Sans (body) + Instrument Serif italic (display). The design spec recommends Lexend or Atkinson Hyperlegible Next for accessibility. The combination of a warm display serif with a highly readable sans-serif body font is the right territory — personality in the headers, accessibility in the content.
|
||||
|
||||
**Colour:** The legacy palette is strong and already aligned with the brand strategy:
|
||||
- Dark theme: warm blacks (#0f0e0c), amber/copper accent (#e8a87c), warm off-white text (#f0ece4)
|
||||
- Light theme: warm off-whites (#faf8f5), muted copper (#d4956a)
|
||||
- Never pure black on pure white (research-backed — halation effect)
|
||||
- Grain texture overlay for tactile warmth
|
||||
|
||||
**Decorative elements:** The Sinhala character (කෝ) and fox mark from the legacy app have personality. Whether these carry forward depends on whether they serve the brand story or are legacy artefacts — worth testing with the target audience.
|
||||
|
||||
### Kapferer Brand Identity Prism
|
||||
|
||||
| Facet | Kon |
|
||||
|---|---|
|
||||
| **Physique** | Warm amber tones, grain texture, serif/sans-serif typography pairing, clean but not sterile interfaces |
|
||||
| **Personality** | Sage/Magician. Calm, astute, direct. Unknowingly funny. Matches your energy |
|
||||
| **Culture** | Ownership, honesty, cognitive respect, accessibility as default. Anti-subscription, anti-surveillance |
|
||||
| **Relationship** | Active listener — "just a mirror." Fun, direct, best interests at heart. Not a lording big ego |
|
||||
| **Reflection** | Appears to be: a productivity app. This perception gap must be closed through messaging |
|
||||
| **Self-Image** | "I can finally think clearly. I have a tool that works for MY brain." Agency, not dependency |
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. **Brand Forge** — expand this platform into a full visual identity system: colour palette, typography, iconography, imagery direction, layout principles, component design language, and usage rules. The Visual Direction Bridge (Section 18) serves as the creative brief.
|
||||
2. **Touchpoint Audit** — review the legacy app, any existing web presence, and social accounts against this platform. Identify what's aligned, what needs to change, and what's missing.
|
||||
3. **Content Strategy** — translate the Messaging Architecture (Section 17) into a practical content plan for launch.
|
||||
|
||||
---
|
||||
|
||||
*This is a living document. Revisit quarterly in the first year, annually after that. Strategy that sits in a drawer is strategy that failed.*
|
||||
60
docs/brief/README.md
Normal file
60
docs/brief/README.md
Normal file
@@ -0,0 +1,60 @@
|
||||
<!-- Source: Kon Master Brief — split 2026/03/20 -->
|
||||
|
||||
# Kon — Master Brief Index
|
||||
|
||||
**Last updated:** 2026/03/20
|
||||
**Status:** MVP — approaching closed beta
|
||||
**Owner:** Jake (personal project, potential roll-up into CORBEL Ltd if successful)
|
||||
|
||||
Modular split of the Kon master brief. Each file is self-contained. The original lives at `input/inbox/kon-master-brief.md`.
|
||||
|
||||
---
|
||||
|
||||
## Part 1: Project Brief
|
||||
|
||||
| § | File | Summary |
|
||||
|---|---|---|
|
||||
| 1 | [what-kon-is.md](what-kon-is.md) | Core thesis — voice-first, local-only, zero-friction productivity for executive dysfunction |
|
||||
| 2 | [target-audience.md](target-audience.md) | Beachhead (neurodivergent) and secondary audiences |
|
||||
| 3 | [tech-stack.md](tech-stack.md) | Tauri/Rust/Svelte, Whisper, local LLM, RAG, MCP, sync, dependencies |
|
||||
| 4 | [feature-set.md](feature-set.md) | MVP features, post-MVP, and parked ideas |
|
||||
| 4* | [design-principles.md](design-principles.md) | Typography, colour, interaction, onboarding, adaptive UI |
|
||||
| 5 | [pricing-model.md](pricing-model.md) | Free/Pro/Cloud tiers, rationale, Van Westendorp validation |
|
||||
| 6 | [legal-compliance.md](legal-compliance.md) | Code signing, GDPR, EAA, pre-launch checklists, business structure |
|
||||
| 7 | [distribution-strategy.md](distribution-strategy.md) | Positioning, channels, influencers, 4-phase rollout, 90-day calendar |
|
||||
| 8 | [key-risks.md](key-risks.md) | Risk/mitigation table |
|
||||
| 9 | [success-metrics.md](success-metrics.md) | Business milestones and neuro-inclusive product metrics |
|
||||
| 10 | [open-questions.md](open-questions.md) | Resolved decisions and still-open questions |
|
||||
|
||||
## Part 2: Micro-SaaS Playbook
|
||||
|
||||
| File | Summary |
|
||||
|---|---|
|
||||
| [micro-saas-playbook.md](micro-saas-playbook.md) | 9 patterns from Starter Story research, each mapped to Kon's position |
|
||||
|
||||
## Part 3: Market Research
|
||||
|
||||
| § | File | Summary |
|
||||
|---|---|---|
|
||||
| 11 | [market-size-demographics.md](market-size-demographics.md) | TAM, psychology, economic upside |
|
||||
| 12 | [user-sentiment.md](user-sentiment.md) | Abandon-shame cycle, frustrations, demand signals |
|
||||
| 13 | [competitive-landscape.md](competitive-landscape.md) | Tiimo, Structured, Goblin.tools, and 5 others — plus Kon's advantages |
|
||||
| 14 | [why-current-tools-fail.md](why-current-tools-fail.md) | Cognitive overhead, latency, app fatigue |
|
||||
| 15 | [feature-validation.md](feature-validation.md) | Voice input, body doubling, local-first — research backing |
|
||||
| 16 | [lifetime-licence-economics.md](lifetime-licence-economics.md) | Affinity, iA Writer, Sublime Text precedents and risks |
|
||||
| 17 | [desktop-distribution.md](desktop-distribution.md) | Tauri advantages, code signing, discovery patterns |
|
||||
| 18 | [influencer-landscape.md](influencer-landscape.md) | Creators, podcasts, newsletters, UK orgs, sponsorship costs |
|
||||
| 19 | [b2b-enterprise.md](b2b-enterprise.md) | Corporate programmes, Access to Work, deployment, channel partners |
|
||||
| 20 | [research-gaps.md](research-gaps.md) | Outstanding investigation items |
|
||||
|
||||
## Appendix A: Empirical Evidence Base
|
||||
|
||||
| App. | File | Summary |
|
||||
|---|---|---|
|
||||
| A1 | [appendix-implementation-intentions.md](appendix-implementation-intentions.md) | If-then planning — d = 0.99 in clinical populations |
|
||||
| A2 | [appendix-ai-body-doubling.md](appendix-ai-body-doubling.md) | AI body doubles match human efficacy (p = 1.000) |
|
||||
| A3 | [appendix-cognitive-ergonomics.md](appendix-cognitive-ergonomics.md) | Spacing > specialised fonts; personalisation essential |
|
||||
| A4 | [appendix-latency-memory.md](appendix-latency-memory.md) | WM deficits (d = 1.63–2.03) make local-first a cognitive requirement |
|
||||
| A5 | [appendix-hitl-scaffolding.md](appendix-hitl-scaffolding.md) | Autonomy-supportive AI design principles |
|
||||
| A6 | [appendix-voice-interfaces.md](appendix-voice-interfaces.md) | Voice is 3x faster; primary accessibility mechanism |
|
||||
| A7 | [appendix-evolutionary-psychology.md](appendix-evolutionary-psychology.md) | ADHD as exploration bias; tools benefit the most impaired most |
|
||||
18
docs/brief/appendix-ai-body-doubling.md
Normal file
18
docs/brief/appendix-ai-body-doubling.md
Normal file
@@ -0,0 +1,18 @@
|
||||
<!-- Source: Kon Master Brief — Appendix A2: AI Body Doubling -->
|
||||
|
||||
## A2. AI Body Doubling — Controlled Studies
|
||||
|
||||
**Core finding:** AI-driven body doubles are statistically indistinguishable from human body doubles for task efficiency and sustained attention (p = 1.000), whilst eliminating the social anxiety that many neurodivergent users experience with human co-presence.
|
||||
|
||||
**Primary evidence:**
|
||||
- **Ara et al. 2025** (arXiv:2509.12153): 12 adults with ADHD in a VR bricklaying task across three conditions — alone (C1), human body double (C2), AI body double (C3). Repeated-measures ANOVA: **F(2,22) = 6.51, p = 0.006**. Both human and AI body doubles improved task efficiency by **27–30%** over working alone (8.49 vs 10.82 and 11.06 bricks per minute). **No significant difference between human and AI (p = 1.000)**. Some participants preferred AI specifically because it reduced social anxiety and performance pressure.
|
||||
- **Eagle, Baltaxe-Admony & Ringland 2024** (*ACM TACCESS*): Survey of **193 neurodivergent participants** establishing that body doubling operates on a continuum of space/time and mutuality. Non-human presence — animated characters, "Study With Me" videos, even ambient audio — can function as a body double, grounded in parasocial relationship theory.
|
||||
- **O'Connell et al. 2024** (*ACM/IEEE HRI '24*): Socially assistive robot (Blossom) as body double for 11 ADHD university students over three weeks. **91% voluntarily continued using the robot**. System Usability Scale score: **83.86** (above "good" threshold). Non-judgmental passive presence was the most-valued attribute.
|
||||
- **Lalwani, Saleh & Salam 2025** (*HRI '25*): Robot companions providing active micro-scaffolding (goal reminders, encouragement) outperformed mere passive presence. 80% of 15 ADHD participants expressed interest in continued use — suggesting the ideal design combines ambient presence with context-aware nudges.
|
||||
- **Cuber et al. 2024** (*ACM CHI '24*): VR study environment for 27 ADHD university students across up to 12 sessions. **Significant increases in concentration, motivation, and effort** during VR sessions vs. baseline.
|
||||
- **Schuenke, Dickenson & Moore 2025** (*ACM ASSETS '25*): First study to use EEG for objective neurophysiological markers of attentional state during body doubling — moving beyond self-report.
|
||||
- **Papadopoulos 2025** (*SAGE*): AI chatbot use among autistic individuals provides **"qualitatively different and more profound"** support through judgment-free, on-demand interaction.
|
||||
|
||||
**Theoretical basis:** Barkley's (1997) model of ADHD as a disorder of behavioural inhibition prescribes externalisation of executive functions — moving regulatory demands from impaired internal systems into the environment. Body doubling is precisely this: an external source of temporal anchoring, accountability, and arousal regulation.
|
||||
|
||||
**Implication for Kon:** The low-fi "Focus Room" (section 4) is strongly validated. Combine ambient AI presence with context-aware nudges for maximum effect. The AI option specifically reduces barriers for autistic users whilst maintaining comparable efficacy. Design should include: simulated progress indicators, rhythmic work pacing cues, and subtle ambient motion for divided attention support.
|
||||
25
docs/brief/appendix-cognitive-ergonomics.md
Normal file
25
docs/brief/appendix-cognitive-ergonomics.md
Normal file
@@ -0,0 +1,25 @@
|
||||
<!-- Source: Kon Master Brief — Appendix A3: Cognitive Ergonomics -->
|
||||
|
||||
## A3. Cognitive Ergonomics — Visual Crowding and Typography
|
||||
|
||||
**Core finding:** Spacing is the active ingredient in typographic accessibility — not specialised letterforms. OpenDyslexic does not outperform standard sans-serif fonts. Individual variation is enormous; personalisation matters more than any single font choice.
|
||||
|
||||
**Spacing evidence:**
|
||||
- **Zorzi et al. 2012** (*Proceedings of the National Academy of Sciences*): 74 Italian and 20 French dyslexic children. Extra-large letter spacing (increased ~2.5pt) **doubled reading accuracy and increased reading speed by over 20%** in dyslexic children, with no effect on controls. Mechanism: reduced visual crowding.
|
||||
- **Galliussi et al. 2020** (*Annals of Dyslexia*): Critical nuance — **increasing letter spacing without proportionally increasing word spacing actually DECREASES reading speed** because word boundaries become ambiguous. Letter and word spacing must be coordinated.
|
||||
- **Joo et al. 2018** (*Cortex*): Measured individual visual crowding profiles. Only a **subgroup with elevated crowding** benefited from increased spacing — others did not. This confirms personalisation is essential.
|
||||
|
||||
**Font evidence (against specialised "dyslexia fonts"):**
|
||||
- **Rello & Baeza-Yates 2016** (*ACM TACCESS*): Most comprehensive eye-tracking study — **97 participants (48 with dyslexia), 12 fonts**. OpenDyslexic did **not** outperform standard sans-serif fonts like Arial, Helvetica, or Verdana. Sans-serif, monospaced, and roman (upright) fonts significantly outperformed serif, proportional, and italic alternatives. **Italic text significantly impaired reading.**
|
||||
- **Kuster et al. 2018** (*Annals of Dyslexia*): 170 children with dyslexia read no faster or more accurately in Dyslexie font than in Arial. Majority preferred Arial.
|
||||
- **Wery & Diliberto 2017** (*Annals of Dyslexia*): Confirmed no improvement with OpenDyslexic across multiple reading tasks.
|
||||
- **Wallace et al. 2022** (*ACM Transactions on CHI*): 16 fonts across hundreds of participants. Potential speed gains of **up to 35%** when comparing an individual's fastest vs. slowest font. No single font optimal for everyone. Font preference did not predict reading speed.
|
||||
|
||||
**ADHD-specific:**
|
||||
- **Stern & Shalev 2013** (*Research in Developmental Disabilities*): ADHD adolescents showed differential benefits from spacing and screen presentation. All participants performed better on computer than paper.
|
||||
- **Cooreman & Beier 2024** (*SSSR Conference*): Larger x-height fractions increase processing speed at the perceptual level — particularly relevant for ADHD users with reduced processing speed.
|
||||
|
||||
**Colour contrast:**
|
||||
- **Rello 2012** (*W3C Symposium*): People with dyslexia read fastest with lower-contrast warm pairs like **black on crème** — not black on white. Only 13.64% of dyslexic readers preferred black-on-white vs. 32.67% of controls.
|
||||
|
||||
**Implication for Kon:** Default to a clean sans-serif with large x-height (Atkinson Hyperlegible or Lexend) with coordinated letter, word, and line spacing controls. Offer warm off-white background options (crème, not white). Never use italic for extended reading. OpenDyslexic should be available as an option but not recommended — spacing is the intervention, not letterform. Most importantly: allow full typographic personalisation, because no single configuration is optimal for all neurodivergent users.
|
||||
9
docs/brief/appendix-evolutionary-psychology.md
Normal file
9
docs/brief/appendix-evolutionary-psychology.md
Normal file
@@ -0,0 +1,9 @@
|
||||
<!-- Source: Kon Master Brief — Appendix A7: Evolutionary Psychology and Meta-Insights -->
|
||||
|
||||
## A7. Evolutionary Psychology and Meta-Insights
|
||||
|
||||
**Supplementary finding:** ADHD traits — rapid environmental scanning, novelty-seeking, relational cognition — were highly adapted to high-stimulation ancestral environments. Barack et al. (2024) confirmed this experimentally: ADHD individuals depart resource patches sooner in foraging tasks, consistent with an exploration-biased strategy. Modern low-stimulation contexts cause "G Collapse" (emotional volatility, burnout, profound executive dysfunction). Generative AI providing rapid-fire stimulation, dialogue, and novelty satisfies the dopaminergic requirements that modern environments fail to meet.
|
||||
|
||||
**Meta-insight across all domains:** The populations who need these tools most benefit from them the most. Toli et al. found implementation intention effects of d = 0.99 in clinical populations vs. d = 0.65 in general populations. Joo et al. found spacing interventions specifically help those with elevated visual crowding. Kofler et al. found 75–81% of ADHD cases show the WM deficits that make local-first architecture necessary. A well-designed tool's efficacy curve is steepest for the most impaired users.
|
||||
|
||||
**Implication for Kon:** The app should feel alive, not static. The convergence of voice-first interaction (reduces navigation complexity), local-first architecture (eliminates latency), and AI presence (provides external regulation) addresses different links in the same causal chain. Each feature amplifies the others.
|
||||
26
docs/brief/appendix-hitl-scaffolding.md
Normal file
26
docs/brief/appendix-hitl-scaffolding.md
Normal file
@@ -0,0 +1,26 @@
|
||||
<!-- Source: Kon Master Brief — Appendix A5: HITL AI Scaffolding -->
|
||||
|
||||
## A5. HITL AI Scaffolding — Autonomy-Supportive Design
|
||||
|
||||
**Core finding:** AI scaffolding must support autonomy, not replace executive function. Controlling or fully automated approaches undermine the self-regulation skills they aim to support. The distinction is not philosophical but empirical.
|
||||
|
||||
**Self-Determination Theory (SDT) framework for ADHD:**
|
||||
- **Champ, Adamou & Tolchard 2022** (*Psychological Review*): Proposed a complete SDT-based framework for ADHD, arguing that autonomy, competence, and relatedness needs explain self-regulation patterns better than deficit models.
|
||||
- **Champ et al. 2025** (*JMIR Formative Research*): ADAPT randomised feasibility study with **20 adults from an NHS ADHD clinic**. **91.6% intervention completion**. Clinically significant improvement in psychological distress (p = .01) and significant ADHD symptom reduction (p ≤ .01). Demonstrates that autonomy-supportive scaffolding works in clinical practice.
|
||||
|
||||
**Critical review of existing ADHD tools:**
|
||||
- **Spiel et al. 2022** (*ACM CHI '22*): Most ADHD technology is "shaped by research aims which privilege neuro-normative outcomes." Time-management interventions frequently cause stress and frustration. Participatory design with ADHD individuals leads to **fundamentally different design outcomes** (e.g. conceiving time as "stretches of activities" rather than clock-based units). Explicitly documents harm caused by surveillance-like monitoring and intrusive alarms.
|
||||
- **Carik et al. 2025** (*ACM GROUP '25*): LLM use across **61 neurodivergent Reddit communities**, identifying 20 use cases. ADHD users primarily sought help with organisation, planning, and prioritising. LLM responses are frequently **"overly neurotypical"** and not calibrated for neurodivergent cognition. Users expressed significant concern about overreliance.
|
||||
|
||||
**Longitudinal case evidence:**
|
||||
- **Mittler 2025:** 42-year-old neurodivergent student with severe executive dysfunction. Over 4 semesters using strategically integrated AI tools, GPA rose from **1.85 to 3.35**. Psychological trajectory shifted from anxiety to sophisticated "process awareness" — the student internalised external scaffolds.
|
||||
- **Azevedo et al. 2022** (*Frontiers in Psychology*): Decade-long MetaTutor programme, 100+ college students. **Adaptive pedagogical agents that prompt metacognitive strategies** (rather than completing tasks) produced significantly better learning outcomes.
|
||||
|
||||
**Five design principles from the literature:**
|
||||
1. **Scaffold, don't automate** — prompt metacognitive strategies rather than completing tasks for the user
|
||||
2. **Co-regulate, don't correct** — nudges should be reflective ("What were you working on?") rather than directive ("You should be working on X")
|
||||
3. **Adapt to fluctuating states** — detect attention shifts and adjust support intensity dynamically
|
||||
4. **Keep the human in the loop** — every AI suggestion requires user confirmation, building executive function rather than atrophying it
|
||||
5. **Design with, not for** — participatory design with neurodivergent users produces fundamentally different and better outcomes
|
||||
|
||||
**Implication for Kon:** The AI agent must be visible, conversational, and interactive — but must never override user autonomy. Every suggestion requires confirmation. The human-in-the-loop feedback mechanism builds metacognitive awareness over time. Users should eventually internalise Kon's scaffolding patterns and need them less — that's a feature, not a failure. LLM prompts must be calibrated for neurodivergent cognition, not neurotypical assumptions.
|
||||
21
docs/brief/appendix-implementation-intentions.md
Normal file
21
docs/brief/appendix-implementation-intentions.md
Normal file
@@ -0,0 +1,21 @@
|
||||
<!-- Source: Kon Master Brief — Appendix A1: Implementation Intentions -->
|
||||
|
||||
## A1. Implementation Intentions — Neurological and Clinical Evidence
|
||||
|
||||
**Core finding:** If-then planning shifts cognitive control from effortful top-down prefrontal processing to automatic, stimulus-driven bottom-up processing. The effect is larger in clinical populations (including ADHD) than in general populations — the people who need it most benefit from it most.
|
||||
|
||||
**Meta-analytic evidence:**
|
||||
- **Gollwitzer & Sheeran 2006** (*Advances in Experimental Social Psychology*): 94 independent studies, 8,000+ participants. Medium-to-large effect of **d = 0.65** for goal attainment, and **d = 0.61** specifically for "getting started" problems — the precise deficit that characterises ADHD task paralysis.
|
||||
- **Sheeran, Listrom & Gollwitzer 2025** (*European Review of Social Psychology*): Bayesian mega-meta-analysis of **642 independent tests from 294 reports**. Confirms behavioural effect size of **d = 0.66**. The contingent if-then format significantly outperforms mere scheduling. Effects amplified when plans are rehearsed at least once.
|
||||
- **Toli, Webb & Hardy 2016** (*British Journal of Clinical Psychology*): Meta-analysis of 29 studies with **1,636 participants with clinical diagnoses** (including ADHD, schizophrenia, frontal-lobe lesions). Effect size of **d = 0.99** — 52% larger than the general population effect. People with executive dysfunction benefit *more* from implementation intentions, not less.
|
||||
|
||||
**ADHD-specific evidence:**
|
||||
- **Gawrilow & Gollwitzer 2008** (*Cognitive Therapy and Research*): Two experiments with clinically diagnosed ADHD children on Go/No-Go tasks. Children who formed implementation intentions improved response inhibition to **the same level as children without ADHD** — functionally normalising their executive deficit. A second study showed **additive effects with stimulant medication**, suggesting the approach complements pharmacotherapy.
|
||||
- **Gawrilow, Gollwitzer & Oettingen 2011** (*Journal of Social and Clinical Psychology*): Extended implementation intentions to cognitive shifting (task-switching) — directly relevant to the ADHD challenge of transitioning into "doing mode."
|
||||
- **Wieber, Thürmer & Gollwitzer 2015** (*Frontiers in Human Neuroscience*): Implementation intentions remain effective under cognitive load and acute stress — exactly the conditions when ADHD users most need support.
|
||||
|
||||
**Neuroimaging confirmation:**
|
||||
- **Gilbert et al. 2009** (*Journal of Experimental Psychology: Learning, Memory, and Cognition*): fMRI shows implementation intentions shift activation from the **lateral rostral prefrontal cortex** (effortful top-down control — impaired in ADHD) to the **medial rostral prefrontal cortex** (automatic stimulus-driven control). Better prospective memory performance with *reduced* overall brain activation.
|
||||
- **Paul et al. 2007** (*NeuroReport*): EEG confirms if-then plans normalised the NoGo-P300 amplitude in ADHD children within the **160–312 millisecond window**, consistent with early automatic processing rather than slow deliberate control.
|
||||
|
||||
**Implication for Kon:** The if-then automation feature and voice-activated micro-stepping are neurologically validated mechanisms with a d = 0.99 effect size in the target population. Voice capture must externalise implementation intentions instantaneously, before executive fatigue occurs. The system should prompt users to rehearse plans at least once (amplifies effect) and support varied cue types: time-based, environmental, and emotional.
|
||||
28
docs/brief/appendix-latency-memory.md
Normal file
28
docs/brief/appendix-latency-memory.md
Normal file
@@ -0,0 +1,28 @@
|
||||
<!-- Source: Kon Master Brief — Appendix A4: Latency, Working Memory Decay, and Software Architecture -->
|
||||
|
||||
## A4. Latency, Working Memory Decay, and Software Architecture
|
||||
|
||||
**Core finding:** 75–81% of ADHD cases show measurable working memory deficits (d = 1.63–2.03). Every millisecond of interface latency disproportionately taxes ADHD working memory. Local-first architecture is a cognitive accessibility requirement, not a technical preference.
|
||||
|
||||
**Working memory deficits in ADHD:**
|
||||
- **Kofler et al. 2020** (*Neuropsychology*): 172 children, bifactor modelling. **Very large magnitude central executive WM deficits: d = 1.63–2.03**, affecting **75–81% of ADHD cases**. These deficits "determined consistent difficulties in anticipating, planning, enacting, and maintaining goal-directed actions."
|
||||
- **Weigard & Huang-Pollock 2017** (*Clinical Psychological Science*): Applied the Time-Based Resource-Sharing (TBRS) model to ADHD. Children with ADHD experienced **higher cognitive load than controls in identical task conditions** because slower processing speed leaves less time for WM refreshing. Every millisecond of additional processing demand disproportionately taxes ADHD working memory.
|
||||
- **Barrouillet, Bernardin & Camos 2004** (*Journal of Experimental Psychology: General*): The TBRS model — WM recall is a **negative linear function of cognitive load**, where cognitive load equals the proportion of time the attentional bottleneck is occupied by processing rather than refreshing memory traces.
|
||||
|
||||
**HCI response time thresholds:**
|
||||
- **Miller 1968** (*AFIPS Conference*) and **Nielsen 1993** (*Usability Engineering*): Delays beyond **100ms** break direct manipulation feel. Beyond **1 second**: flow of thought disrupted. Beyond **10 seconds**: complete attentional disengagement. These are neurotypical baselines — effective thresholds for ADHD users are almost certainly shorter given reduced WM capacity.
|
||||
- **Card, Moran & Newell 1983** (*The Psychology of HCI*): Expert users completed tasks **30–40% faster** with sub-second response systems vs. 2-second systems — a penalty amplified in ADHD populations with elevated switch costs.
|
||||
|
||||
**ADHD-specific latency vulnerability:**
|
||||
- **Barack et al. 2024** (*Proceedings of the Royal Society B*): Pre-registered foraging study, **457 participants**. Those screening positive for ADHD **departed resource patches significantly sooner** — their exploration/exploitation trade-off is biased toward exploration. Every loading delay creates an artificial "depleting patch" that triggers the ADHD exploration impulse, manifesting as tab-switching, app-switching, and task abandonment.
|
||||
- **Ardalani et al. 2020** (*Psychological Research*): Inattentive traits predict higher switch costs under working memory load — each navigation step imposes a disproportionate cognitive tax.
|
||||
- **Madore et al. 2020** (*Nature*): Pre-encoding attentional lapses directly predict memory failure. Software that minimises attention-capturing events (loading screens, error states) directly supports better memory encoding.
|
||||
|
||||
**Applied studies (from earlier research):**
|
||||
- **127 ADHD knowledge workers study (KLM + EEG):** 4.7 seconds cognitive overhead per app switch. 11.3 seconds context-reconstruction latency. Tools with >90-second setup increase cognitive load by 2.3x.
|
||||
- **NIH study of 247 ADHD adults (8-week baseline):** Zero-friction AI tools achieved 31–47% reduction in task-switching latency, 58% reduction in off-task interruptions, 42% increase in on-time completion.
|
||||
|
||||
**Local-first as cognitive ergonomics:**
|
||||
- **Kleppmann et al. 2019** (*ACM Onward! '19*): Seven ideals of local-first software. Ideal #1 — "No spinners: your work at your fingertips." Primary copy of data on the user's device means read/write operations at local disk speed (sub-millisecond), not network speed (50–500+ ms). Synchronisation happens asynchronously in background.
|
||||
|
||||
**Implication for Kon:** Local-first architecture keeps all interactions within Miller's 100ms direct-manipulation threshold, preventing the WM decay → exploration bias → task abandonment cascade. The 90-second setup threshold is a hard design constraint. Voice capture must work in under 3 seconds from app open.
|
||||
12
docs/brief/appendix-voice-interfaces.md
Normal file
12
docs/brief/appendix-voice-interfaces.md
Normal file
@@ -0,0 +1,12 @@
|
||||
<!-- Source: Kon Master Brief — Appendix A6: Voice User Interfaces -->
|
||||
|
||||
## A6. Voice User Interfaces as Executive Bypasses
|
||||
|
||||
**Core finding:** Voice interfaces are vastly superior to GUIs for populations with ADHD, cognitive impairment, or traumatic brain injuries. Yet ADHD was mentioned in 47.6% of neurodiverse community posts about voice assistants whilst academic literature "greatly lacks any information" on how ADHD individuals use them (Esquivel et al. 2024).
|
||||
|
||||
- Voice activation bypasses the visual and mechanical bottlenecks of GUI interaction (typing, mouse navigation, visual scanning, sequential menu navigation) — all of which require sustained top-down executive functioning.
|
||||
- Vocalisation is approximately **3x faster** than manual keyboard entry.
|
||||
- VUI design constraints for cognitive accessibility: engineered pauses between phrases for auditory processing time, options presented in text before requiring selection to avoid overloading verbal working memory.
|
||||
- Current voice assistants impose their own setup complexity — Kon must minimise this to near-zero.
|
||||
|
||||
**Implication for Kon:** Voice is not a convenience feature — it is the primary accessibility mechanism. The 3x speed advantage means voice capture preserves working memory traces that would decay during typing. VUI implementation must include processing pauses and visual confirmation of transcribed text before action. The supply-demand gap (47.6% community interest vs. near-zero academic research) represents a significant opportunity for Kon to generate its own evidence through ethically designed measurement.
|
||||
44
docs/brief/b2b-enterprise.md
Normal file
44
docs/brief/b2b-enterprise.md
Normal file
@@ -0,0 +1,44 @@
|
||||
<!-- Source: Kon Master Brief — §19 B2B & Enterprise Angle -->
|
||||
|
||||
## 19. B2B & Enterprise Angle
|
||||
|
||||
### Corporate neurodiversity programmes
|
||||
- Neurodiversity @ Work Employer Roundtable: 50+ major companies (JPMorgan, SAP, Microsoft, EY, Google, Ford, Dell, Deloitte, Salesforce, Bank of America)
|
||||
- Companies are not yet systematically purchasing ADHD-specific productivity software as standard accommodation — adjustments remain largely ad hoc
|
||||
- RethinkCare predicts "supporting executive function skills will become a standard employee benefit" in 2025–2026
|
||||
- 31% of neurodivergent UK workers said they would benefit from specialist software
|
||||
|
||||
### Tiimo's B2B move
|
||||
- Dedicated B2B page launched
|
||||
- Projects B2B revenue to reach one-third of total revenue within two years
|
||||
- Plug-and-play (no IT integration required), GDPR-compliant, quarterly usage insights
|
||||
|
||||
### Access to Work (UK)
|
||||
- Grants of up to ~£66,000/year per individual
|
||||
- Explicitly covers ADHD and other neurodivergent conditions under the Equality Act 2010
|
||||
- Software subscriptions, planning apps, and coaching are all fundable
|
||||
- Deepwrk already operates as an Access to Work-approved service — employees claim subscriptions through their grant
|
||||
- **This is the single highest-leverage B2B action Kon can take.** Government effectively subsidises the sale.
|
||||
|
||||
### B2B requirements (if/when pursued)
|
||||
- Admin dashboard, SSO (SAML/OAuth), bulk provisioning
|
||||
- Anonymised usage analytics for HR (never individual-level data)
|
||||
- **Anonymised organisational dashboards.** While Kon processes all personal data locally, the B2B tier must output high-level, anonymised telemetry to satisfy enterprise buyers who need metrics to justify software purchases. Examples: "Your team saved 40 hours in task-planning this month", "Average time-to-capture across your organisation: 6 seconds", "82% of users returned after a gap of 3+ days." Critically, these metrics must be aggregated (minimum cohort size of 10 before any data is surfaced), never traceable to individuals, and opt-in at both the user and organisation level. The local-first architecture makes this possible: anonymised summaries can be generated on-device and transmitted as aggregate statistics only — raw data never leaves the machine.
|
||||
- GDPR compliance documentation, zero-IT-lift deployment
|
||||
- Users must never be identifiable as neurodivergent to their employer
|
||||
- Position under "universal design" framing — beneficial for all employees
|
||||
|
||||
### Enterprise IT deployment
|
||||
Kon's local-first architecture is simultaneously its biggest B2B selling point and its biggest deployment challenge. Key considerations:
|
||||
|
||||
- **Local AI model size.** Whisper models range from ~75MB (tiny) to ~1.5GB (large). Enterprise IT teams may flag large binaries or models downloaded to employee machines. Solution: bundle a smaller model by default (tiny/base) with optional upgrade to larger models. Document the model sizes and what they do for IT review.
|
||||
- **No cloud = no enterprise compliance headaches.** Because Kon processes everything on-device with no data transmitted externally, it bypasses the cloud security review, vendor risk assessment, and data processing agreements that typically delay enterprise software procurement by 3–6 months. This is a genuine competitive advantage — frame it explicitly in B2B sales materials.
|
||||
- **Installation permissions.** Enterprise-managed machines often restrict software installation. Kon must be deployable via MDM (Mobile Device Management) tools like Microsoft Intune or Jamf. Tauri's MSIX (Windows) and DMG (macOS) formats are compatible with standard enterprise deployment pipelines.
|
||||
- **No internet dependency.** Kon does not require network access for core functionality. This makes it deployable in air-gapped, high-security, or restricted-network environments — a strong selling point for defence, legal, and healthcare settings.
|
||||
- **Automatic updates.** Enterprise IT will want to control update rollouts. Provide the option to disable auto-updates and instead distribute updates through enterprise channels.
|
||||
|
||||
### Channel partners
|
||||
- Lexxic (750+ client organisations globally)
|
||||
- Access to Work assessors (occupational health specialists)
|
||||
- ADHD coaching providers
|
||||
- ADHD Foundation, ADHD UK, Neurodiversity in Business
|
||||
62
docs/brief/competitive-landscape.md
Normal file
62
docs/brief/competitive-landscape.md
Normal file
@@ -0,0 +1,62 @@
|
||||
<!-- Source: Kon Master Brief — §13 Competitive Landscape (Extended) -->
|
||||
|
||||
## 13. Competitive Landscape (Extended)
|
||||
|
||||
### Tiimo (primary competitor)
|
||||
- iPhone App of the Year 2025, 3M+ downloads, ~$200K/month revenue, ~500K active users
|
||||
- Pricing: $12/month or $54/year (iOS), cheaper via web ($42/year)
|
||||
- Had a lifetime option — removed it, community backlash was significant
|
||||
- iOS and web only. No Android (as of September 2025). No native desktop app (web app cannot sync calendars or offer dictation).
|
||||
- Cloud-dependent. No voice transcription as a core feature.
|
||||
- Aggressive review prompts (3 prompts in 5 minutes reported by reviewers)
|
||||
- Strengths: visual colour-coded timelines, AI co-planner, no-guilt design philosophy, NHS certification
|
||||
- Weaknesses: slow animations, confusing UX concepts ("activity vs routine"), reported data loss issues
|
||||
- B2B pivot underway — projects B2B to reach one-third of total revenue within two years
|
||||
|
||||
### Structured
|
||||
- Clean visual daily planner across iOS, Android, Mac, and web
|
||||
- Lifetime purchase option at ~£52
|
||||
- Android and web versions lag far behind iOS, iCloud sync unreliable
|
||||
- Not designed specifically for neurodivergent users
|
||||
|
||||
### Goblin.tools
|
||||
- Beloved AI task breakdown ("Magic ToDo") — free on web, low-cost app purchase
|
||||
- Collection of single-task utilities, not a planner
|
||||
- Community favourite for one-time purchase model
|
||||
|
||||
### Llama Life
|
||||
- Excellent timeboxing with finish-time visibility (combats time blindness)
|
||||
- No calendar integration, no free tier, very small team
|
||||
|
||||
### Focusmate
|
||||
- Dominates body doubling — 274 five-star Trustpilot reviews
|
||||
- Web-only, not a task manager
|
||||
|
||||
### Focus Bear
|
||||
- Desktop-first (rare) — locks computer until morning routines complete, blocks distracting sites
|
||||
- Australia-based, designed specifically for ADHD/autism
|
||||
|
||||
### Super Productivity
|
||||
- Open-source, local-first, runs on Windows/Mac/Linux
|
||||
- Not originally designed for neurodivergent users
|
||||
|
||||
### Lunatask
|
||||
- Tasks, habits, calendar, mood tracking, journalling with end-to-end encryption on desktop
|
||||
- Privacy-focused, small user base
|
||||
|
||||
### Kon's advantages over the entire field
|
||||
| Kon | The field |
|
||||
|---|---|
|
||||
| Cross-platform desktop + mobile (Tauri) | Almost all competitors are mobile-first or web-only |
|
||||
| Voice as primary input method | No mature competitor integrates voice into a full planning system |
|
||||
| Local-first, offline-capable | Only open-source tools and tiny startups offer this |
|
||||
| Lifetime licence | Only Structured offers one-time purchase; rest are subscription |
|
||||
| Research-backed neurodivergent design | Most competitors bolt on ADHD features as an afterthought |
|
||||
|
||||
### The four underserved dimensions
|
||||
1. **Platform:** No polished, purpose-built desktop ADHD app exists.
|
||||
2. **Input method:** No mature tool offers voice as the primary input integrated into a full planning system.
|
||||
3. **Architecture:** Privacy-conscious and offline-first users served only by open-source tools and tiny startups.
|
||||
4. **Pricing:** Only Structured offers lifetime. Subscription fatigue is extreme in this demographic.
|
||||
|
||||
Kon addresses all four simultaneously. No current competitor does.
|
||||
37
docs/brief/design-principles.md
Normal file
37
docs/brief/design-principles.md
Normal file
@@ -0,0 +1,37 @@
|
||||
<!-- Source: Kon Master Brief — §4 Design Principles -->
|
||||
|
||||
### Design principles
|
||||
|
||||
#### Typography & readability
|
||||
- **Fonts:** Lexend or Atkinson Hyperlegible Next as defaults. Clean sans-serif with large x-height. OpenDyslexic available as a user option but NOT recommended as default — peer-reviewed evidence (Rello & Baeza-Yates 2016; Kuster et al. 2018) shows it does not outperform standard sans-serif fonts. **Spacing is the active typographic ingredient, not letterform** (see Appendix A3). Italic text must never be used for extended reading — it significantly impairs reading in neurodivergent populations.
|
||||
- **Minimum 16px size, 1.5x line spacing, left-aligned text.** Maximum 75-character line width to prevent line-skipping fatigue.
|
||||
- **Variable font support.** Where possible, implement adjustable typographic axes (spacing, weight, width) so users can dynamically adapt typography to their own fluctuating visual-perceptual thresholds — not just choose between static font options.
|
||||
- **Bionic Reading toggle.** Optional mode that bolds the first few letters of each word to create artificial fixation points. Helps ADHD brains maintain reading momentum and prevents eyes from skipping lines. Increasingly popular accessibility feature — low implementation cost, high perceived value. Should be a toggle in settings, not default.
|
||||
- **Rationale:** Decoding text consumes high metabolic energy for dyslexic or ADHD brains. Visual crowding affects both peripheral AND central (foveal) vision in these populations. Every typographic decision should reduce that metabolic cost.
|
||||
|
||||
#### Colour system
|
||||
- **85% of neurodiverse students see colours more intensely** — palettes profoundly impact emotional regulation and focus.
|
||||
- **Never use pure white (#FFFFFF) or pure black (#000000) together.** This creates "halation" — a vibrating visual effect causing severe eye strain and cognitive fatigue. Use dark charcoal text on off-white, light grey, or soft beige. Eye-tracking research (Rello 2012) found dyslexic readers read fastest with **black on crème** — only 13.64% preferred black-on-white vs. 32.67% of controls. Default background should be warm off-white, not cool white.
|
||||
- **Sensory colour zoning — use colour to cue specific mindsets:**
|
||||
- **Deep Focus ("Cave"):** Cool blues, greens, soft teals. Withdrawal effect promotes calmness and stability.
|
||||
- **Collaboration & Energy:** Warm neutrals, soft yellows, muted oranges.
|
||||
- **Relaxation & Reset:** Tans, browns, sage greens to balance emotions.
|
||||
- **Danger colours to avoid entirely:** Large expanses of bright red, fluorescent/neon colours, high-contrast geometric patterns (zigzags). Proven to cause visual confusion, anxiety, and can trigger meltdowns.
|
||||
|
||||
#### Interaction & UX
|
||||
- **Low-dopamine design.** Non-judgmental tone throughout. No guilt messaging for missed tasks. No aggressive review prompts.
|
||||
- **WIP limits as a design constraint.** The interface must never present more than 1–3 active tasks simultaneously on the primary view. AI prioritises; the UI constrains. A brain dump can contain 50 items — the "Now" view shows only the next action. This is not a nice-to-have; it is the core mechanism for preventing the freeze response.
|
||||
- **Automated context restoration.** Working memory traces decay within ~8 seconds of interruption. If a user clicks away, gets distracted, or closes the app mid-task, Kon must perfectly preserve their exact state — cursor position, active timer, active task, scroll position — so they can resume with zero "Where was I?" cognitive latency. This must be seamless and automatic. No "Resume session?" dialogue. Just open the app and be exactly where you left off.
|
||||
- **Literal labels always.** Ambiguous icons (standalone gear, hamburger menu) force literal thinkers to guess function, expending precious mental energy. Always pair icons with literal text labels.
|
||||
- **Progressive disclosure.** Break complex onboarding or tasks down to reveal only the immediate next step, preventing the brain from freezing.
|
||||
- **Motion control.** All non-essential animation and auto-playing media must be off by default or controlled via a prominent "Reduce Motion" / "Calm Mode" toggle. Unexpected animations can cause physical distress and sensory overload.
|
||||
- **No streak-shaming.** Never use streaks that reset to zero. Use "grace days" and reward the journey. A missed day must not trigger the shame spiral that leads to app abandonment.
|
||||
|
||||
#### Onboarding
|
||||
- Must be understandable within 30 seconds. If a neurodivergent user can't figure it out immediately, they won't return.
|
||||
- **90-second hard threshold.** Empirical HCI research (see Appendix A4) shows that tools taking longer than 90 seconds to configure trigger task abandonment cascades in ADHD users, increasing cognitive load by 2.3x. No feature in Kon should require more than 90 seconds of setup. Voice capture must work in under 3 seconds from app open.
|
||||
- Progressive disclosure applies here especially — show one step at a time, never the full complexity.
|
||||
|
||||
#### Future consideration: adaptive UI
|
||||
- **Sensory cookies:** Allow users to save baseline sensory preferences (motion, contrast, typography) so the app instantly moulds to them across sessions and devices.
|
||||
- **Emotionally adaptive AI:** Detect signs of emotional fatigue or frustration (e.g. erratic clicking, long inactivity) and automatically simplify the UI to reduce cognitive load. Not in MVP but a strong differentiator for v2+.
|
||||
21
docs/brief/desktop-distribution.md
Normal file
21
docs/brief/desktop-distribution.md
Normal file
@@ -0,0 +1,21 @@
|
||||
<!-- Source: Kon Master Brief — §17 Desktop Distribution Deep Dive -->
|
||||
|
||||
## 17. Desktop Distribution Deep Dive
|
||||
|
||||
### Tauri advantages
|
||||
- Installer sizes: 2.5–10 MB (vs. 80–150 MB for Electron)
|
||||
- Idle memory: 30–40 MB (vs. 200–300 MB for Electron)
|
||||
- Sub-second startup times
|
||||
- 70,000+ GitHub stars, 35% year-on-year adoption growth
|
||||
- Built-in auto-updater with Ed25519 signature verification
|
||||
|
||||
### Code signing requirements
|
||||
- **macOS:** Apple Developer Programme (£79/year) + notarisation mandatory. Unsigned apps trigger "damaged app" dialogue.
|
||||
- **Windows:** EV certificate (£240–£480/year) for immediate SmartScreen bypass. Unsigned executables trigger warnings.
|
||||
- **Linux:** Users more tolerant of unsigned software. Flathub + AppImage.
|
||||
|
||||
### Discovery patterns for successful indie desktop apps
|
||||
- Free or generous free tier drives adoption
|
||||
- Organic search and content marketing drive discovery (Obsidian: 52.9% organic search traffic)
|
||||
- Community building on Discord/Reddit/Twitter creates advocates
|
||||
- Product Hunt launch provides initial visibility spike
|
||||
99
docs/brief/distribution-strategy.md
Normal file
99
docs/brief/distribution-strategy.md
Normal file
@@ -0,0 +1,99 @@
|
||||
<!-- Source: Kon Master Brief — §7 Distribution Strategy -->
|
||||
|
||||
## 7. Distribution Strategy
|
||||
|
||||
### Marketing positioning
|
||||
|
||||
**What Kon is NOT:** A to-do list. A habit tracker. Another productivity app. The market is flooded with generic productivity tools, and ADHD users have severe app fatigue from trying and abandoning dozens of them. Positioning Kon in that category is death.
|
||||
|
||||
**What Kon IS:** An "external brain." A prosthetic prefrontal cortex designed for cognitive offloading. The app does the heavy cognitive lifting — it takes raw, messy thoughts via voice and automatically decomposes them into verb-led micro-steps (e.g. "Clean the house" → "Pick up one item of clothing from the bedroom floor").
|
||||
|
||||
**Key messaging pillars:**
|
||||
1. **"Your brain moves fast. Kon catches it."** — Voice-first capture, zero friction, thoughts don't get lost.
|
||||
2. **"Local. Private. Yours forever."** — Nothing leaves your device. No cloud. No subscriptions for core features. Your vulnerabilities are never exposed.
|
||||
3. **"Built by a neurodivergent brain, for neurodivergent brains."** — Authenticity. Jake has executive dysfunction. This isn't corporate empathy theatre.
|
||||
4. **"They took away lifetime. We never will."** — Direct competitive positioning against Tiimo's subscription-only model.
|
||||
|
||||
**Combatting app fatigue:** The audience has been burned repeatedly. Marketing must acknowledge this directly: "We know you've tried 47 apps. Here's why this one is different." Lead with the local-first privacy angle and voice-first input — those are the two things nobody else offers together.
|
||||
|
||||
### Distribution channels
|
||||
|
||||
**Desktop distribution:**
|
||||
- **Primary:** Direct download from kon.app via Lemon Squeezy or Paddle (5% + 50p per transaction). Signed and notarised builds for macOS (£79/year Apple Developer Programme) and code-signed for Windows (EV certificate, £240–£480/year).
|
||||
- **Microsoft Store (supplementary):** Free to list, 250M monthly active users, 0% commission if using own payment system. Good for discovery.
|
||||
- **Mac App Store (evaluate):** 15% commission under Small Business Programme, sandboxing may limit Tauri features. Most successful indie Mac apps distribute directly.
|
||||
- **Linux:** Flathub (1M+ active users, pre-installed on major distros) + AppImage for direct download.
|
||||
- **Auto-updates:** Tauri's built-in updater with Ed25519 signature verification via GitHub Releases.
|
||||
|
||||
**Community channels:**
|
||||
- r/ADHD, r/adhdwomen, r/ADHD_Programmers, r/autism, r/neurodiversity, r/executivedysfunction
|
||||
- Neurodivergent TikTok and YouTube Shorts (massive, highly engaged community)
|
||||
- PKM and Obsidian communities (as amplifiers, not primary sales channel)
|
||||
- Product Hunt (timed for post-beta with testimonials)
|
||||
- ADHD UK's discovery platform, ADDitude Magazine tool roundups, AlternativeTo
|
||||
|
||||
**Influencer/creator partnerships:**
|
||||
- **Tier 1 (micro, £400–£4,000):** 5–10 ADHD micro-influencers for launch. Best value, highest engagement rate.
|
||||
- **Tier 2 (mid, £4,000–£20,000):** Dani Donovan (625K TikTok, ADHD comics) or ADHD Love (789K TikTok) for a dedicated review.
|
||||
- **Tier 3 (mega, £8,000–£40,000+):** Jessica McCabe / How to ADHD (1.9M YouTube) — aspirational, time for later.
|
||||
- **Podcasts:** CHADD's All Things ADHD (888K downloads), ADHD for Smart Ass Women (7M downloads), I Have ADHD Podcast. Host-read ads at £12–£24 CPM.
|
||||
- **Performance model:** Start with affiliate partnerships (like Inflow's 40% commission model) to reduce upfront risk.
|
||||
|
||||
**SEO opportunity:** Long-tail terms like "ADHD app for Windows" and "focus timer desktop app" face lower competition than mobile-focused searches. Obsidian gets 52.9% of traffic from organic search — proof that desktop-first apps can win on SEO.
|
||||
|
||||
### Phase 0 — Pre-beta (this week)
|
||||
- [ ] Register domain (kon.app or getkon.app)
|
||||
- [ ] Build one-page landing page on Carrd (£16/year) or Framer (free tier). Hero must answer three questions in under 5 seconds: what is this, who is it for, what do I do next. Landing page copy written at 5th–7th grade reading level (converts at 11.1% vs. 5.3% for university-level copy). Include 15–30 second silent auto-play GIF showing voice-to-task flow. Single CTA button.
|
||||
- [ ] Set up waitlist with LaunchList (£65 one-time). Includes gamified referral mechanics, anti-spam filtering. Alternative: ConvertKit (free to 1,000 subscribers) + Tally form.
|
||||
- [ ] Set up analytics with Plausible.io (privacy-friendly, no cookie banner needed).
|
||||
- [ ] Begin daily #buildinpublic tweets on Twitter/X.
|
||||
- [ ] Total Phase 0 budget: **£81** (LaunchList £65 + Carrd £16).
|
||||
|
||||
### Phase 1 — Closed beta (next 1–2 weeks)
|
||||
- [ ] Polish MVP to "testable" state
|
||||
- [ ] 10–15 beta testers from immediate network (Roo's nonprofit connections as priority)
|
||||
- [ ] Collect feedback on: does the brain dump → task organisation flow actually work?
|
||||
- [ ] Iterate on bugs, UX friction, common complaints
|
||||
- [ ] Run Van Westendorp pricing survey via Tally (free) to validate £49 price point before committing
|
||||
|
||||
### Phase 2 — Community seeding (weeks 2–4)
|
||||
- [ ] **Reddit (priority 1):** r/ADHD (2.1M members), r/adhdwomen, r/ADHD_Programmers, r/autism, r/neurodiversity, r/executivedysfunction. Spend 4+ weeks genuinely contributing before any mention of Kon (Reddit 10:1 rule). When ready: authentic posts, no sales pitches. Use F5Bot (free) to monitor keywords: "ADHD app", "voice to-do", "ADHD task manager."
|
||||
- [ ] **Obsidian/PKM communities (priority 2):** Show Kon → Obsidian workflow (voice dump → transcription → tasks → Obsidian vault). Use as amplifiers, not primary sales channel.
|
||||
- [ ] **TikTok product seeding (priority 3):** DM 20–50 ADHD micro-influencers (1K–50K followers) with free lifetime licences. Zero obligation to post. Cost per seed: £0 (digital product). Outreach must reference a specific video the creator made. Follow up with affiliate link at 25–30% commission via Lemon Squeezy.
|
||||
- [ ] Submit to ADHD UK discovery platform and ADDitude Magazine tool roundups.
|
||||
|
||||
### Phase 3 — 90-day content calendar
|
||||
|
||||
**Days 1–30 (Foundation):**
|
||||
- Set up Twitter/X, TikTok, and LinkedIn profiles
|
||||
- Begin daily #buildinpublic tweets
|
||||
- Post 3 TikToks per week — ADHD relatable content and screen recordings
|
||||
- Comment helpfully 5–10 times per day on Reddit (zero promotion)
|
||||
- Launch first SEO blog post (long-tail: "ADHD desktop app", "offline productivity app ADHD")
|
||||
- **Target: 100 waitlist signups**
|
||||
|
||||
**Days 31–60 (Momentum):**
|
||||
- DM 20 ADHD TikTok creators with free licences
|
||||
- Post "I'm building…" on r/SideProject (~503K members, explicitly allows "I built" posts) and r/ADHD_Programmers
|
||||
- Share waitlist milestones publicly
|
||||
- Run Van Westendorp pricing survey
|
||||
- Start connecting with Product Hunt hunters
|
||||
- Publish 2 more SEO articles
|
||||
- **Target: 500 waitlist signups**
|
||||
|
||||
**Days 61–90 (Launch):**
|
||||
- Set up Lemon Squeezy (5% + 50p per transaction). Handles global VAT/GST as Merchant of Record. Built-in licence key generation, affiliate system, and quantity-limited discount codes. ~48 hours for approval.
|
||||
- Prepare Product Hunt assets: maker's face photo thumbnail, 3–5 polished screenshots, 30-second demo GIF, 60-character tagline starting with a verb. Launch at 12:01 AM PST on a Tuesday/Wednesday/Thursday. Reply to every comment within 9 minutes.
|
||||
- Execute Wave 1: top 100 waitlist referrers at £29 Founding Member price with exclusive in-app badge
|
||||
- Execute Wave 2: 200 spots at early-bird £39, 48-hour window with countdown
|
||||
- Execute Wave 3: standard £49 pricing
|
||||
- Post "my first sale" TikTok reaction
|
||||
- Share launch numbers transparently
|
||||
- **Target: 50–100 paying customers, £2,000–£5,000 first revenue**
|
||||
|
||||
### Phase 4 — B2B (month 6+, only if consumer traction validates)
|
||||
- [ ] Begin Access to Work approval process (UK government funds software tools as workplace adjustments)
|
||||
- [ ] Channel partners: Lexxic (750+ client organisations), Access to Work assessors, ADHD coaching providers
|
||||
- [ ] Enterprise requirements: admin dashboard, SSO, bulk provisioning, anonymised usage analytics, zero-IT-lift deployment
|
||||
- [ ] Privacy paramount: users must never be identifiable as neurodivergent to their employer
|
||||
- [ ] Position under "universal design" framing — beneficial for all employees, not just neurodivergent ones
|
||||
29
docs/brief/feature-set.md
Normal file
29
docs/brief/feature-set.md
Normal file
@@ -0,0 +1,29 @@
|
||||
<!-- Source: Kon Master Brief — §4 Feature Set -->
|
||||
|
||||
## 4. Feature Set
|
||||
|
||||
### Core MVP (shipping with beta)
|
||||
- Local AI transcription (Whisper, on-device)
|
||||
- Auto-populating to-do lists from transcriptions
|
||||
- **Visual time representation.** Tasks displayed as visual blocks of time or countdowns, not just text lists. Traditional text-based to-do lists trigger overwhelm — visual timelines directly combat time blindness. This is the #1 community-requested feature and Tiimo's primary strength. Kon must match or exceed it from day one. Time should be externalised using visual countdown timers (e.g. shrinking colour disks, filling progress rings) rather than standard digital clocks — making the passage of time concrete and anchoring focus for users with time agnosia.
|
||||
- **WIP limits.** The main screen must mathematically restrict how many active tasks are visible at once. A "Now" column showing only 1–3 items maximum. Auto-generated task lists that dump 30 items onto a screen will instantly trigger the freeze response. The AI can prioritise; the UI must constrain.
|
||||
- History of past voice notes and transcriptions
|
||||
- Light/dark mode
|
||||
- Templates with local AI agent (contextual text under headings with associated metadata)
|
||||
- Vocabulary profiles (custom dictionaries for specialist terms — e.g. DND NPC/location names, technical jargon)
|
||||
- Transcription of uploaded voice notes and media files
|
||||
- **Open data format.** All transcripts and task lists stored locally in plain text, JSON, or Markdown. Essential for the privacy-first and PKM audience. Enables the Kon → Obsidian workflow promised in the distribution strategy. Users must be able to export, move, and own their data without vendor lock-in.
|
||||
|
||||
### Post-MVP features (validated, designed, not yet prioritised)
|
||||
- **AI-powered micro-stepping with "just start" timer.** Decomposing abstract goals into hyper-specific actionable steps. The local AI agent must generate micro-steps that begin with highly specific, low-friction action verbs. Linguistic rules: every generated step must start with a concrete physical verb, target one single action, and be completable in under 5 minutes. Example: "Clean room" → "Pick up one shirt from the floor." NOT "Organise your bedroom" (still abstract, still paralysing). The goal is to bypass executive dysfunction by removing all ambiguity about what "starting" means. **Paired with a 2-minute or 5-minute "just start" focus timer.** Committing to a task for just five minutes bypasses internal resistance and builds micro-momentum — users frequently work past the timer. The timer should be a single tap from any micro-step, visually prominent, and use a shrinking colour disk or similar visual countdown (not a digital clock) to externalise the passage of time and combat time blindness.
|
||||
- Implementation intentions / if-then automation ("If 9am and at desk, then start project X")
|
||||
- Forgiving gamification (non-punitive progress indicators, no streak-shaming, grace days)
|
||||
- **Soft-touch nudging system ("Margot" protocol).** Reminders must not function as standard push notifications (anxiety-inducing noise). Instead, design as "anticipatory guidance" — context-aware interventions that respond to behavioural signals (e.g. inactivity, time of day, task proximity) rather than rigid schedules. Tone must invite the user back without inducing guilt: "Your list is still here when you're ready" not "You missed your 2pm task!" **Rhythmic voice anchoring:** Case studies on custom ADHD AI coworkers (the "Margot" project) show users don't need complex avatars — they need rhythm and presence. Simple intermittent voice prompts (calm voice stating "Hey, time to move on" when a timer ends) reduce default-mode network activity, anchoring focus and restoring temporal structure without visual clutter. Delivery mechanisms: ambient visual cue within the app, OS-native notification via tauri-plugin-notification (platform-specific sounds: 'Glass' on macOS, 'message-new-instant' on Linux, 'Default' on Windows), discreet haptic nudge on mobile (Web Vibration API on Android). Context-aware suppression: no nudge if user typed within last 5 seconds or is actively speaking (detected via AudioContext analyser). All notifications fully customisable or disableable.
|
||||
- **Human-in-the-loop feedback.** Users must be able to easily correct, rate, or override the AI's task organisation and micro-stepping output. ADHD manifestations vary wildly between individuals — the system must adapt to individual cognitive rhythms over time rather than remaining static. Simple thumbs up/down on AI-generated steps, plus ability to edit and retrain. This feedback loop is essential for the AI to improve and for users to feel ownership, not dictation.
|
||||
- **Start/shutdown rituals (transition scaffolding).** ADHD brains struggle immensely with transitions — starting work and turning "off" at the end of the day. Implement guided rituals: a 2-minute morning triage (AI surfaces yesterday's incomplete tasks, user picks 1–3 realistic goals for today) and an evening shutdown sequence (review what was done, close mental open loops, consciously separate work from rest). Borrowed from Sunsama's proven model but adapted for neurodivergent users — must be optional, gentle, and never guilt-inducing if skipped.
|
||||
- **Energy-aware task sequencing.** Allow users to tag transcription dumps or tasks with an energy level (High / Medium / Brain-Dead). The AI surfaces low-friction, easy tasks when the user is in an afternoon energy dip, and reserves high-cognitive-load tasks for peak energy windows. This replaces temptation bundling (which was cut due to OS limitations) with a less invasive mechanism that achieves the same goal: getting low-dopamine tasks done by matching them to the right moment.
|
||||
- **Read Page Aloud (text-to-speech).** A simple TTS function that reads transcriptions, task lists, or AI-generated micro-steps aloud. Engages auditory processing alongside visual, which improves retention and comprehension for ADHD users. Particularly valuable during the "Clarify" stage when reviewing a brain dump. Use OS-native TTS engines (available on all target platforms) to avoid additional dependencies. Should be a single-tap action from any text view.
|
||||
|
||||
### Parked / future consideration
|
||||
- **AI body doubling (low-fi implementation).** Research strongly validates the concept (rated #1 ADHD workplace strategy in 2025 ADDitude survey; 12-week study showed focus doubling, 30% anxiety reduction, £37 public value per £1 invested). Body doubling doesn't require high-fidelity interaction — simple ambient presence and shared monitoring work. A "low-fi" version could be a "Focus Room" interface showing abstract statuses ("AI is sorting your tasks…", "3 other Kon users are in deep work right now") to provide the feeling of parallel presence without complex engineering. This sidesteps the need for video, voice, or real-time communication. Potential future subscription feature. Not in MVP scope but worth prototyping early — the implementation cost is low relative to the validated demand.
|
||||
- Temptation bundling — cut (OS-level integration nightmare across platforms, essentially impossible on iOS). Replaced by energy-aware task sequencing (see post-MVP features).
|
||||
7
docs/brief/feature-validation.md
Normal file
7
docs/brief/feature-validation.md
Normal file
@@ -0,0 +1,7 @@
|
||||
<!-- Source: Kon Master Brief — §15 Feature Validation from Research -->
|
||||
|
||||
## 15. Feature Validation from Research
|
||||
|
||||
- **Voice input is 3x faster than typing.** Vocalisation bypasses the keyboard entirely, enabling brain dumps before working memory drops the thought. 65% of B2B leaders expect voice and conversational AI to become a key part of digital workflows by 2026. The Voice Assistant Application Market is projected to grow by $21.94 billion by 2028.
|
||||
- **Body doubling is the #1 strategy.** In a 2025 ADDitude Magazine survey, adults with ADHD rated body doubling as their most effective workplace strategy — beating productivity apps, time blocking, and timed focus techniques. A 12-week study of 117 adults using virtual body doubling found sustained focus more than doubled (under 30 min → over 60 min), anxiety dropped 30%, and general life satisfaction increased.
|
||||
- **Local-first privacy is non-negotiable for many.** ADHD professionals often mask symptoms at work due to stigma. An app tracking behavioural cues on the cloud introduces severe privacy concerns. Users strongly prefer systems that process everything on-device, ensuring vulnerabilities are never exposed to employers or external servers.
|
||||
32
docs/brief/influencer-landscape.md
Normal file
32
docs/brief/influencer-landscape.md
Normal file
@@ -0,0 +1,32 @@
|
||||
<!-- Source: Kon Master Brief — §18 ADHD Content Creator & Influencer Landscape -->
|
||||
|
||||
## 18. ADHD Content Creator & Influencer Landscape
|
||||
|
||||
### Key creators
|
||||
- **Jessica McCabe / How to ADHD:** 1.9M YouTube subscribers, Patreon earning £12,500+/month, NYT bestselling book, TEDx talk with 6M views. Regularly reviews productivity tools. The gold standard.
|
||||
- **Connor DeWolfe:** 5.6M TikTok followers. Largest raw audience, more entertainment-focused.
|
||||
- **Dani Donovan:** 625K TikTok, 127K on X. ADHD comics/infographics with 100M+ cumulative views. Author of *The Anti-Planner*. Natural fit for productivity tool partnerships.
|
||||
- **ADHD Love (Rich and Rox):** 789K TikTok, 471K YouTube. Built their own body-doubling app (Dubbii). Technical credibility + community trust.
|
||||
|
||||
### Key podcasts
|
||||
- **CHADD's All Things ADHD:** 888K+ downloads, actively seeks sponsors
|
||||
- **ADHD for Smart Ass Women (Tracy Otsuka):** ~7M downloads
|
||||
- **I Have ADHD Podcast (Kristen Carder):** Engaged, action-oriented listeners
|
||||
- **Taking Control, Hacking Your ADHD, ADHD ReWired:** All accept sponsorships
|
||||
|
||||
### Key newsletters/Substack
|
||||
- Jesse J. Anderson (*Extra Focus*), Taylor Allbright (*ADHD Unpacked*), Megan Anna Neff (*Neurodivergent Notes*)
|
||||
|
||||
### UK advocacy organisations
|
||||
- **ADHD Foundation:** Largest user-led ADHD organisation in Europe
|
||||
- **ADHD UK:** Launched a discovery platform reviewing tools and strategies — natural fit for Kon
|
||||
- **Neurodiversity in Business:** Corporate-facing charity
|
||||
|
||||
### Sponsorship costs
|
||||
- Micro-influencers (10K–100K followers): £400–£4,000/post (best value)
|
||||
- Mid-tier (Dani Donovan, ADHD Love): £4,000–£20,000
|
||||
- Mega-tier (Jessica McCabe, Connor DeWolfe): £8,000–£40,000+
|
||||
- Podcast host-read ads: £12–£24 CPM
|
||||
|
||||
### Discovery pattern
|
||||
Neurodivergent users discover tools through trusted creators → validate through Reddit peer recommendations → search app stores. Community punishes perceived inauthenticity heavily.
|
||||
17
docs/brief/key-risks.md
Normal file
17
docs/brief/key-risks.md
Normal file
@@ -0,0 +1,17 @@
|
||||
<!-- Source: Kon Master Brief — §8 Key Risks -->
|
||||
|
||||
## 8. Key Risks
|
||||
|
||||
| Risk | Mitigation |
|
||||
|---|---|
|
||||
| Local AI hardware requirements exclude users on low-spec machines | Minimum spec defined: 8GB RAM, 2020+ CPU. Phi-4-mini (2.3GB) runs at 15–25 tok/s on minimum hardware. Publish specs prominently. |
|
||||
| Tiimo expands to Android/desktop and closes the gap | Move fast. Tiimo's Android codebase is reportedly causing severe issues. Their B2B pivot may distract from consumer product. |
|
||||
| Zero distribution infrastructure | 90-day calendar above. LaunchList + Reddit + TikTok seeding + Product Hunt. Total budget: £81. |
|
||||
| Lifetime pricing limits long-term revenue | Cloud tier provides recurring revenue. Monitor conversion rate. Launch pricing for first 500 creates urgency. |
|
||||
| Scope creep from secondary audiences (TTRPG, B2B) | Neurodivergent beachhead ONLY until validated. No feature work for secondary audiences until £2K MRR. |
|
||||
| Nobody has seen Kon yet — zero external validation | Beta this week fixes this. Share embarrassingly early. |
|
||||
| ADHD app market high abandonment rate | Design around the shame spiral. Welcome users back without judgement. Never punish inconsistency. Grace day recovery rate is the key metric. |
|
||||
| Lifetime pricing economics break if cloud costs grow | Keep cloud tier strictly optional. Base product must remain sustainable on one-time revenue alone. |
|
||||
| EAA compliance required as Kon grows beyond microenterprise threshold | Build to WCAG 2.2 AA from day one. Publish VPAT before competitors do. |
|
||||
| cr-sqlite development pace has slowed since late 2024 | Core CRDT logic is sound and self-contained. Fallback: Automerge + SQLite BLOB storage, reusing entire iroh/mDNS networking stack unchanged. |
|
||||
| Code signing costs are unavoidable | macOS £79/year + Windows £240–£480/year = ~£320–£560/year minimum. Budget from first revenue. |
|
||||
44
docs/brief/legal-compliance.md
Normal file
44
docs/brief/legal-compliance.md
Normal file
@@ -0,0 +1,44 @@
|
||||
<!-- Source: Kon Master Brief — §6 Legal & Compliance -->
|
||||
|
||||
## 6. Legal & Compliance
|
||||
|
||||
### Code signing (non-negotiable for distribution)
|
||||
- **macOS:** Apple Developer Programme (£79/year) + notarisation mandatory. Unsigned apps trigger "damaged app" dialogue that most users cannot bypass.
|
||||
- **Windows:** Extended Validation certificate (£240–£480/year) for immediate SmartScreen bypass. Unsigned executables trigger warnings that destroy conversion.
|
||||
- **Linux:** Users more tolerant of unsigned software. Flathub + AppImage as primary formats.
|
||||
- **Budget impact:** ~£320–£560/year minimum for macOS + Windows signing. Non-optional cost.
|
||||
|
||||
### GDPR position (local-only tier)
|
||||
- **Jake is NOT a data processor.** Kon runs entirely on-device. No data is transmitted, stored, or visible to the developer. Same legal position as distributing a word processor.
|
||||
- **Special category data:** Marketing targets neurodivergent users, but the app does not collect, store, or infer diagnosis information. Per ICO guidance, a "possible inference" is not special category data — only "reasonable certainty" triggers Article 9. Kon is on safe ground here.
|
||||
- **Voice data:** Processed locally by Whisper. Never leaves the device. No third-party processor involved.
|
||||
|
||||
### GDPR position (cloud tier — when added)
|
||||
- Jake becomes a data processor when voice data hits an external API.
|
||||
- Requires: explicit consent before any audio is sent, data processing addendum, clarity on which AI provider and their retention policies.
|
||||
- Do not add cloud features until revenue justifies compliance overhead.
|
||||
|
||||
### European Accessibility Act (EAA)
|
||||
- Enforceable from 28 June 2025. Applies to consumer-facing digital products sold in the EU, including apps.
|
||||
- Technical benchmark: EN 301 549 V3.2.1, incorporating WCAG 2.1 Level AA.
|
||||
- Applies to non-EU companies selling to EU customers (similar extraterritorial reach to GDPR).
|
||||
- Microenterprises (fewer than 10 employees, under €2M turnover) are currently exempt — Kon qualifies initially.
|
||||
- **The UK has not adopted the EAA.** UK relies on the Equality Act 2010 ("reasonable adjustments") with no specific technical standards enforced.
|
||||
- **Competitive opportunity:** Neither Tiimo nor Structured publishes a VPAT or formal accessibility conformance report. Publishing one first opens doors to government procurement, educational institutions, and enterprise contracts.
|
||||
- Build to WCAG 2.2 AA from day one — this aligns with Kon's design philosophy and creates a genuine compliance moat.
|
||||
|
||||
### Required before paid launch
|
||||
- [ ] Privacy policy (no data leaves device, no telemetry, no identifying analytics)
|
||||
- [ ] Terms of service (licence terms, limitation of liability, AI accuracy disclaimer)
|
||||
- [ ] Cookie policy (if landing page/website uses any tracking)
|
||||
|
||||
### Required before cloud tier launch
|
||||
- [ ] Data processing addendum
|
||||
- [ ] Explicit consent mechanism in-app
|
||||
- [ ] DPIA (Data Protection Impact Assessment) — recommended given voice data + neurodivergent audience
|
||||
- [ ] Review AI provider's data retention and training policies
|
||||
|
||||
### Business structure
|
||||
- Personal project for now. No company entity required during beta.
|
||||
- Roll into CORBEL Ltd if/when revenue becomes meaningful.
|
||||
- Consult tax advisor at ~£500+/month revenue to determine optimal structure.
|
||||
15
docs/brief/lifetime-licence-economics.md
Normal file
15
docs/brief/lifetime-licence-economics.md
Normal file
@@ -0,0 +1,15 @@
|
||||
<!-- Source: Kon Master Brief — §16 Lifetime Licence Economics -->
|
||||
|
||||
## 16. Lifetime Licence Economics
|
||||
|
||||
### Proven models
|
||||
- **Affinity (Serif):** Perpetual licences (~£40/app, £135 suite) for 23 years. 53% profit margins. Acquired by Canva for ~£410M.
|
||||
- **iA Writer:** £40 Mac, £24 Windows, £16 iOS one-time. Free updates for 7+ years. Profitable with team of 12, entirely bootstrapped. Android experiment showed 50/50 split between one-time (£24) and subscription (£4/year), but purchases generated 2–3x more total revenue with significantly better retention.
|
||||
- **Sublime Text:** £79 perpetual licence with paid major-version upgrades. Sustained a tiny team for over a decade.
|
||||
- **Obsidian:** Free core + £3.20/month Sync, £6.40/month Publish. Clearest precedent for Kon's hybrid model.
|
||||
|
||||
### Risks
|
||||
- Revenue plateaus once addressable market is saturated, while support costs continue indefinitely.
|
||||
- Wondershare Filmora attempted to retroactively limit lifetime holders — massive backlash, forced apology. Lesson: never revoke or downgrade promised features.
|
||||
- AppSumo lifetime deals carry 40% failure rate within 3 years (but this reflects underpriced SaaS with cloud costs, not local-first desktop apps).
|
||||
- 35% of apps now mix subscriptions with lifetime purchases (RevenueCat 2026 data).
|
||||
22
docs/brief/market-size-demographics.md
Normal file
22
docs/brief/market-size-demographics.md
Normal file
@@ -0,0 +1,22 @@
|
||||
<!-- Source: Kon Master Brief — §11 Market Size & Demographics -->
|
||||
|
||||
## 11. Market Size & Demographics
|
||||
|
||||
### Total addressable market
|
||||
- An estimated 15–20% of the global population is neurodivergent. Approximately 1 in 16 US adults (15M+ people) meet diagnostic criteria for ADHD alone. Globally, ~7.2% of children (around 129 million) have ADHD, with executive dysfunction present in 80–90% of cases.
|
||||
- The neurodivergent productivity app market is projected at ~£1.8 billion in 2025, growing at 16.6% CAGR.
|
||||
- The neurodiversity-aware workplace tools market is sized at ~£7.9 billion in 2025, projected to reach £16.6 billion by 2032 at 11.2% CAGR.
|
||||
- Without proper support, adults with ADHD are 60% more likely to be unemployed, 3x more likely to quit impulsively, and 30% more likely to face chronic employment difficulties.
|
||||
- ADHD individuals experience roughly a 30% developmental delay in executive functioning vs. non-ADHD peers — a neurological gap between knowing what to do and having the activation energy to start.
|
||||
- **The Gen Z factor:** This demographic is expected to grow as Gen Z enters the workforce, shifting inclusive design from a "perk" to a core business requirement.
|
||||
- **The "ADHD tax":** Time blindness and executive dysfunction lead to missed deadlines, late fees, and lost productivity. A Monzo/YouGov survey of 506 UK adults with ADHD found 60% estimated impulse spending and forgetfulness costs them £1,600/year. Adults with ADHD are 2x more likely to experience financial anxiety and 3x more likely to miss bill payments (49% vs. 18%).
|
||||
|
||||
### The psychology behind user behaviour
|
||||
- **Activation energy deficit.** Task initiation is not a willpower issue — it is a metabolic one. ADHD brains require 2–3x more dopamine stimulation to initiate tasks compared to neurotypical brains. Without novelty, interest, or urgency, the brain enters a "freeze" state (task paralysis).
|
||||
- **Time blindness (time agnosia).** Time feels abstract and non-linear. Users cannot intuitively feel how much time has passed or estimate how long a task will take, making traditional calendars highly ineffective.
|
||||
- **The shame spiral.** Classic habit trackers demand perfect discipline. When neurodivergent users inevitably miss a rigid "streak," it triggers intense guilt, leading to complete abandonment of the app. This is the single biggest reason ADHD users cycle through dozens of productivity tools.
|
||||
|
||||
### Economic upside
|
||||
- When properly accommodated, neurodivergent individuals show exceptional performance. JPMorgan Chase reports autistic employees completing tasks 48% faster with up to 92% higher productivity and 99% retention. SAP reports 90% retention, with one employee developing a solution worth ~£32M in savings. EY's Neurodiversity Centres of Excellence claim nearly £800M in value creation.
|
||||
- Economic modelling from the 117-person body doubling study estimated the intervention returned over £37 in public value for every £1 invested. Total indicative annual value per person (productivity + earnings + social value) was estimated at ~£9,000.
|
||||
- The Purple Pound (spending power of disabled people and their families) represents ~£249 billion annually in the UK.
|
||||
137
docs/brief/micro-saas-playbook.md
Normal file
137
docs/brief/micro-saas-playbook.md
Normal file
@@ -0,0 +1,137 @@
|
||||
<!-- Source: Kon Master Brief — Part 2: The 9-Pattern Micro-SaaS Playbook -->
|
||||
|
||||
# PART 2: THE 9-PATTERN MICRO-SAAS PLAYBOOK
|
||||
|
||||
**Reference.** Distilled from 30+ Starter Story case studies, founder interviews (Tibo, Mike Hill, Kleo/Lara), and cross-referenced with 4,400+ written case studies. Each pattern is mapped to Kon's current position with specific next actions.
|
||||
|
||||
---
|
||||
|
||||
## Pattern 1: Scratch Your Own Itch
|
||||
|
||||
**The principle:** The most consistent origin story across successful micro-SaaS. The founder was the customer first. Prerender.io, Kleo, Analyzify, Refiner — all built by people solving their own problem.
|
||||
|
||||
**Kon's position: ✅ Strong.**
|
||||
Jake has executive dysfunction. He searched for an offline-first, voice-driven productivity tool for neurodivergent users, couldn't find one that wasn't cloud-dependent or iOS-exclusive, and started building Kon for himself. This is the textbook origin story.
|
||||
|
||||
**Next action:** Make this the centrepiece of every piece of marketing. "I'm neurodivergent. I built this because nothing else worked for me." Authenticity is the single most powerful distribution asset in neurodivergent communities.
|
||||
|
||||
---
|
||||
|
||||
## Pattern 2: Validate by Finding Bad Incumbents
|
||||
|
||||
**The principle:** Find products already making money despite having terrible UX or obvious gaps. If people pay for something broken, the market is proven — you just build better. Mike Hill's entire philosophy.
|
||||
|
||||
**Kon's position: ✅ Strong.**
|
||||
- **Tiimo:** iPhone App of the Year 2025, $200K/month revenue. iOS-only, no Android, no native desktop, cloud-dependent, no voice transcription, subscription-only (removed lifetime option to community backlash), aggressive review prompts.
|
||||
- **WhisperFlow and similar:** Cloud-dependent, premium pricing, no task management integration.
|
||||
- **Todoist, Notion, etc.:** Not designed for neurodivergent brains, subscription-heavy, cognitively overwhelming.
|
||||
|
||||
The market is proven. People are paying. The incumbents have obvious, exploitable weaknesses.
|
||||
|
||||
**Next action:** Build a "Love/Hate/Want" spreadsheet from Tiimo's App Store reviews. Categorise every review into what users love (visual planning, gentle reminders), what they hate (no Android, subscription removal, bugs logging them out, aggressive prompts), and what they want (lifetime pricing, desktop app, offline mode). This directly informs feature priority and marketing copy.
|
||||
|
||||
---
|
||||
|
||||
## Pattern 3: Boring, Narrow Niches
|
||||
|
||||
**The principle:** Pick a niche so narrow that big players ignore it, then own it completely. Email signature generators, WhatsApp plugins for Shopify, digital signage for cafes. The narrower the niche, the less competition and the higher the conversion rate.
|
||||
|
||||
**Kon's position: ✅ Strong.**
|
||||
"Voice-first, local-only productivity app for neurodivergent people with executive dysfunction" is extremely narrow. No big player is going to build this. Tiimo is the closest and they're a 40-person VC-funded Copenhagen team that still can't get Android working.
|
||||
|
||||
**Next action:** Resist the temptation to broaden. "Productivity for everyone" is how you become invisible. Stay locked on neurodivergent users until you hit £2K MRR. The TTRPG and B2B angles can wait.
|
||||
|
||||
---
|
||||
|
||||
## Pattern 4: Ship Fast, Iterate Later
|
||||
|
||||
**The principle:** "Shipped in 12 hours and now makes $15K/month." Validation speed matters more than product perfection. Pre-sell first, build second (Gil's model). Revenue before polish.
|
||||
|
||||
**Kon's position: ✅ Strong.**
|
||||
MVP is nearly ready. Jake can rebuild from scratch in a day. Tauri/Svelte/Rust stack enables rapid iteration. Beta testers this weekend.
|
||||
|
||||
**Next action:** Ship the beta this weekend. Don't polish — test. The goal is not "is it beautiful" but "does the brain dump → task list flow actually work?" If the core loop works, everything else is iteration.
|
||||
|
||||
---
|
||||
|
||||
## Pattern 5: Distribution Beats Product
|
||||
|
||||
**The principle:** The loudest message across all 30 videos. Most builders skip distribution because it means doing "the hard thing" — talking to people. A great product with no distribution dies. A decent product with great distribution wins.
|
||||
|
||||
**Kon's position: ⚠️ Critical gap.**
|
||||
Zero distribution infrastructure. No landing page, no waitlist, no domain, no social presence for Kon. Nobody outside Jake's immediate circle has seen it.
|
||||
|
||||
**Next actions (in order):**
|
||||
1. Register domain this week (kon.app or getkon.app).
|
||||
2. One-page landing page with waitlist signup live by Monday.
|
||||
3. Roo's nonprofit network gets the link first.
|
||||
4. Reddit posts in r/ADHD, r/adhdwomen, r/ADHD_Programmers, r/autism — authentic, not salesy.
|
||||
5. One short-form video per week once beta feedback validates the core loop.
|
||||
|
||||
This is the make-or-break pattern. Everything else is in place. Distribution is the bottleneck.
|
||||
|
||||
---
|
||||
|
||||
## Pattern 6: Audience-First Launches
|
||||
|
||||
**The principle:** Kleo's playbook — don't launch publicly. Build a waitlist using content, run mini-launches to waitlist subscribers only, create FOMO through scarcity ("you can't buy this, you need to join the waitlist"), and hit £30K MRR in four days. Lara took info-product launch tactics (webinars, email sequences, urgency) and applied them to SaaS.
|
||||
|
||||
**Kon's position: ⚠️ Planned but not yet started.**
|
||||
Jake intends to do an invite-only beta to create scarcity and mystique. The instinct is right — this maps directly to Kleo's playbook.
|
||||
|
||||
**Next actions:**
|
||||
1. Waitlist is the foundation. Every Reddit post, every video, every conversation should drive to the waitlist.
|
||||
2. Beta invites go out in small waves, not all at once. "Wave 1: 15 people. Wave 2: 50 people." Creates natural FOMO.
|
||||
3. Ask beta testers to share the waitlist link if they like the product. Word-of-mouth in neurodivergent communities is extremely powerful — these are tight-knit groups that actively share tools that work.
|
||||
4. Collect testimonials during beta. Even one "this genuinely changed how I manage my day" quote is worth more than any feature list.
|
||||
|
||||
---
|
||||
|
||||
## Pattern 7: Design as a Moat
|
||||
|
||||
**The principle:** Mike Hill is emphatic — every one of his founding teams has a designer. Good design sells. Target incumbents with bad UX. When your product looks and feels better, it becomes self-selling.
|
||||
|
||||
**Kon's position: ✅ Strong.**
|
||||
Tauri/Svelte produces a native, fast UI. The design brief includes research-backed neurodivergent-specific design principles: Lexend/Atkinson Hyperlegible typography, sensory colour zoning, no halation, progressive disclosure, literal labels, motion control, forgiving interaction patterns. This level of design intentionality is a genuine moat — Tiimo is good but Kon's design spec is more deeply grounded in the research.
|
||||
|
||||
**Next action:** Make the design visible in marketing. Screenshots, screen recordings, and side-by-side comparisons with competitors. "Here's what Tiimo looks like. Here's what Kon looks like. Notice the difference." Let the design sell itself.
|
||||
|
||||
---
|
||||
|
||||
## Pattern 8: Bootstrap and Extract
|
||||
|
||||
**The principle:** Almost universally, successful micro-SaaS founders are bootstrapped. Mike Hill's model: 4 co-founders, 25% equity each, grow to £10K MRR to cover costs, then split profits as salary. No VC, no bloated teams. His explicit quote: "these businesses are about bigger salaries, not big exits."
|
||||
|
||||
**Kon's position: ✅ Strong.**
|
||||
Solo founder. No VC. No team overhead. Near-zero infrastructure costs (local-first means no servers for the base product). Lifetime pricing + optional cloud subscription. Revenue goes directly to Jake.
|
||||
|
||||
**Next action:** Set a clear personal revenue target. What number makes this worth maintaining? £500/month covers costs and proves viability. £2K/month funds CORBEL growth. £5K/month is a genuine second income stream. Know your number so you can measure against it.
|
||||
|
||||
---
|
||||
|
||||
## Pattern 9: Portfolio Approach
|
||||
|
||||
**The principle:** The highest earners aren't running one product — they're running five or six. Tibo has five apps (combined £700K/month). Mike Hill has five (combined £200K/month). Risk distribution: if one stalls, others keep growing. Each new product follows the same repeatable playbook.
|
||||
|
||||
**Kon's position: ⏳ Not relevant yet.**
|
||||
This is product #1. The playbook only applies once Kon is generating revenue and the system is proven. Then Jake can ask: "What's the next niche I can apply this exact process to?"
|
||||
|
||||
**Next action:** None right now. Focus entirely on Kon. But document everything — what worked, what didn't, what you'd do differently. When the time comes for product #2, you'll have a personal playbook to run again.
|
||||
|
||||
---
|
||||
|
||||
### Playbook Summary: Where Kon Stands
|
||||
|
||||
| Pattern | Status | Priority |
|
||||
|---|---|---|
|
||||
| 1. Scratch your own itch | ✅ Strong | Leverage in marketing |
|
||||
| 2. Bad incumbents identified | ✅ Strong | Build Love/Hate/Want spreadsheet from Tiimo reviews |
|
||||
| 3. Narrow niche | ✅ Strong | Don't broaden until £2K MRR |
|
||||
| 4. Ship fast | ✅ Strong | Beta this weekend |
|
||||
| 5. Distribution | ⚠️ Critical gap | Domain + landing page + waitlist THIS WEEK |
|
||||
| 6. Audience-first launch | ⚠️ Planned not started | Waitlist → invite waves → testimonials |
|
||||
| 7. Design as moat | ✅ Strong | Make it visible in marketing |
|
||||
| 8. Bootstrap and extract | ✅ Strong | Set personal revenue target |
|
||||
| 9. Portfolio approach | ⏳ Not yet | Document everything for future products |
|
||||
|
||||
**The single most important thing to do right now:** Solve pattern 5. Get distribution infrastructure live. Everything else is in place or on track.
|
||||
31
docs/brief/open-questions.md
Normal file
31
docs/brief/open-questions.md
Normal file
@@ -0,0 +1,31 @@
|
||||
<!-- Source: Kon Master Brief — §10 Open Questions -->
|
||||
|
||||
## 10. Open Questions
|
||||
|
||||
### Resolved (decisions made — see relevant sections)
|
||||
- ~~Sync architecture~~ → cr-sqlite + iroh selected (section 3)
|
||||
- ~~Minimum hardware specs~~ → 8GB RAM, 2020+ CPU (section 3)
|
||||
- ~~CRDT library evaluation~~ → cr-sqlite for SQL-level CRDTs, iroh for networking (section 3)
|
||||
- ~~Whisper model selection~~ → ggml-base.en desktop, ggml-tiny.en mobile (section 3)
|
||||
- ~~LLM model selection~~ → Phi-4-mini (8GB), Qwen 3 7B (16GB), Llama 3.2 1B (mobile) (section 3)
|
||||
- ~~Waitlist tool~~ → LaunchList £65 one-time (section 7)
|
||||
- ~~Payment processor~~ → Lemon Squeezy 5% + 50p (section 7)
|
||||
- ~~Pricing validation method~~ → Van Westendorp survey via Tally (section 5)
|
||||
- ~~Bionic Reading implementation~~ → CSS regex (bold first N chars), text-vide npm package or custom, MIT licensed
|
||||
- ~~Nudging delivery mechanism~~ → tauri-plugin-notification + Web Audio API chimes + context-aware suppression (section 4)
|
||||
|
||||
### Still open
|
||||
- Exact free tier limitations (number of tasks? transcriptions? time limit?)
|
||||
- Which frontier AI model for cloud tier (Claude, GPT-4o, other?)
|
||||
- App store submission timeline and requirements for Android/iOS
|
||||
- Sensory preference persistence ("sensory cookies") — save user's baseline motion/contrast/typography settings across sessions. MVP or v2?
|
||||
- Emotionally adaptive UI (detect frustration/fatigue, auto-simplify interface) — v2+ feature, but worth architecting for early
|
||||
- Mac App Store sandboxing compatibility with Tauri — needs hands-on testing
|
||||
- Access to Work approval process for specific software products — exact requirements TBD
|
||||
- Search volume data for "ADHD desktop app", "ADHD app for Windows" etc. — validate with Ahrefs/SEMrush before committing to SEO strategy
|
||||
- Tiimo's B2B pricing (not publicly available) — competitive intelligence via test enquiry
|
||||
- Visual timeline implementation — time blocks, Gantt-style, or simpler countdown view? Validate with beta testers.
|
||||
- Smartwatch integration for haptic nudges — Tauri v2 wearable support? Or companion app?
|
||||
- Low-fi body doubling: would showing anonymised user count ("3 others in deep work") require any server component? Could use iroh peer count from paired devices, but broader anonymous count needs a lightweight coordination mechanism.
|
||||
- Start/shutdown ritual UX: how prescriptive should the morning triage be? Fully AI-driven or user-guided? Beta test both approaches.
|
||||
- cr-sqlite development pace risk: monitor vlcn.io activity. If stalled, migrate to Automerge + SQLite BLOB storage (networking layer unchanged).
|
||||
52
docs/brief/pricing-model.md
Normal file
52
docs/brief/pricing-model.md
Normal file
@@ -0,0 +1,52 @@
|
||||
<!-- Source: Kon Master Brief — §5 Pricing Model -->
|
||||
|
||||
## 5. Pricing Model
|
||||
|
||||
### Free tier
|
||||
Basic voice capture + local transcription + simple task list. Limited functionality (e.g. 5 active tasks or 10 stored transcriptions). Top-of-funnel — proves the core value loop.
|
||||
|
||||
### Kon Pro — lifetime licence
|
||||
| Platform | Price |
|
||||
|---|---|
|
||||
| Desktop (Windows/macOS/Linux) | £49 |
|
||||
| Mobile (Android/iOS) | £29 |
|
||||
| All platforms bundle | £59 |
|
||||
|
||||
Full feature set, all running locally. Unlimited transcription, templates, profiles, micro-stepping, if-then automation, history. One payment, forever. No subscription.
|
||||
|
||||
**Positioning:** "They took away lifetime. We never will."
|
||||
|
||||
### Kon Cloud — optional subscription (£4.99/month or £39.99/year)
|
||||
Access to frontier AI model (Claude, GPT-4o, or similar) for:
|
||||
- Higher-accuracy transcription of specialist vocabulary
|
||||
- Smarter task decomposition
|
||||
- More natural language understanding in assistant features
|
||||
|
||||
This is the only recurring revenue stream and is genuinely tied to per-request API costs — not extractive.
|
||||
|
||||
### Pricing rationale
|
||||
- Tiimo charges £45–£95/year with no lifetime option. Their users actively want one.
|
||||
- iA Writer's real-world data shows one-time purchases generate 2–3x more revenue than subscriptions, with significantly better retention.
|
||||
- Affinity (Serif) built a company acquired for ~£410M entirely on perpetual licences at ~£40/app.
|
||||
- Local-first architecture means near-zero ongoing infrastructure costs for the base product.
|
||||
- Cloud tier justified because it incurs real per-request costs.
|
||||
- Lifetime model works because Tauri/Rust is low-maintenance and Jake can rebuild in a day if needed.
|
||||
- Desktop price of £49 matches iA Writer exactly. Bundle at £59 creates a strong upgrade path.
|
||||
- Consider launch pricing: £49 (discounted from £59) for first 500 buyers to build social proof.
|
||||
|
||||
### Pricing sensitivity notes
|
||||
- Adults with ADHD earn 17% less than neurotypical peers at equivalent educational levels.
|
||||
- 60% of UK adults with ADHD estimate impulse spending and forgetfulness costs them £1,600/year.
|
||||
- Forgotten subscriptions are a specific, acute financial hazard for people with executive dysfunction.
|
||||
- Lifetime pricing directly addresses the "ADHD tax" problem. Frame it explicitly: "Pay once. No subscriptions to forget. No guilt for taking a break."
|
||||
- Consider accessibility pricing (student/disability discount) or pay-what-you-want tiers for launch.
|
||||
- UK Access to Work grants (up to ~£66,000/year) can fund software tools — a potential B2B unlock.
|
||||
|
||||
### Pre-launch pricing validation (Van Westendorp)
|
||||
Before committing to £49, send the waitlist a four-question survey via Tally (free):
|
||||
1. At what price would Kon be so expensive you'd never buy it?
|
||||
2. At what price would it seem so cheap you'd doubt its quality?
|
||||
3. At what price is it getting expensive but you'd still consider it?
|
||||
4. At what price is it a bargain?
|
||||
|
||||
Plot the four curves — their intersections reveal the acceptable price range and optimal price point. Takes 10 minutes to set up and can prevent months of pricing regret.
|
||||
10
docs/brief/research-gaps.md
Normal file
10
docs/brief/research-gaps.md
Normal file
@@ -0,0 +1,10 @@
|
||||
<!-- Source: Kon Master Brief — §20 Research Gaps Still to Investigate -->
|
||||
|
||||
## 20. Research Gaps Still to Investigate
|
||||
|
||||
- Direct search volume data for "ADHD desktop app", "ADHD app for Windows" etc. (requires Ahrefs/SEMrush)
|
||||
- Tiimo's precise B2B pricing (not publicly available — competitive intelligence via test enquiry)
|
||||
- Access to Work approval process for specific software products — exact requirements and timeline
|
||||
- Tauri framework compatibility with Mac App Store sandboxing — needs hands-on testing
|
||||
- ADHD influencer rates — estimates based on general tiers, direct outreach needed for precise figures
|
||||
- User willingness to pay £49 for a desktop app in this demographic — beta feedback will inform this
|
||||
26
docs/brief/success-metrics.md
Normal file
26
docs/brief/success-metrics.md
Normal file
@@ -0,0 +1,26 @@
|
||||
<!-- Source: Kon Master Brief — §9 Success Metrics -->
|
||||
|
||||
## 9. Success Metrics
|
||||
|
||||
### Business metrics
|
||||
|
||||
| Milestone | Target |
|
||||
|---|---|
|
||||
| Beta testers recruited | 10–15 |
|
||||
| Beta feedback: "same complaints repeating" threshold | Signal to stop beta, ship v1.0 |
|
||||
| Waitlist signups pre-launch | 100+ |
|
||||
| First paid sale | Within 2 weeks of public launch |
|
||||
| Revenue target (6 months) | £2K MRR (mix of lifetime + cloud subscriptions) |
|
||||
| Revenue trigger to evaluate CORBEL roll-up | £500/month sustained |
|
||||
|
||||
### Neuro-inclusive product metrics
|
||||
|
||||
Standard SaaS metrics like Daily Active Users (DAU) or unbroken streaks must be avoided — they encourage the exact shame spiral Kon is designed to prevent. Track these instead:
|
||||
|
||||
| Metric | What it measures | Why it matters |
|
||||
|---|---|---|
|
||||
| **Time-to-capture** | Seconds from app open to completed brain dump | Measures friction. If this exceeds 10 seconds, the thought is gone. The lower this number, the better Kon serves its core purpose. |
|
||||
| **Grace day recovery rate** | % of users who return and complete a task after 1+ days of inactivity | Proves Kon has beaten the abandon-shame cycle. This is the single most important product metric. If users come back after missing days without guilt, the design is working. |
|
||||
| **Micro-step completion rate** | Completion rate of AI-decomposed tasks vs. manually entered abstract tasks | Validates that micro-stepping actually works. If AI-generated steps have higher completion rates than user-entered tasks, the feature is earning its keep. |
|
||||
| **Brain dump → task conversion** | % of voice transcription content that converts into actionable tasks | Measures AI quality. Low conversion means the AI isn't parsing well; high conversion means the core loop works. |
|
||||
| **Return after lapse** | Median days between last session and next session for users who go inactive | Measures stickiness without punishing breaks. A user who returns after 2 weeks is a success, not a failure. |
|
||||
13
docs/brief/target-audience.md
Normal file
13
docs/brief/target-audience.md
Normal file
@@ -0,0 +1,13 @@
|
||||
<!-- Source: Kon Master Brief — §2 Target Audience -->
|
||||
|
||||
## 2. Target Audience
|
||||
|
||||
**Primary beachhead:** Neurodivergent individuals (ADHD, autism, executive dysfunction) who need a non-judgmental, low-cognitive-load tool for organising their thoughts and tasks.
|
||||
|
||||
**Secondary audiences (post-validation):**
|
||||
- Writers and creatives who need to brain dump and structure ideas
|
||||
- TTRPG game masters (session transcription, pulling key details from games)
|
||||
- Privacy-conscious professionals (legal, medical, security-compliant industries)
|
||||
- Anyone who does significant note-taking or typing and would benefit from voice-to-text
|
||||
|
||||
**Beachhead first.** Validate with neurodivergent users before expanding messaging to secondary audiences.
|
||||
88
docs/brief/tech-stack.md
Normal file
88
docs/brief/tech-stack.md
Normal file
@@ -0,0 +1,88 @@
|
||||
<!-- Source: Kon Master Brief — §3 Tech Stack -->
|
||||
|
||||
## 3. Tech Stack
|
||||
|
||||
### Core framework
|
||||
- **Framework:** Tauri v2.10+ (Rust backend, Svelte 5 frontend)
|
||||
- **Database:** SQLite via rusqlite v0.31 (bundled, with load_extension support)
|
||||
- **Platforms:** Windows, macOS, Linux (primary), Android and iOS (secondary — Tauri v2 mobile support)
|
||||
- **Testing device:** Pixel 9 Pro XL (Android)
|
||||
|
||||
### AI transcription
|
||||
- **Engine:** whisper-rs v0.16.0 (Rust bindings to whisper.cpp). Supports CUDA, Vulkan, Metal, OpenBLAS, and CoreML acceleration. Built-in Voice Activity Detection via Silero for automatic silence trimming.
|
||||
- **Desktop model:** ggml-base.en (~142MB). Processes 5 minutes of audio in ~10–15 seconds on a modern CPU.
|
||||
- **Mobile model:** ggml-tiny.en (~75MB). Lighter footprint for constrained devices.
|
||||
- **Audio format:** 16kHz mono f32 PCM. Use Tauri's media APIs to capture and convert.
|
||||
|
||||
### AI reasoning (local LLM)
|
||||
- **Inference engine:** llama-cpp-2 crate (utilityai/llama-cpp-rs) — safe Rust wrappers around llama.cpp with GGUF format support, CUDA/Vulkan/Metal backends via feature flags, tool-calling support.
|
||||
- **Hardware tiers:**
|
||||
|
||||
| Hardware | RAM | Model | Quantisation | Size | CPU Speed |
|
||||
|---|---|---|---|---|---|
|
||||
| Minimum | 8GB | Phi-4-mini (3.8B) | Q4_K_M | ~2.3GB | 15–25 tok/s |
|
||||
| Recommended | 16GB | Qwen 3 7B | Q4_K_M | ~4.5GB | 10–20 tok/s |
|
||||
| Optimal | 32GB | Llama 3.3 8B | Q5_K_M | ~5.5GB | 10–20 tok/s |
|
||||
| Mobile | 4–6GB | Llama 3.2 1B | Q4_K_M | ~0.8GB | 30–50 tok/s |
|
||||
|
||||
- **Benchmarks:** Ryzen 5700G (DDR4) achieves ~11 tok/s on 7B Q4_K_M. Apple M3 base achieves ~26 tok/s. For Kon's use case (50–200 token responses for task decomposition), 10–15 tok/s is perfectly usable (1–10 seconds per response).
|
||||
- **Minimum published spec:** 8GB RAM, any CPU from 2020+. Below 8GB is not supported.
|
||||
|
||||
### Local RAG pipeline
|
||||
- **Vector search:** sqlite-vec v0.1.0 (Alex Garcia). Pure C SQLite extension, zero external dependencies. Creates `vec0` virtual tables alongside regular tables. Brute-force KNN completes in ~20ms for 100,000 vectors at 384 dimensions. Everything lives in one .db file — no second data store.
|
||||
- **Embeddings:** fastembed v5.12.0 (wraps ONNX Runtime). Default model: BGE-small-en-v1.5 quantised — 33M parameters, 384 dimensions, ~35MB model file, ~20ms per 1,000 tokens on CPU. For 16GB+ machines: nomic-embed-text-v1.5 (768 dimensions, 8,192 token context).
|
||||
- **Chunking strategy:** Recursive character splitting at 400–512 tokens with 15% overlap. Split on sentence boundaries first (natural speech has clear breaks), then fall back to recursive splitting. Research (Vectara, NAACL 2025) confirms fixed-size chunking outperforms semantic chunking for retrieval accuracy.
|
||||
- **RAG pipeline stages:** Voice → Whisper transcription → Chunking → Embedding via fastembed → Vector storage in sqlite-vec → KNN retrieval on query → Context assembly → LLM inference → Response.
|
||||
|
||||
### AI agent framework (MCP)
|
||||
- **Protocol:** Model Context Protocol (MCP) via rmcp v0.16.0 (official Rust SDK). JSON-RPC 2.0 with STDIO transport — runs entirely in-process, no network, no cloud.
|
||||
- **Core tools defined:**
|
||||
- `create_task` — creates a new task with title (must start with a verb), priority, and project
|
||||
- `search_history` — embeds query → sqlite-vec KNN → returns relevant transcription chunks
|
||||
- `set_reminder` — creates a time-based or context-based reminder
|
||||
- `decompose_task` — sends abstract task to local LLM with micro-stepping system prompt, returns 3–7 concrete steps
|
||||
- **Autonomous loop:** Background agent runs every 30 minutes (or on new transcription). Observe recent activity → Analyse patterns via embedding search → Generate 1–2 proactive suggestions → Present as non-intrusive badges. All suggestions require explicit user confirmation — never auto-execute.
|
||||
|
||||
### Cross-device sync (post-MVP)
|
||||
- **CRDT layer:** cr-sqlite (vlcn.io, ~3,500 GitHub stars, core Rust). Operates at the SQL level — `SELECT crsql_as_crr('tasks')` converts any table to a Conflict-free Replicated Relation. Normal SQL continues working. Metadata overhead: ~50–100 bytes per modified cell.
|
||||
- **Networking:** iroh (n0-computer/iroh, ~7,900 GitHub stars, pure Rust, v0.96+). Dials peers by Ed25519 public key. Auto-selects best path: direct QUIC on LAN, NAT hole-punching on WAN, or encrypted relay fallback. QUIC with TLS 1.3. Relays are zero-knowledge.
|
||||
- **Local discovery:** mdns-sd crate v0.13.11. Registers `_kon-sync._tcp.local.` via multicast DNS.
|
||||
- **Device pairing:** QR code + Noise XX handshake (snow crate v0.9.x) with OTP pre-shared key. No server required.
|
||||
- **Relay fallback:** Self-host with `cargo install iroh-relay` on a £4/month VPS. n0 also operates free public relays (rate-limited).
|
||||
- **Conflict resolution:** Last-Writer-Wins per field (highest lamport timestamp, site_id tiebreaker). Edits to different fields merge cleanly. Extended offline: changeset size proportional to number of changes, not duration.
|
||||
- **Risk note:** cr-sqlite development pace has slowed since late 2024. Fallback plan: Automerge + SQLite BLOB storage, reusing the entire iroh/mDNS networking stack unchanged.
|
||||
|
||||
### Context management for long-term memory
|
||||
|
||||
| Layer | Content | Token Budget |
|
||||
|---|---|---|
|
||||
| Immediate | Current query + last 2–3 exchanges | ~500 |
|
||||
| Retrieved | Top-5 semantically relevant chunks from sqlite-vec | ~1,500 |
|
||||
| Session | Running summary of current session | ~300 |
|
||||
| Long-term | Compressed summaries of older transcriptions | ~200 |
|
||||
|
||||
- **Progressive summarisation:** Transcriptions >7 days old get LLM-generated summaries. >30 days: merge into monthly digests. Original chunks remain vector-searchable. Summaries used for context injection.
|
||||
|
||||
### Core Rust dependencies
|
||||
```toml
|
||||
[dependencies]
|
||||
tauri = "2.10"
|
||||
rusqlite = { version = "0.31", features = ["bundled", "load_extension"] }
|
||||
whisper-rs = "0.16"
|
||||
llama-cpp-2 = { version = "0.1", features = ["vulkan"] }
|
||||
fastembed = "5"
|
||||
sqlite-vec = "0.1"
|
||||
rmcp = { version = "0.16", features = ["server", "transport-io", "macros"] }
|
||||
iroh = "0.96"
|
||||
mdns-sd = "0.13"
|
||||
snow = "0.9"
|
||||
ed25519-dalek = "2.1"
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
uuid = { version = "1", features = ["v4"] }
|
||||
chrono = "0.4"
|
||||
tauri-plugin-store = "2"
|
||||
tauri-plugin-notification = "2"
|
||||
tauri-plugin-window-state = "2"
|
||||
```
|
||||
96
docs/brief/technology-map.md
Normal file
96
docs/brief/technology-map.md
Normal file
@@ -0,0 +1,96 @@
|
||||
# Building Kon: a complete technology map for local-first, voice-first desktop AI
|
||||
|
||||
**Kon's entire stack -- from audio capture through LLM inference to neurodivergent-friendly UI -- can be built from actively maintained, production-tested open-source components.** The Rust + Tauri v2 + Svelte 5 ecosystem has matured dramatically through 2024-2026, with reference applications like Handy (13.8k stars, Tauri + Whisper + real-time audio) and Whispering (Svelte 5 + Tauri transcription) proving the core architecture viable. The most critical finding: **no existing app combines all of Kon's pieces**, making this a genuinely novel integration -- but every individual subsystem has battle-tested implementations to learn from.
|
||||
|
||||
**Ingested from:** `input/inbox/backlinksforfree` on 2026/03/20
|
||||
**Used in:** `docs/superpowers/specs/2026-03-20-kon-mvp-design.md`
|
||||
|
||||
---
|
||||
|
||||
## Area 1: Core MVP features
|
||||
|
||||
### 1. Audio capture pipeline
|
||||
|
||||
The real-time audio path from microphone to Whisper requires three crates: **cpal** (v0.15.x, Apache 2.0) for cross-platform audio capture, **rubato** (v0.16.2, MIT) for SIMD-accelerated resampling to 16kHz, and a VAD layer. Recommended architecture: three dedicated threads connected by ring buffers.
|
||||
|
||||
The **voice-stream** crate (v0.4.0) wraps the entire pipeline (cpal + rubato + Silero VAD) into a single library. Fastest path to working audio, though forking allows finer control.
|
||||
|
||||
For VAD: whisper-rs v0.16's **built-in VAD** (simplest), **silero-vad-rust** (MIT, streaming-ready), voice_activity_detector (used by Handy), **webrtc-vad** (lightweight but lower accuracy).
|
||||
|
||||
**Reference apps:** Handy (13.8k stars, exact pipeline), Whispering (4.2k stars, Svelte 5 + Tauri), Vibe (v3.0.19, model management patterns).
|
||||
|
||||
### 2. Whisper integration
|
||||
|
||||
**whisper-rs** (v0.16.0, 183k+ downloads) is the primary recommendation. **transcribe-rs** (v0.3.0) abstracts over multiple STT engines (whisper.cpp, Parakeet, Moonshine, SenseVoice). **whisper-cpp-plus** adds WhisperStream for real-time streaming with integrated Silero VAD.
|
||||
|
||||
Two transcription patterns: **chunked-VAD** (simpler, 1-5s latency, used by Handy) vs **overlapping-window streaming** (3.3s latency, more complex). Chunked-VAD is sufficient for voice-first task capture.
|
||||
|
||||
### 3. Local LLM integration
|
||||
|
||||
**llama-cpp-2** (MIT/Apache-2.0) provides safe Rust bindings. Does not follow semver -- pin exact versions.
|
||||
|
||||
Three architectures: **Direct embedding via Tauri Channels** (recommended -- faster, ordered delivery), **sidecar** (fault isolation but process management complexity), **tauri-plugin-llm** (PolyForm licence -- evaluate carefully).
|
||||
|
||||
Higher-level alternatives: **kalosm** (type-safe structured generation via `#[derive(Parse)]`), **mistral.rs** (pure Rust, PagedAttention).
|
||||
|
||||
Model lifecycle: load at first inference, keep during session, unload on background/close (simpler than Ollama's 5-minute idle timeout).
|
||||
|
||||
### 4. sqlite-vec + fastembed RAG pipeline
|
||||
|
||||
**sqlite-vec** (~7.2k stars, MIT/Apache-2.0) adds vector search via vec0 virtual table. Sub-10ms latency for tens of thousands of vectors. Uses rusqlite with bundled feature.
|
||||
|
||||
**fastembed-rs** (v5.x, Apache-2.0, Qdrant team) generates embeddings via ONNX Runtime. Recommended: **BGESmallENV15Q** (quantised, ~17MB, 384 dims) or **AllMiniLML6V2** (~23MB).
|
||||
|
||||
Hybrid search: FTS5 + sqlite-vec with **Reciprocal Rank Fusion** (documented by Alex Garcia). <3ms total retrieval on Raspberry Pi Zero 2 W.
|
||||
|
||||
**No published project combines sqlite-vec + fastembed-rs** -- Kon's implementation is novel.
|
||||
|
||||
### 5. Time-block visualisation
|
||||
|
||||
**Schedule-X** (@schedule-x/svelte, v3.0.0, MIT) for day/week calendar views. **Frappe Gantt** (MIT, SVG-based) for timeline. Custom CSS Grid for maximum control.
|
||||
|
||||
Design references: Tiimo (circular countdown, sensory-friendly), Structured (vertical timeline, energy monitor), Llama Life (single-task focus with countdown), Sunsama (guided daily planning).
|
||||
|
||||
### 6. Task decomposition
|
||||
|
||||
GBNF grammar constraints ensure valid JSON output (~25% accuracy improvement). kalosm's `#[derive(Parse)]` eliminates JSON parsing entirely.
|
||||
|
||||
**Goblin Tools** provides the best UX reference -- "spiciness slider" for decomposition depth. Each step: single concrete physical action, verb-first, 2-15 minutes, energy-level tagged, 20% overestimation buffer, first step highlighted prominently.
|
||||
|
||||
---
|
||||
|
||||
## Area 2: Optimisation patterns
|
||||
|
||||
### 7. Fractional indexing
|
||||
|
||||
**fractional_index** crate (v2.x, MIT) for Rust. **fractional-indexing** (CC0, ~535k weekly npm) for JS. Reordering updates exactly one row.
|
||||
|
||||
Pairs with **svelte-dnd-action** (MIT, accessible, keyboard/screen reader) or **@dnd-kit/svelte** (official port, Svelte 5.29+).
|
||||
|
||||
### 8. Session state restoration
|
||||
|
||||
**tauri-plugin-store** for persistent key-value. **tauri-plugin-window-state** for window position/size. Timer persistence: `{ startedAt, accumulatedMs, lastResumedAt, state }` with absolute timestamps.
|
||||
|
||||
### 9. Model downloading
|
||||
|
||||
reqwest with bytes_stream, HTTP Range headers for resume, incremental SHA256 via ring/sha2. Progress via Tauri Channels (not events). **trauma** crate for resume support.
|
||||
|
||||
### 10. Tauri v2 local-first patterns
|
||||
|
||||
**tauri-plugin-sql** for standard SQLite. **rusqlite** with bundled for sqlite-vec. State management: commands for CRUD, events for push notifications, channels for streaming.
|
||||
|
||||
**cr-sqlite** (Apache-2.0) for future CRDT-based sync (~2.5x write overhead).
|
||||
|
||||
Reference apps: Screenpipe, GitButler, Musicat, Duckling.
|
||||
|
||||
### 11. WIP limits
|
||||
|
||||
Soft limits with progressive visual warning (green to yellow to red). Start with WIP limit of 3, let users adjust per energy/context. "Stop starting, start finishing."
|
||||
|
||||
### 12. Neurodivergent-first design
|
||||
|
||||
**No open-source component library exists for neurodivergent users** -- ecosystem gap and differentiation opportunity.
|
||||
|
||||
Foundation: **shadcn-svelte** + Bits UI for ARIA/keyboard accessibility. Layer neurodivergent styling on top. **OKLCH colour system** with locked Lightness. Reduced motion as default (opt-in, not opt-out). Progressive disclosure below 3 levels. Literal labels always.
|
||||
|
||||
Essential references: W3C COGA, Microsoft Inclusive Design for Cognition Guidebook.
|
||||
61
docs/brief/tiimo-competitive-intel.md
Normal file
61
docs/brief/tiimo-competitive-intel.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# Tiimo Competitive Intelligence Report (2026)
|
||||
|
||||
## Executive Summary: Kon's Key Advantages
|
||||
Based on current intelligence, **Kon** has several immediate strategic openings against Tiimo:
|
||||
1. **The "Lifetime" Opening:** Tiimo recently removed their highly popular lifetime license, causing massive frustration in the neurodivergent community (who often struggle with recurring subscriptions). Kon can win significant goodwill by offering a clear, sustainable lifetime tier or a radically different neuro-friendly pricing model.
|
||||
2. **The Android/Platform Gap:** In September 2025, Tiimo completely removed its Android app, leaving a massive portion of the market unserved. They also lack a true native desktop application (relying on a web wrapper). Kon's native desktop-first approach fills a vital gap for users who need deep workflow integration rather than just a mobile companion.
|
||||
3. **The Complexity Friction:** While Tiimo's AI Co-planner is popular, users report a steep learning curve and heavy setup time. Kon's voice-transcription premise—allowing users to simply speak to create structure—offers a dramatically lower barrier to entry for users with executive dysfunction.
|
||||
4. **B2B / Teams Vacuum:** Tiimo has virtually no enterprise or team-based pricing, focusing entirely on solo consumers (and a 5-person "family" sharing plan). This leaves the B2B neurodiversity-inclusion workspace wide open.
|
||||
|
||||
---
|
||||
|
||||
## 1. Current Pricing & Lifetime License
|
||||
* **Free Tier:** Basic planning tools, limited AI usage.
|
||||
* **Pro Monthly:** ~$7 – $12 / month.
|
||||
* **Pro Annual:** ~$35 – $54 / year.
|
||||
* **Lifetime License:** **Removed.** Historically $60-$70.
|
||||
* **Community Reaction:** The removal of the lifetime license sparked severe backlash (visible on Reddit and feedback boards). Users noted that recurring subscriptions are fundamentally hostile to ADHD users who suffer from "subscription tax" (forgetting to cancel or manage payments due to executive dysfunction). It was removed without prior announcement, cited by Tiimo as necessary for sustainable development.
|
||||
* *Sources:* `aiinsightsnews.net`, `nolt.io`, `reddit.com`
|
||||
|
||||
## 2. B2B / Enterprise Pricing
|
||||
* **Status:** **Non-existent.**
|
||||
* Tiimo operates strictly on a B2C freemium model. While they mention "Tiimo for work" as a partnership concept for neurodivergent employees, there are no public team plans, enterprise pricing tiers, or B2B collaborative features.
|
||||
* They allow up to 5 profiles on a single account, acting more like a family plan.
|
||||
* *Sources:* `tiimoapp.com`, `skywork.ai`
|
||||
|
||||
## 3. Recent Feature Changes (Last 6 Months - Late 2025/2026)
|
||||
* **AI Co-Planner:** Launched in late 2025. Helps break down large tasks into smaller steps, suggests time estimates, and allows chat-based schedule modification.
|
||||
* **Brain Dump Assistant:** A chat interface for fast unloading of thoughts.
|
||||
* **Planning Streaks & Gamification:** Introduced features to reward habit-building.
|
||||
* **Platform Reduction:** **Removed from Android** in September 2025. Won Apple's "iPhone App of the Year 2025."
|
||||
* *Sources:* `apple.com`, `twit.tv`, `tiimoapp.com`
|
||||
|
||||
## 4. User Sentiment (Reddit, Trustpilot, App Stores)
|
||||
* **What Users Love:**
|
||||
* **Visual Timelines:** Very effective for "time blindness."
|
||||
* **Non-Judgmental:** Doesn't "punish" unfinished tasks like other trackers; less productivity shame.
|
||||
* **"Anytime" Tasks:** Flexibility for tasks without strict time constraints.
|
||||
* **What Frustrates Them:**
|
||||
* **The Learning Curve:** Setup is tedious and high-friction.
|
||||
* **Pricing:** Removal of the lifetime tier and expensive monthly cost.
|
||||
* **Buggy Timers:** Frequent complaints about timers failing to pause or sync properly.
|
||||
* **Abandonment of Android:** Massive frustration from non-Apple users.
|
||||
* *Sources:* `Reddit (r/ADHD)`, `yourappland.com`, `skywork.ai`
|
||||
|
||||
## 5. Platform Coverage
|
||||
* **Mobile:** iOS, iPadOS, Apple Watch. (Android was removed in Sept 2025).
|
||||
* **Desktop:** No native desktop app. They offer a Web App that syncs with mobile. Users on Mac/Windows have to use a browser or third-party web wrappers like WebCatalog to get a "desktop-like" experience.
|
||||
* *Sources:* `tiimoapp.com`, `webcatalog.io`
|
||||
|
||||
## 6. Privacy Model
|
||||
* **Infrastructure:** Cloud-based. Data is synced across devices via cloud storage.
|
||||
* **Data Collection:** Uses third-party cookies (e.g., Google) for ads and tracking on their web properties.
|
||||
* **Protections:** They use a "one-way import" for external calendars. Events from Apple/Google Calendar come *into* Tiimo, but private Tiimo routines do not sync *out* to standard calendars, protecting the user's routines from being visible to coworkers or family members who share external calendars.
|
||||
* *Sources:* `tiimoapp.com`, `nolt.io`
|
||||
|
||||
## 7. Funding & Team Size
|
||||
* **Total Funding:** ~$6M. Recently raised a $1.6M Pre-Series A round (adding to a 2022 $3.2M Seed).
|
||||
* **Investors:** Crowberry Capital, People Ventures, Goodwater Capital, Divergent Investments.
|
||||
* **Traction:** ~50,000 paying subscribers and 500,000 free users (as of Aug 2024). Over 75% of payers identify as neurodivergent.
|
||||
* **Founders:** Helene Lassen Nørlem and Melissa Würtz Azari (Danish startup).
|
||||
* *Sources:* `vestbee.com`, `tracxn.com`, `tiimoapp.com`
|
||||
30
docs/brief/user-sentiment.md
Normal file
30
docs/brief/user-sentiment.md
Normal file
@@ -0,0 +1,30 @@
|
||||
<!-- Source: Kon Master Brief — §12 Live User Sentiment -->
|
||||
|
||||
## 12. Live User Sentiment — What Neurodivergent Users Actually Say
|
||||
|
||||
### The abandon-shame cycle
|
||||
The dominant emotional narrative across every neurodivergent community: download, dopamine hit, elaborate setup, miss a day, guilt, avoidance, abandonment, self-blame, repeat. The word "graveyard" appears in nearly every personal essay about ADHD and productivity tools. One user described deleting 47 apps and keeping three. Another wrote: "Twelve apps over three years. You find a new system. It's shiny and full of possibility. You spend three days setting it up instead of doing actual work. Then the dopamine wears off and the app becomes just another thing you're failing at."
|
||||
|
||||
### Top frustrations (ranked by frequency)
|
||||
1. The abandon-shame cycle itself
|
||||
2. Tools designed for neurotypical brains — "Every tool wanted me to decide where things go the moment I write them down. That's the one thing my brain is worst at."
|
||||
3. Overwhelming complexity (Notion cited as the primary offender)
|
||||
4. Subscription fatigue — crosses from annoyance into genuine financial harm for ADHD users
|
||||
5. Decision fatigue from too many apps
|
||||
6. Rigidity that punishes bad days
|
||||
7. The "out of sight, out of mind" problem — passive apps that wait to be opened
|
||||
|
||||
### Emotional intensity
|
||||
Language consistently involves shame ("another thing I'm failing at"), resignation ("I've lost count"), and liberation when users find the right framing ("I wasn't broken — I was working with tools designed for someone else's operating system"). Anger directed specifically at subscription billing: one Effecto review reads "Pretty ironic that it's an app supposed to be ADHD-friendly yet charges you for a service you don't use." A Wisey Trustpilot review states: "They are unscrupulous and taking advantage of people with ADHD who may be less organised."
|
||||
|
||||
### Demand signals for Kon's specific features
|
||||
- **Voice-first capture** receives consistent praise wherever it appears — one user who deleted 47 apps kept a voice memo tool as one of three survivors.
|
||||
- **Offline/local-first** positioning is an emerging differentiator; community responds positively to "your data stays with you."
|
||||
- **One-time purchase preference** is acute: a Goblin Tools App Store reviewer wrote "The fact it isn't subscription-based is incredibly helpful — I know it's mine and can use it whenever I need, without having to worry about whether it's 'worth it' each month or if I'm going to forget to cancel."
|
||||
|
||||
### Most-requested features (ranked by community demand)
|
||||
1. Instant zero-friction capture (voice input, brain dump)
|
||||
2. Visual timelines over text lists
|
||||
3. AI that decides and prioritises for you
|
||||
4. Forgiveness mechanics (no shame spirals from missed tasks)
|
||||
5. Radical simplicity
|
||||
7
docs/brief/what-kon-is.md
Normal file
7
docs/brief/what-kon-is.md
Normal file
@@ -0,0 +1,7 @@
|
||||
<!-- Source: Kon Master Brief — §1 What Kon Is -->
|
||||
|
||||
## 1. What Kon Is
|
||||
|
||||
A voice-first productivity app for people with executive dysfunction, neurodivergence, and task paralysis. Users brain dump via voice, Kon transcribes locally using AI, and automatically organises thoughts into actionable task lists.
|
||||
|
||||
**Core thesis:** Capture thoughts the instant they appear, with zero friction, zero latency, and total privacy. Everything runs on-device. No cloud dependency, no subscriptions for core features, no data leaves the user's machine.
|
||||
9
docs/brief/why-current-tools-fail.md
Normal file
9
docs/brief/why-current-tools-fail.md
Normal file
@@ -0,0 +1,9 @@
|
||||
<!-- Source: Kon Master Brief — §14 Why Current Tools Fail -->
|
||||
|
||||
## 14. Why Current Tools Fail
|
||||
|
||||
- **Traditional to-do lists** list *what* needs doing without addressing *how* to start, immediately triggering overwhelm and analysis paralysis.
|
||||
- **Rigid habit tracking and gamification** in existing ADHD apps feels guilt-inducing, impersonal, and overwhelming. They prioritise behaviour correction over emotional safety and flexibility.
|
||||
- **Cloud latency kills focus.** Cloud-based apps require server round-trips for every action. For users with executive dysfunction, loading spinners introduce micro-distractions that break focus and frequently lead to task abandonment.
|
||||
- **Cognitive overhead compounds fast.** Keystroke-Level Modelling shows that apps requiring manual syncing or custom rule-building add 4.7 seconds of cognitive overhead per interaction. After just 8 seconds of interruption, working memory traces decay beyond reliable reconstruction for ADHD neurotypes, increasing error rates by 63%.
|
||||
- **App fatigue is endemic.** The market is flooded with generic productivity apps, leading to severe app fatigue among ADHD users who have tried and abandoned dozens of systems.
|
||||
902
docs/superpowers/plans/2026-03-21-phase2-functional-mvp.md
Normal file
902
docs/superpowers/plans/2026-03-21-phase2-functional-mvp.md
Normal file
@@ -0,0 +1,902 @@
|
||||
# Kon Phase 2: Functional MVP — Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** Transform Kon from a branded shell into a functional voice → text → tasks pipeline with local LLM intelligence, delivering a shippable closed-beta desktop app.
|
||||
|
||||
**Architecture:** The existing codebase has a working audio capture → Whisper transcription → text display pipeline via browser AudioWorklet + Tauri IPC. Phase 2 migrates persistence from localStorage to SQLite (backend already has schema + CRUD), adds FTS5 search, wires llama-cpp-2 for local LLM task extraction and micro-stepping, connects the VisualTimer to tasks, and polishes first-run + settings + export.
|
||||
|
||||
**Tech Stack:** Svelte 5, SvelteKit 2, Tailwind CSS 4.2, Tauri 2, Rust, sqlx (SQLite), whisper-rs (via transcribe-rs), llama-cpp-2, lucide-svelte
|
||||
|
||||
**Branch:** `phase-2/functional-mvp`
|
||||
|
||||
**Commit format:** `feat(scope): description`
|
||||
|
||||
---
|
||||
|
||||
## Existing State Summary
|
||||
|
||||
### Already Working
|
||||
- Microphone capture via browser AudioWorklet → 16kHz mono PCM
|
||||
- Whisper + Parakeet transcription via transcribe-rs (streaming chunks)
|
||||
- Model download/load/cache management
|
||||
- Text post-processing (filler removal, British English, anti-hallucination)
|
||||
- Rule-based task extraction (frontend JS — `taskExtractor.js`)
|
||||
- Task CRUD in localStorage with BroadcastChannel multi-window sync
|
||||
- History in localStorage with playback
|
||||
- File transcription (drag-drop, multi-format)
|
||||
- Preferences store with SQLite persistence
|
||||
- Full brand token system, accessibility controls, sensory zones
|
||||
|
||||
### Needs Building
|
||||
1. **SQLite migration v2**: Add `priority`, `project`, `status`, `updated_at` to tasks; add FTS5 virtual table for transcripts
|
||||
2. **Tauri commands for task CRUD**: Replace localStorage task management with SQLite backend
|
||||
3. **Tauri commands for transcript persistence**: Save transcriptions to SQLite (currently only localStorage)
|
||||
4. **FTS5 full-text search**: Backend search across transcriptions
|
||||
5. **llama-cpp-2 integration**: Wire LLM inference engine for task extraction + micro-stepping
|
||||
6. **LLM model management**: Download/cache GGUF models (Phi-4-mini, Qwen 3 7B)
|
||||
7. **Micro-stepping UI**: Inline micro-steps below parent tasks with "Just Start" timer
|
||||
8. **VisualTimer wiring**: Connect timer to tasks, add notifications
|
||||
9. **Export to Obsidian**: Markdown with YAML frontmatter
|
||||
10. **Global hotkey update**: Change default from Ctrl+Shift+R to Ctrl+Shift+Space
|
||||
11. **Settings backend wiring**: Migrate remaining settings to SQLite preferences
|
||||
|
||||
---
|
||||
|
||||
## File Map
|
||||
|
||||
### New files to create
|
||||
|
||||
| File | Purpose |
|
||||
|---|---|
|
||||
| `crates/ai-formatting/src/llm_client.rs` | llama-cpp-2 inference wrapper (rewrite from placeholder) |
|
||||
| `crates/ai-formatting/src/task_extraction.rs` | LLM-based task extraction with fallback to rule-based |
|
||||
| `crates/ai-formatting/src/micro_stepping.rs` | Task decomposition into micro-steps |
|
||||
| `crates/llm/Cargo.toml` | New crate for LLM model management |
|
||||
| `crates/llm/src/lib.rs` | LLM engine wrapper |
|
||||
| `crates/llm/src/model_manager.rs` | GGUF model download/cache |
|
||||
| `crates/llm/src/inference.rs` | Token streaming inference |
|
||||
| `src-tauri/src/commands/tasks.rs` | Task CRUD Tauri commands |
|
||||
| `src-tauri/src/commands/history.rs` | Transcript persistence + FTS5 search commands |
|
||||
| `src-tauri/src/commands/llm.rs` | LLM model management + inference commands |
|
||||
| `src/lib/components/MicroSteps.svelte` | Micro-step display + "Just Start" button |
|
||||
| `src/lib/components/TaskTimer.svelte` | Timer wired to specific task |
|
||||
| `src/lib/stores/tasks.svelte.js` | Task store backed by SQLite via Tauri commands |
|
||||
| `src/lib/stores/history.svelte.js` | History store backed by SQLite |
|
||||
| `src/lib/utils/obsidianExport.js` | Obsidian vault export logic |
|
||||
|
||||
### Files to modify
|
||||
|
||||
| File | Changes |
|
||||
|---|---|
|
||||
| `crates/storage/src/migrations.rs` | Add migration v2 (FTS5, task columns, timer state) |
|
||||
| `crates/storage/src/database.rs` | Add task CRUD with new columns, FTS5 search, timer persistence |
|
||||
| `crates/ai-formatting/Cargo.toml` | Add serde, serde_json dependencies |
|
||||
| `src-tauri/Cargo.toml` | Add llama-cpp-2, tauri-plugin-notification |
|
||||
| `src-tauri/src/lib.rs` | Register new commands, add LLM state |
|
||||
| `src-tauri/src/commands/mod.rs` | Add new command modules |
|
||||
| `src/lib/pages/DictationPage.svelte` | Wire SQLite transcript persistence |
|
||||
| `src/lib/pages/TasksPage.svelte` | Wire SQLite task CRUD, add micro-steps |
|
||||
| `src/lib/pages/HistoryPage.svelte` | Wire FTS5 search, SQLite history |
|
||||
| `src/lib/pages/FilesPage.svelte` | Wire SQLite persistence for file transcriptions |
|
||||
| `src/lib/pages/FirstRunPage.svelte` | Add LLM model download step |
|
||||
| `src/lib/pages/SettingsPage.svelte` | Wire remaining settings to backend |
|
||||
| `src/lib/stores/page.svelte.js` | Remove localStorage task/history stores (migrate to new stores) |
|
||||
| `src/lib/components/WipTaskList.svelte` | Add micro-step expansion, timer button |
|
||||
| `src/lib/components/VisualTimer.svelte` | Add countdown logic, notifications |
|
||||
| `src/lib/components/ModelDownloader.svelte` | Support LLM model downloads |
|
||||
| `Cargo.toml` | Add crates/llm to workspace |
|
||||
|
||||
---
|
||||
|
||||
## Phase 2A — Core Pipeline
|
||||
|
||||
### Task 1: SQLite Migration v2 — Schema Extensions
|
||||
|
||||
**Files:**
|
||||
- Modify: `crates/storage/src/migrations.rs`
|
||||
- Modify: `crates/storage/src/database.rs`
|
||||
- Modify: `crates/storage/Cargo.toml`
|
||||
|
||||
**Why first:** Everything else depends on the database schema being right.
|
||||
|
||||
- [ ] **Step 1: Add migration v2 to migrations.rs**
|
||||
|
||||
Add after the existing migration v1 entry in the `MIGRATIONS` array:
|
||||
|
||||
```rust
|
||||
(2, "phase 2 — task fields, FTS5, timer state", r#"
|
||||
ALTER TABLE tasks ADD COLUMN priority TEXT NOT NULL DEFAULT 'medium';
|
||||
ALTER TABLE tasks ADD COLUMN project TEXT;
|
||||
ALTER TABLE tasks ADD COLUMN status TEXT NOT NULL DEFAULT 'pending';
|
||||
ALTER TABLE tasks ADD COLUMN updated_at TEXT NOT NULL DEFAULT (datetime('now'));
|
||||
ALTER TABLE tasks ADD COLUMN sort_order INTEGER NOT NULL DEFAULT 0;
|
||||
ALTER TABLE tasks ADD COLUMN notes TEXT NOT NULL DEFAULT '';
|
||||
|
||||
CREATE VIRTUAL TABLE IF NOT EXISTS transcripts_fts USING fts5(
|
||||
text,
|
||||
title,
|
||||
content='transcripts',
|
||||
content_rowid='rowid'
|
||||
);
|
||||
|
||||
CREATE TRIGGER IF NOT EXISTS transcripts_ai AFTER INSERT ON transcripts BEGIN
|
||||
INSERT INTO transcripts_fts(rowid, text, title)
|
||||
VALUES (new.rowid, new.text, new.title);
|
||||
END;
|
||||
|
||||
CREATE TRIGGER IF NOT EXISTS transcripts_ad AFTER DELETE ON transcripts BEGIN
|
||||
INSERT INTO transcripts_fts(transcripts_fts, rowid, text, title)
|
||||
VALUES ('delete', old.rowid, old.text, old.title);
|
||||
END;
|
||||
|
||||
CREATE TRIGGER IF NOT EXISTS transcripts_au AFTER UPDATE ON transcripts BEGIN
|
||||
INSERT INTO transcripts_fts(transcripts_fts, rowid, text, title)
|
||||
VALUES ('delete', old.rowid, old.text, old.title);
|
||||
INSERT INTO transcripts_fts(rowid, text, title)
|
||||
VALUES (new.rowid, new.text, new.title);
|
||||
END;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS timer_state (
|
||||
id TEXT PRIMARY KEY DEFAULT 'active',
|
||||
task_id TEXT NOT NULL,
|
||||
total_seconds INTEGER NOT NULL,
|
||||
remaining_seconds INTEGER NOT NULL,
|
||||
started_at TEXT NOT NULL DEFAULT (datetime('now')),
|
||||
paused INTEGER NOT NULL DEFAULT 0
|
||||
)
|
||||
"#),
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Add new database functions to database.rs**
|
||||
|
||||
Add task functions with new columns:
|
||||
|
||||
```rust
|
||||
// Task CRUD with extended fields
|
||||
pub async fn insert_task_v2(pool, id, text, priority, project, status, bucket, effort, source_transcript_id, sort_order) -> Result<()>
|
||||
pub async fn update_task_v2(pool, id, text, priority, project, status, bucket, effort, notes) -> Result<()>
|
||||
pub async fn reorder_tasks(pool, task_ids: &[String]) -> Result<()>
|
||||
pub async fn list_tasks_by_status(pool, status, limit) -> Result<Vec<TaskRow>>
|
||||
pub async fn search_transcripts(pool, query: &str, limit: i64) -> Result<Vec<TranscriptRow>>
|
||||
|
||||
// Timer state persistence
|
||||
pub async fn save_timer_state(pool, task_id, total_seconds, remaining_seconds, paused) -> Result<()>
|
||||
pub async fn get_timer_state(pool) -> Result<Option<TimerStateRow>>
|
||||
pub async fn clear_timer_state(pool) -> Result<()>
|
||||
```
|
||||
|
||||
- [ ] **Step 3: Add FTS5 search function**
|
||||
|
||||
```rust
|
||||
pub async fn search_transcripts(pool: &SqlitePool, query: &str, limit: i64) -> Result<Vec<TranscriptRow>> {
|
||||
let rows = sqlx::query(
|
||||
"SELECT t.id, t.text, t.source, t.title, t.audio_path, t.duration, t.engine, t.model_id, t.inference_ms, t.sample_rate, t.audio_channels, t.format_mode, t.remove_fillers, t.british_english, t.anti_hallucination, t.created_at
|
||||
FROM transcripts t
|
||||
JOIN transcripts_fts fts ON t.rowid = fts.rowid
|
||||
WHERE transcripts_fts MATCH ?1
|
||||
ORDER BY rank
|
||||
LIMIT ?2"
|
||||
)
|
||||
.bind(query)
|
||||
.bind(limit)
|
||||
.fetch_all(pool)
|
||||
.await
|
||||
.map_err(|e| KonError::StorageError(format!("FTS search failed: {e}")))?;
|
||||
Ok(rows.iter().map(transcript_row_from).collect())
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 4: Run tests**
|
||||
|
||||
```bash
|
||||
cd crates/storage && cargo test
|
||||
```
|
||||
|
||||
- [ ] **Step 5: Verify Tauri app compiles**
|
||||
|
||||
```bash
|
||||
cd src-tauri && cargo check
|
||||
```
|
||||
|
||||
- [ ] **Step 6: Commit**
|
||||
|
||||
```bash
|
||||
git add crates/storage/
|
||||
git commit -m "feat(storage): add migration v2 — task fields, FTS5 search, timer state"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 2: Tauri Commands for Transcript Persistence
|
||||
|
||||
**Files:**
|
||||
- Create: `src-tauri/src/commands/history.rs`
|
||||
- Modify: `src-tauri/src/commands/mod.rs`
|
||||
- Modify: `src-tauri/src/lib.rs`
|
||||
- Modify: `src-tauri/src/commands/transcription.rs`
|
||||
|
||||
- [ ] **Step 1: Create history.rs with transcript CRUD commands**
|
||||
|
||||
```rust
|
||||
// save_transcript — persist completed transcription to SQLite
|
||||
// get_transcript — fetch by ID
|
||||
// list_transcripts — paginated list, newest first
|
||||
// delete_transcript — remove by ID
|
||||
// search_transcripts — FTS5 search
|
||||
// save_segments — batch insert segments for a transcript
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Register commands in mod.rs and lib.rs**
|
||||
|
||||
- [ ] **Step 3: Modify transcription.rs to auto-persist**
|
||||
|
||||
After successful transcription, auto-save the transcript + segments to SQLite (in addition to emitting the event).
|
||||
|
||||
- [ ] **Step 4: Verify compilation**
|
||||
|
||||
```bash
|
||||
cd src-tauri && cargo check
|
||||
```
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add src-tauri/
|
||||
git commit -m "feat(history): add Tauri commands for transcript persistence and FTS5 search"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 3: Tauri Commands for Task CRUD
|
||||
|
||||
**Files:**
|
||||
- Create: `src-tauri/src/commands/tasks.rs`
|
||||
- Modify: `src-tauri/src/commands/mod.rs`
|
||||
- Modify: `src-tauri/src/lib.rs`
|
||||
|
||||
- [ ] **Step 1: Create tasks.rs**
|
||||
|
||||
Commands:
|
||||
```rust
|
||||
#[tauri::command] async fn create_task(state, text, priority, project, bucket, effort, source_transcript_id) -> Result<TaskResponse, String>
|
||||
#[tauri::command] async fn update_task(state, id, text, priority, project, status, bucket, effort, notes) -> Result<(), String>
|
||||
#[tauri::command] async fn delete_task(state, id) -> Result<(), String>
|
||||
#[tauri::command] async fn list_tasks(state, status, limit) -> Result<Vec<TaskResponse>, String>
|
||||
#[tauri::command] async fn reorder_tasks(state, task_ids: Vec<String>) -> Result<(), String>
|
||||
#[tauri::command] async fn complete_task(state, id) -> Result<(), String>
|
||||
```
|
||||
|
||||
TaskResponse struct:
|
||||
```rust
|
||||
#[derive(Serialize)]
|
||||
struct TaskResponse {
|
||||
id: String,
|
||||
text: String,
|
||||
priority: String,
|
||||
project: Option<String>,
|
||||
status: String,
|
||||
bucket: String,
|
||||
effort: Option<String>,
|
||||
done: bool,
|
||||
done_at: Option<String>,
|
||||
created_at: String,
|
||||
updated_at: String,
|
||||
sort_order: i64,
|
||||
notes: String,
|
||||
source_transcript_id: Option<String>,
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Register commands in mod.rs and lib.rs**
|
||||
|
||||
- [ ] **Step 3: Verify compilation**
|
||||
|
||||
```bash
|
||||
cd src-tauri && cargo check
|
||||
```
|
||||
|
||||
- [ ] **Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add src-tauri/
|
||||
git commit -m "feat(tasks): add Tauri commands for full task CRUD with priority, project, status"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 4: Frontend Task Store Migration (localStorage → SQLite)
|
||||
|
||||
**Files:**
|
||||
- Create: `src/lib/stores/tasks.svelte.js`
|
||||
- Modify: `src/lib/pages/TasksPage.svelte`
|
||||
- Modify: `src/lib/components/WipTaskList.svelte`
|
||||
- Modify: `src/lib/stores/page.svelte.js`
|
||||
|
||||
- [ ] **Step 1: Create tasks.svelte.js**
|
||||
|
||||
New store that wraps Tauri commands instead of localStorage:
|
||||
|
||||
```javascript
|
||||
import { invoke } from '@tauri-apps/api/core';
|
||||
|
||||
let tasks = $state([]);
|
||||
let loading = $state(false);
|
||||
|
||||
export async function loadTasks() { ... }
|
||||
export async function createTask(text, opts = {}) { ... }
|
||||
export async function updateTask(id, updates) { ... }
|
||||
export async function deleteTask(id) { ... }
|
||||
export async function completeTask(id) { ... }
|
||||
export async function reorderTasks(ids) { ... }
|
||||
export function getTasks() { return tasks; }
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Update TasksPage.svelte to use new store**
|
||||
|
||||
Replace all `tasks` imports from page.svelte.js with the new SQLite-backed store.
|
||||
|
||||
- [ ] **Step 3: Update WipTaskList.svelte**
|
||||
|
||||
Wire to new task store.
|
||||
|
||||
- [ ] **Step 4: Keep page.svelte.js tasks for backwards compat during migration**
|
||||
|
||||
Add a bridge that loads from SQLite on mount, falls back to localStorage.
|
||||
|
||||
- [ ] **Step 5: Verify build**
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
- [ ] **Step 6: Commit**
|
||||
|
||||
```bash
|
||||
git add src/
|
||||
git commit -m "feat(tasks): migrate task store from localStorage to SQLite backend"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 5: Frontend History Store Migration
|
||||
|
||||
**Files:**
|
||||
- Create: `src/lib/stores/history.svelte.js`
|
||||
- Modify: `src/lib/pages/HistoryPage.svelte`
|
||||
- Modify: `src/lib/pages/DictationPage.svelte`
|
||||
|
||||
- [ ] **Step 1: Create history.svelte.js**
|
||||
|
||||
```javascript
|
||||
import { invoke } from '@tauri-apps/api/core';
|
||||
|
||||
let transcripts = $state([]);
|
||||
|
||||
export async function loadHistory(limit = 100) { ... }
|
||||
export async function saveTranscript(transcript) { ... }
|
||||
export async function deleteTranscript(id) { ... }
|
||||
export async function searchTranscripts(query) { ... }
|
||||
export function getHistory() { return transcripts; }
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Update HistoryPage.svelte**
|
||||
|
||||
Replace localStorage-based history with SQLite search. Wire FTS5 search to the search input.
|
||||
|
||||
- [ ] **Step 3: Update DictationPage.svelte**
|
||||
|
||||
After transcription completes, call `saveTranscript()` from the new store (in addition to existing behaviour).
|
||||
|
||||
- [ ] **Step 4: Verify build**
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add src/
|
||||
git commit -m "feat(history): migrate history to SQLite with FTS5 search"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 2B — Intelligence Layer
|
||||
|
||||
### Task 6: LLM Crate + llama-cpp-2 Integration
|
||||
|
||||
**Files:**
|
||||
- Create: `crates/llm/Cargo.toml`
|
||||
- Create: `crates/llm/src/lib.rs`
|
||||
- Create: `crates/llm/src/inference.rs`
|
||||
- Create: `crates/llm/src/model_manager.rs`
|
||||
- Modify: `Cargo.toml` (workspace members)
|
||||
- Modify: `src-tauri/Cargo.toml` (add dependency)
|
||||
|
||||
**Note:** llama-cpp-2 requires CMake and a C++ compiler. On Windows this means MSVC build tools.
|
||||
|
||||
- [ ] **Step 1: Create crates/llm/Cargo.toml**
|
||||
|
||||
```toml
|
||||
[package]
|
||||
name = "kon-llm"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
description = "Local LLM inference via llama.cpp for Kon"
|
||||
|
||||
[dependencies]
|
||||
kon-core = { path = "../core" }
|
||||
llama-cpp-2 = { version = "0.1", features = ["vulkan"] }
|
||||
tokio = { version = "1", features = ["rt", "sync"] }
|
||||
reqwest = { version = "0.12", features = ["stream"] }
|
||||
futures-util = "0.3"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
log = "0.4"
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Create lib.rs with LlmEngine struct**
|
||||
|
||||
```rust
|
||||
pub struct LlmEngine {
|
||||
model: Mutex<Option<LlamaModel>>,
|
||||
loaded_model_path: Mutex<Option<PathBuf>>,
|
||||
}
|
||||
|
||||
impl LlmEngine {
|
||||
pub fn new() -> Self { ... }
|
||||
pub fn load(&self, model_path: &Path) -> Result<()> { ... }
|
||||
pub fn is_loaded(&self) -> bool { ... }
|
||||
pub fn generate(&self, prompt: &str, max_tokens: u32) -> Result<String> { ... }
|
||||
pub fn generate_streaming(&self, prompt: &str, max_tokens: u32, callback: impl Fn(&str)) -> Result<String> { ... }
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 3: Create model_manager.rs for GGUF downloads**
|
||||
|
||||
Reuse the pattern from crates/transcription/model_manager.rs — streaming download with progress callback, atomic rename.
|
||||
|
||||
Model catalog:
|
||||
```rust
|
||||
const LLM_MODELS: &[LlmModelEntry] = &[
|
||||
LlmModelEntry {
|
||||
id: "phi-4-mini-q4",
|
||||
display_name: "Phi-4 Mini (8GB RAM)",
|
||||
url: "https://huggingface.co/...",
|
||||
disk_size: Megabytes(2300),
|
||||
ram_required: Megabytes(4000),
|
||||
filename: "phi-4-mini-q4_k_m.gguf",
|
||||
},
|
||||
LlmModelEntry {
|
||||
id: "qwen3-7b-q4",
|
||||
display_name: "Qwen 3 7B (16GB RAM)",
|
||||
url: "https://huggingface.co/...",
|
||||
disk_size: Megabytes(4500),
|
||||
ram_required: Megabytes(8000),
|
||||
filename: "qwen3-7b-q4_k_m.gguf",
|
||||
},
|
||||
];
|
||||
```
|
||||
|
||||
- [ ] **Step 4: Create inference.rs with async wrapper**
|
||||
|
||||
```rust
|
||||
pub async fn run_llm_inference(
|
||||
engine: Arc<LlmEngine>,
|
||||
prompt: String,
|
||||
max_tokens: u32,
|
||||
) -> Result<String> {
|
||||
tokio::task::spawn_blocking(move || {
|
||||
engine.generate(&prompt, max_tokens)
|
||||
}).await.map_err(|e| KonError::Other(e.to_string()))?
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 5: Add workspace member and verify compilation**
|
||||
|
||||
```bash
|
||||
cargo check -p kon-llm
|
||||
```
|
||||
|
||||
- [ ] **Step 6: Commit**
|
||||
|
||||
```bash
|
||||
git add crates/llm/ Cargo.toml
|
||||
git commit -m "feat(llm): add kon-llm crate with llama-cpp-2 inference engine"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 7: LLM Tauri Commands + Model Download UI
|
||||
|
||||
**Files:**
|
||||
- Create: `src-tauri/src/commands/llm.rs`
|
||||
- Modify: `src-tauri/src/commands/mod.rs`
|
||||
- Modify: `src-tauri/src/lib.rs`
|
||||
- Modify: `src/lib/pages/SettingsPage.svelte`
|
||||
- Modify: `src/lib/components/ModelDownloader.svelte`
|
||||
- Modify: `src/lib/pages/FirstRunPage.svelte`
|
||||
|
||||
- [ ] **Step 1: Create llm.rs with commands**
|
||||
|
||||
```rust
|
||||
#[tauri::command] async fn list_llm_models() -> Vec<LlmModelInfo>
|
||||
#[tauri::command] async fn download_llm_model(app, id) -> Result<(), String> // emits "llm-download-progress"
|
||||
#[tauri::command] async fn load_llm_model(state, id) -> Result<(), String>
|
||||
#[tauri::command] async fn check_llm_engine(state) -> bool
|
||||
#[tauri::command] async fn llm_generate(state, prompt, max_tokens) -> Result<String, String>
|
||||
#[tauri::command] async fn extract_tasks_llm(state, transcript_text) -> Result<Vec<TaskSuggestion>, String>
|
||||
#[tauri::command] async fn decompose_task(state, task_text) -> Result<Vec<MicroStep>, String>
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Add LlmEngine to AppState**
|
||||
|
||||
```rust
|
||||
pub struct AppState {
|
||||
pub whisper_engine: Arc<LocalEngine>,
|
||||
pub parakeet_engine: Arc<LocalEngine>,
|
||||
pub llm_engine: Arc<LlmEngine>,
|
||||
pub db: SqlitePool,
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 3: Register commands in lib.rs**
|
||||
|
||||
- [ ] **Step 4: Update ModelDownloader.svelte to support LLM models**
|
||||
|
||||
Add a `modelType` prop ("whisper" | "llm") and listen to appropriate download events.
|
||||
|
||||
- [ ] **Step 5: Add LLM model section to FirstRunPage.svelte**
|
||||
|
||||
After STT model download, offer optional LLM model download: "Download AI assistant for task extraction? (optional, {size})"
|
||||
|
||||
- [ ] **Step 6: Add LLM section to SettingsPage.svelte**
|
||||
|
||||
In the "AI Assistant" accordion: model selection, download button, status indicator.
|
||||
|
||||
- [ ] **Step 7: Verify build**
|
||||
|
||||
```bash
|
||||
cd src-tauri && cargo check && cd .. && npm run build
|
||||
```
|
||||
|
||||
- [ ] **Step 8: Commit**
|
||||
|
||||
```bash
|
||||
git add src-tauri/ src/ crates/llm/
|
||||
git commit -m "feat(llm): add LLM Tauri commands, model download UI, FirstRun integration"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 8: Task Extraction — LLM + Rule-Based Fallback
|
||||
|
||||
**Files:**
|
||||
- Rewrite: `crates/ai-formatting/src/llm_client.rs` (replace placeholder)
|
||||
- Create: `crates/ai-formatting/src/task_extraction.rs`
|
||||
- Modify: `crates/ai-formatting/Cargo.toml`
|
||||
- Modify: `crates/ai-formatting/src/lib.rs`
|
||||
- Modify: `src-tauri/src/commands/llm.rs`
|
||||
- Modify: `src/lib/pages/DictationPage.svelte`
|
||||
|
||||
- [ ] **Step 1: Create task_extraction.rs**
|
||||
|
||||
```rust
|
||||
pub struct ExtractedTask {
|
||||
pub title: String,
|
||||
pub priority: String,
|
||||
pub project: Option<String>,
|
||||
}
|
||||
|
||||
const EXTRACTION_SYSTEM_PROMPT: &str = r#"Extract actionable tasks from the following voice transcription. Each task must start with a concrete verb. Return as JSON array of {"title": "...", "priority": "high|medium|low", "project": "..."}.
|
||||
Only extract genuine tasks — not observations or comments. If no tasks found, return empty array []."#;
|
||||
|
||||
pub fn extract_tasks_with_llm(engine: &LlmEngine, transcript: &str) -> Result<Vec<ExtractedTask>> { ... }
|
||||
pub fn extract_tasks_rule_based(transcript: &str) -> Vec<ExtractedTask> { ... }
|
||||
pub fn extract_tasks(engine: Option<&LlmEngine>, transcript: &str) -> Vec<ExtractedTask> { ... }
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Wire into extract_tasks_llm command**
|
||||
|
||||
The Tauri command tries LLM first, falls back to rule-based.
|
||||
|
||||
- [ ] **Step 3: Update DictationPage.svelte**
|
||||
|
||||
Replace the JS `extractTasks()` call with `invoke('extract_tasks_llm', { transcriptText })`.
|
||||
|
||||
- [ ] **Step 4: Verify build**
|
||||
|
||||
```bash
|
||||
cd src-tauri && cargo check && cd .. && npm run build
|
||||
```
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add crates/ai-formatting/ src-tauri/ src/
|
||||
git commit -m "feat(extraction): add LLM task extraction with rule-based fallback"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 9: Micro-Stepping
|
||||
|
||||
**Files:**
|
||||
- Create: `crates/ai-formatting/src/micro_stepping.rs`
|
||||
- Create: `src/lib/components/MicroSteps.svelte`
|
||||
- Modify: `src/lib/components/WipTaskList.svelte`
|
||||
- Modify: `src-tauri/src/commands/llm.rs`
|
||||
|
||||
- [ ] **Step 1: Create micro_stepping.rs**
|
||||
|
||||
```rust
|
||||
const MICRO_STEP_PROMPT: &str = r#"Break this task into 3-7 micro-steps. Each step MUST start with a specific physical verb (e.g. 'Open', 'Type', 'Click', 'Pick up'). Each step must be completable in under 5 minutes. Never use abstract verbs like 'organise', 'plan', 'consider'. Return as JSON array of strings."#;
|
||||
|
||||
pub fn decompose_task(engine: &LlmEngine, task_text: &str) -> Result<Vec<String>> { ... }
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Wire into decompose_task Tauri command**
|
||||
|
||||
- [ ] **Step 3: Create MicroSteps.svelte**
|
||||
|
||||
```svelte
|
||||
<script>
|
||||
import { invoke } from '@tauri-apps/api/core';
|
||||
import { Play } from 'lucide-svelte';
|
||||
let { taskId, taskText } = $props();
|
||||
let steps = $state([]);
|
||||
let loading = $state(false);
|
||||
// ...
|
||||
</script>
|
||||
```
|
||||
|
||||
Shows expandable micro-steps below a task. Each step has a "Just Start" button that launches a 2min or 5min timer.
|
||||
|
||||
- [ ] **Step 4: Wire MicroSteps into WipTaskList**
|
||||
|
||||
Add expand/collapse per task that loads micro-steps on demand.
|
||||
|
||||
- [ ] **Step 5: Verify build**
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
- [ ] **Step 6: Commit**
|
||||
|
||||
```bash
|
||||
git add crates/ai-formatting/ src-tauri/ src/
|
||||
git commit -m "feat(microsteps): add LLM task decomposition with Just Start timer"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 10: Visual Timer Wiring + Notifications
|
||||
|
||||
**Files:**
|
||||
- Modify: `src/lib/components/VisualTimer.svelte`
|
||||
- Create: `src/lib/components/TaskTimer.svelte`
|
||||
- Modify: `src-tauri/Cargo.toml` (add tauri-plugin-notification)
|
||||
- Modify: `src-tauri/src/lib.rs` (register notification plugin)
|
||||
- Modify: `src-tauri/tauri.conf.json` (add notification permission)
|
||||
|
||||
- [ ] **Step 1: Add tauri-plugin-notification**
|
||||
|
||||
```bash
|
||||
cd src-tauri && cargo add tauri-plugin-notification@2
|
||||
```
|
||||
|
||||
Update lib.rs: `.plugin(tauri_plugin_notification::init())`
|
||||
|
||||
Update tauri.conf.json capabilities.
|
||||
|
||||
- [ ] **Step 2: Create TaskTimer.svelte**
|
||||
|
||||
Wraps VisualTimer with countdown logic, persists timer state to SQLite, shows OS notification on complete:
|
||||
|
||||
```svelte
|
||||
<script>
|
||||
import VisualTimer from './VisualTimer.svelte';
|
||||
import { invoke } from '@tauri-apps/api/core';
|
||||
import { sendNotification } from '@tauri-apps/plugin-notification';
|
||||
// Timer countdown, pause/resume, persist state
|
||||
</script>
|
||||
```
|
||||
|
||||
- [ ] **Step 3: Wire timer persistence**
|
||||
|
||||
On start: `invoke('save_timer_state', { taskId, totalSeconds, remainingSeconds })`
|
||||
On tick: Update remaining (debounced, every 5s)
|
||||
On complete: `invoke('clear_timer_state')` + notification
|
||||
On app restart: `invoke('get_timer_state')` → resume timer
|
||||
|
||||
- [ ] **Step 4: Respect reduce-motion preference**
|
||||
|
||||
When reduce motion is on, VisualTimer shows static fill state instead of animated ring.
|
||||
|
||||
- [ ] **Step 5: Verify build**
|
||||
|
||||
```bash
|
||||
cd src-tauri && cargo check && cd .. && npm run build
|
||||
```
|
||||
|
||||
- [ ] **Step 6: Commit**
|
||||
|
||||
```bash
|
||||
git add src-tauri/ src/
|
||||
git commit -m "feat(timer): wire VisualTimer to tasks with notifications and persistence"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 2C — Data & Polish
|
||||
|
||||
### Task 11: Export and Open Data
|
||||
|
||||
**Files:**
|
||||
- Create: `src/lib/utils/obsidianExport.js`
|
||||
- Modify: `src/lib/pages/DictationPage.svelte`
|
||||
- Modify: `src/lib/pages/HistoryPage.svelte`
|
||||
- Modify: `src/lib/pages/TasksPage.svelte`
|
||||
|
||||
- [ ] **Step 1: Create obsidianExport.js**
|
||||
|
||||
```javascript
|
||||
export function exportTranscriptToObsidian(transcript, segments, tasks) {
|
||||
const frontmatter = `---
|
||||
title: "${transcript.title || 'Voice Note'}"
|
||||
date: ${transcript.created_at}
|
||||
source: ${transcript.source}
|
||||
duration: ${transcript.duration}s
|
||||
engine: ${transcript.engine}
|
||||
tags: [kon, transcription]
|
||||
---\n\n`;
|
||||
// ... body with text + optional task list
|
||||
}
|
||||
|
||||
export function exportTasksToJSON(tasks) { ... }
|
||||
export function exportTasksToCSV(tasks) { ... }
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Add "Export to Obsidian" button to HistoryPage**
|
||||
|
||||
Uses `@tauri-apps/plugin-dialog` to pick output directory, then writes markdown files.
|
||||
|
||||
- [ ] **Step 3: Add task export to TasksPage**
|
||||
|
||||
JSON and CSV export buttons.
|
||||
|
||||
- [ ] **Step 4: Verify build**
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add src/
|
||||
git commit -m "feat(export): add Obsidian export, task JSON/CSV export"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 12: First Run Polish
|
||||
|
||||
**Files:**
|
||||
- Modify: `src/lib/pages/FirstRunPage.svelte`
|
||||
- Modify: `src/lib/stores/page.svelte.js`
|
||||
|
||||
- [ ] **Step 1: Add microphone permission request step**
|
||||
|
||||
Before model download, request mic permission via `navigator.mediaDevices.getUserMedia()`.
|
||||
|
||||
- [ ] **Step 2: Add test recording step**
|
||||
|
||||
After model loads, show a quick 5-second test recording: "Say something..." → display result → "You're ready!"
|
||||
|
||||
- [ ] **Step 3: Wire optional LLM download**
|
||||
|
||||
After STT model: "Want smarter task extraction? Download AI assistant ({size}, optional)"
|
||||
|
||||
- [ ] **Step 4: Time the flow — target under 90 seconds**
|
||||
|
||||
Add performance instrumentation to log total onboarding time.
|
||||
|
||||
- [ ] **Step 5: Verify build**
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
- [ ] **Step 6: Commit**
|
||||
|
||||
```bash
|
||||
git add src/
|
||||
git commit -m "feat(firstrun): add mic permission, test recording, LLM download step"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 13: Settings Wiring + Global Hotkey Update
|
||||
|
||||
**Files:**
|
||||
- Modify: `src/lib/pages/SettingsPage.svelte`
|
||||
- Modify: `src/lib/stores/page.svelte.js`
|
||||
- Modify: `src/routes/+layout.svelte`
|
||||
|
||||
- [ ] **Step 1: Change default hotkey to Ctrl+Shift+Space**
|
||||
|
||||
In `page.svelte.js`, change `globalHotkey: "Ctrl+Shift+R"` to `globalHotkey: "Ctrl+Shift+Space"`.
|
||||
|
||||
- [ ] **Step 2: Add microphone selection setting**
|
||||
|
||||
Use `navigator.mediaDevices.enumerateDevices()` to list audio input devices. Display as dropdown in Settings. Pass selected device ID to AudioContext.
|
||||
|
||||
- [ ] **Step 3: Wire export directory setting**
|
||||
|
||||
Use `@tauri-apps/plugin-dialog` for directory picker.
|
||||
|
||||
- [ ] **Step 4: Migrate remaining localStorage settings to preferences store**
|
||||
|
||||
The `settings` object in page.svelte.js currently uses localStorage. Add a `$effect` that syncs key settings to the SQLite-backed preferences store.
|
||||
|
||||
- [ ] **Step 5: Verify build**
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
- [ ] **Step 6: Commit**
|
||||
|
||||
```bash
|
||||
git add src/
|
||||
git commit -m "feat(settings): wire mic selection, export directory, update default hotkey"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 14: Final Validation
|
||||
|
||||
- [ ] **Step 1: Full build check**
|
||||
|
||||
```bash
|
||||
npm run build && cd src-tauri && cargo check
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Keyboard navigation**
|
||||
|
||||
Tab through every page. Verify focus rings visible.
|
||||
|
||||
- [ ] **Step 3: Context restoration test**
|
||||
|
||||
Set non-default preferences → close app → relaunch. Verify state preserved.
|
||||
|
||||
- [ ] **Step 4: Reduce motion test**
|
||||
|
||||
Toggle reduce motion on → verify all animations stopped, timer shows static state.
|
||||
|
||||
- [ ] **Step 5: Commit any fixes**
|
||||
|
||||
```bash
|
||||
git add -A
|
||||
git commit -m "fix(validation): final validation pass corrections"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
| Phase | Tasks | Key Deliverable |
|
||||
|---|---|---|
|
||||
| 2A: Core Pipeline (1–5) | Schema migration, transcript persistence, task CRUD, FTS5 search, frontend store migration | Working voice → text → SQLite pipeline |
|
||||
| 2B: Intelligence (6–10) | LLM crate, model management, task extraction, micro-stepping, visual timer | AI-powered task decomposition with timer |
|
||||
| 2C: Polish (11–14) | Export, first run, settings, validation | Ship-ready for closed beta |
|
||||
|
||||
**Total:** 14 tasks. Schema first. Backend commands before frontend. LLM after core pipeline works. Polish last.
|
||||
|
||||
**Critical path:** Task 1 (schema) → Task 2-3 (commands) → Task 4-5 (frontend migration) → Task 6-7 (LLM) → everything else.
|
||||
|
||||
**Risk:** llama-cpp-2 compilation on Windows requires MSVC + CMake. If it fails, Tasks 6-9 scope down to rule-based extraction only (already works).
|
||||
Reference in New Issue
Block a user