AI-Powered Research Note-Taking App
Noschen is a privacy-first, local-first research note-taking application that provides live AI feedback to support academic researchers, consultants, and students. The AI analyzes your notes in real-time and suggests improvements, identifies gaps, and enhances research quality.
- Features
- Screenshots
- Installation
- Configuration
- Usage Guide
- AI Feedback System
- Keyboard Shortcuts
- Architecture
- Data Storage
- Troubleshooting
- Development
- License
- Local-First Privacy: All notes are stored locally on your machine. No cloud sync, no data leaving your device.
- AI-Powered Feedback: Real-time intelligent suggestions powered by local LLM (Ollama) or Mistral API.
- Hierarchical Note Structure: Organize research with H1 headings (main topic) and H2 headings (sub-questions/aspects).
- Dark Mode Interface: Clean, distraction-free dark theme designed for extended research sessions.
- Auto-Save: Never lose your work—notes save automatically after 1 second of inactivity.
- Full-Text Search: Instantly search across all your notes.
| Type | Description |
|---|---|
| MECE Validation | Checks if your structure is Mutually Exclusive and Collectively Exhaustive. Suggests missing categories or better groupings. |
| Gap Identification | Flags aspects, considerations, or perspectives not yet addressed in your research. |
| Source Suggestions | Recommends types of literature or domains to explore (e.g., "Consider literature on institutional economics"). |
| Structural Improvements | Proposes reorganization for clearer argumentation or logical flow. |
- Accept/Reject workflow for AI suggestions
- Review previously rejected suggestions
- Contextual feedback aware of your document hierarchy
- Section exclusion from AI feedback
- Keyboard-driven workflow with Apple-appropriate shortcuts
┌─────────────────────────────────────────────────────────────────────────┐
│ Noschen │ AI Connected │
├───────────────────┬─────────────────────────────────────────────────────┤
│ │ │
│ 🔍 Search notes │ # Impact of Remote Work on Productivity │
│ │ ───────────────────────────────────────────────── │
│ ┌─────────────┐ │ │
│ │ Research │ │ ## Communication Patterns │
│ │ Paper Draft │ │ │
│ │ Jan 19 │ │ Remote work has fundamentally changed how teams │
│ └─────────────┘ │ communicate. Asynchronous communication has │
│ │ become the norm, replacing spontaneous office │
│ ┌─────────────┐ │ conversations... │
│ │ Literature │ │ │
│ │ Review │ │ ┌──────────────────────────────────────────────┐ │
│ │ Jan 18 │ │ │ AI Suggestions (2) │ │
│ └─────────────┘ │ │ │ │
│ │ │ [GAP] Consider addressing time zone │ │
│ + New Note │ │ challenges in distributed teams [✓] [✗] │ │
│ │ │ │ │
│ ⚙ Settings │ │ [MECE] Your analysis covers sync vs async │ │
│ │ │ but misses hybrid approaches [✓] [✗] │ │
│ │ └──────────────────────────────────────────────┘ │
└───────────────────┴─────────────────────────────────────────────────────┘
- Node.js 18 or higher
- npm 9 or higher
- Ollama (recommended) or Mistral API key
# Clone the repository
git clone https://github.com/maxpolwin/Noschen.git
cd Noschen
# Switch to the development branch
git checkout claude/noschen-research-notes-app-SCU8k
# Install dependencies
npm install
# Start in development mode
npm run dev# Build the application
npm run build
# Package as a desktop app (macOS, Windows, Linux)
npm run packageFor the best privacy-first experience, install Ollama to run AI models locally:
- Download Ollama from ollama.ai
- Install and launch Ollama
- Pull a recommended model:
# Recommended for M2 MacBook (good balance of speed and quality)
ollama pull llama3.2
# Alternative lightweight models
ollama pull phi3
ollama pull mistralLaunch Noschen and click the Settings icon in the sidebar to configure your AI provider.
Best for privacy and offline use. Runs entirely on your machine.
| Setting | Default | Description |
|---|---|---|
| Ollama URL | http://localhost:11434 |
Ollama server address |
| Model | llama3.2 |
The model to use for analysis |
Recommended models by hardware:
| Hardware | Recommended Model | Notes |
|---|---|---|
| M2/M3 MacBook | llama3.2, phi3 |
Fast, good quality |
| M1 MacBook | phi3, mistral |
Lighter weight |
| 16GB+ RAM | llama3.2:8b |
Higher quality |
| 8GB RAM | phi3 |
Optimized for lower memory |
Best for users without powerful local hardware or who prefer cloud processing.
- Create an account at console.mistral.ai
- Generate an API key
- Enter the key in Noschen settings
| Setting | Description |
|---|---|
| API Key | Your Mistral API key (starts with sk-) |
- Click + New Note in the sidebar
- Start with an H1 heading for your main research topic:
- Type
#followed by your topic - Example:
# The Impact of AI on Creative Industries
- Type
- Add H2 headings for sub-questions or aspects:
- Type
##followed by the sub-topic - Example:
## Economic Disruption
- Type
- Write your content under each heading
- AI feedback will appear automatically after 2 seconds of inactivity
# Main Research Question (H1)
Your overarching research topic or thesis question.
## Sub-Question 1 (H2)
First major aspect to investigate.
### Supporting Point (H3)
Detailed evidence or argument.
## Sub-Question 2 (H2)
Second major aspect to investigate.
## Sub-Question 3 (H2)
Third major aspect to investigate.Why this structure matters:
- The AI uses H1 to understand your overall research intent
- H2 headings define the scope of analysis
- Feedback relates primarily to the current H2 section while considering the broader context
When AI feedback appears:
- Review the suggestion in the feedback panel below your text
- Accept (✓) to add a TODO reminder in your text
- Reject (✗) to hide the suggestion
- Reconsider previously rejected suggestions by clicking "Show rejected"
If you want to exclude certain sections from AI analysis (e.g., personal notes, drafts):
- Add
[no-ai]tag after your H2 heading - Example:
## Personal Notes [no-ai]
- Trigger: Feedback generates after 2 seconds of typing inactivity
- Context: AI considers:
- The current H2 section you're working in
- Relationship to other H2 sections
- The overarching H1 topic
- Display: Colored inline badges appear in the feedback panel
Checks if your research structure is:
- Mutually Exclusive: No overlapping categories
- Collectively Exhaustive: No missing categories
Example feedback:
"Your analysis of market segments overlaps between 'Enterprise' and 'Large Business'. Consider consolidating or clarifying the distinction."
Identifies missing perspectives, considerations, or aspects.
Example feedback:
"Consider addressing the ethical implications of this technology, which is absent from your current analysis."
Recommends types of literature or domains to explore.
Example feedback:
"Consider literature on behavioral economics, particularly work by Kahneman and Thaler, for the decision-making section."
Suggests reorganization for clarity and logical flow.
Example feedback:
"Consider moving the 'Historical Context' section before 'Current State' for better chronological flow."
For best AI feedback:
- Write clear, descriptive H1 and H2 headings
- Include enough content (50+ characters) before expecting feedback
- Be specific in your writing—vague text produces vague feedback
- Use consistent terminology throughout your document
| Shortcut | Action |
|---|---|
Cmd + S |
Force save current note |
Cmd + N |
Create new note |
Cmd + F |
Focus search |
| Shortcut | Action |
|---|---|
Cmd + Enter |
Accept first active suggestion |
Cmd + Delete |
Reject first active suggestion |
| Shortcut | Action |
|---|---|
Cmd + B |
Bold text |
Cmd + I |
Italic text |
Cmd + Shift + 1 |
Heading 1 |
Cmd + Shift + 2 |
Heading 2 |
Cmd + Shift + 3 |
Heading 3 |
Cmd + Z |
Undo |
Cmd + Shift + Z |
Redo |
noschen/
├── src/
│ ├── main/ # Electron main process
│ │ ├── main.ts # App entry, window management, IPC handlers
│ │ └── preload.ts # Context bridge for renderer
│ │
│ ├── renderer/ # React frontend
│ │ ├── components/
│ │ │ ├── Editor.tsx # TipTap editor with feedback integration
│ │ │ ├── Sidebar.tsx # Note list and search
│ │ │ ├── FeedbackPanel.tsx # AI suggestions display
│ │ │ ├── SettingsModal.tsx # AI configuration
│ │ │ └── EmptyState.tsx # Welcome screen
│ │ │
│ │ ├── styles/
│ │ │ └── global.css # Dark theme and all styles
│ │ │
│ │ ├── App.tsx # Main app component
│ │ ├── main.tsx # React entry point
│ │ └── index.html # HTML template
│ │
│ └── shared/
│ └── types.ts # Shared TypeScript interfaces
│
├── package.json
├── tsconfig.json
├── vite.config.ts # Vite bundler configuration
└── README.md
| Layer | Technology |
|---|---|
| Framework | Electron 28 |
| Frontend | React 18 + TypeScript |
| Editor | TipTap (ProseMirror) |
| Bundler | Vite 5 |
| Styling | CSS Custom Properties |
| Icons | Lucide React |
| Local AI | Ollama API |
| Cloud AI | Mistral API |
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Editor │────▶│ Debounce │────▶│ AI Engine │
│ (TipTap) │ │ (2 sec) │ │ (Ollama/ │
└─────────────┘ └─────────────┘ │ Mistral) │
└──────┬──────┘
│
┌─────────────┐ ┌─────────────┐ │
│ Feedback │◀────│ Parse & │◀───────────┘
│ Panel │ │ Display │
└─────────────┘ └─────────────┘
Notes are stored as JSON files in your system's application data folder:
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/noschen/notes/ |
| Windows | %APPDATA%/noschen/notes/ |
| Linux | ~/.config/noschen/notes/ |
Each note is stored as a separate JSON file:
{
"id": "note_1705678900000",
"title": "Research on AI Ethics",
"content": "<h1>Research on AI Ethics</h1><p>Content here...</p>",
"createdAt": "2024-01-19T12:00:00.000Z",
"updatedAt": "2024-01-19T14:30:00.000Z",
"excludedSections": ["Personal Notes"]
}AI settings are stored in:
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/noschen/settings.json |
| Windows | %APPDATA%/noschen/settings.json |
| Linux | ~/.config/noschen/settings.json |
To backup your notes, simply copy the entire noschen folder from your application data directory.
Cause: Cannot connect to Ollama or Mistral API.
Solutions:
- For Ollama:
- Ensure Ollama is running:
ollama serve - Check the URL in settings (default:
http://localhost:11434) - Verify a model is installed:
ollama list
- Ensure Ollama is running:
- For Mistral:
- Verify your API key is correct
- Check your internet connection
- Ensure you have API credits
Possible causes:
- Content is too short (minimum ~50 characters needed)
- AI provider not configured
- Still within the 2-second debounce period
Solutions:
- Write more content
- Check AI connection status
- Wait for the debounce timer
Solution:
# Clear node_modules and reinstall
rm -rf node_modules
npm install
# If Electron download fails, use a mirror
ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/" npm installSolution: Use a lighter Ollama model:
ollama pull phi3Then update the model in Noschen settings.
- GitHub Issues: github.com/maxpolwin/Noschen/issues
- Discussions: github.com/maxpolwin/Noschen/discussions
# Start with hot reload
npm run dev# Build renderer (Vite)
npm run build:renderer
# Build main process (TypeScript)
npm run build:main
# Build everything
npm run buildnpx tsc --noEmit| Script | Description |
|---|---|
npm run dev |
Start development server with hot reload |
npm run build |
Build for production |
npm run package |
Package as desktop app |
npm run lint |
Run ESLint |
npm run typecheck |
Run TypeScript type checking |
- Export to Markdown and PDF
- Web search integration for concrete source recommendations
- AI learning from rejected suggestions
- Cross-referencing across multiple notes
- Counter-arguments and alternative perspectives
- Terminology clarification prompts
- Collaborative editing (optional cloud sync)
MIT License
Copyright (c) 2024
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Made with care for researchers, by researchers.