Transform enterprise PDFs into searchable, structured knowledge using AI-powered analysis.
IntelliRead is a local-first, browser-only application that converts PDFs into searchable structured knowledge. All processing happens client-side using IndexedDB for storage - no backend servers, no external databases.
Organizations manage thousands of PDFs: manuals, reports, policies, research papers. Finding specific information across these documents is time-consuming because:
- PDF content is unstructured
- Search tools only find exact text matches
- Images, charts, and scanned pages are invisible to search
- No way to ask questions and get contextual answers
IntelliRead transforms PDFs into queryable knowledge bases where you can search semantically and ask natural language questions.
| Type | Description | Processing Method |
|---|---|---|
| Text-based PDFs | Standard PDFs with selectable text | Direct text extraction via PDF.js |
| Mixed PDFs | Documents combining text and images | Hybrid extraction with AI image analysis |
| Image-only PDFs | Scanned documents, photo PDFs | Full page rendering + Gemini AI descriptions |
| Chart-heavy PDFs | Data visualizations and diagrams | AI-powered chart interpretation |
- Structure Preservation: Maintains headings, sections, chapters, and page numbers
- Smart Chunking: Splits content at natural boundaries (sentences, paragraphs, sections) - never mid-word
- Table Extraction: Detects and extracts tables with row/column integrity
- Image Analysis: AI-generated descriptions make visual content searchable
- Semantic Search: Find content by meaning, not just keywords
- Multi-Provider AI: Choose between Groq, Perplexity, Anthropic, or Google Gemini
- Cited Answers: AI responses include page references for verification
- Document-Scoped: Answers are grounded in your uploaded documents
- 100% Client-Side: All processing happens in your browser
- IndexedDB Storage: Documents persist locally, never uploaded to servers
- API Calls Only When Needed: AI providers are called only for:
- Generating image descriptions (Gemini)
- Answering questions (Groq/Perplexity/Anthropic)
| Layer | Technology |
|---|---|
| Frontend | React 18 + TypeScript + Vite |
| UI Components | shadcn/ui + Tailwind CSS |
| PDF Processing | PDF.js (client-side) |
| Storage | IndexedDB via idb library |
| AI Providers | Groq, Perplexity, Anthropic, Google Gemini |
- Node.js 18+ and npm
- Required API keys (these three must be configured):
- Google Gemini (for image analysis)
- Groq (for fast Q&A)
- Perplexity (for web-grounded answers)
- Optional API key:
- Anthropic Claude (for complex reasoning)
# Clone the repository.
git clone https://github.com/Illusory-warden/intelliread.git
cd intelliread
# Install dependencies
npm install
# Start development server
npm run dev- Open IntelliRead in your browser
- Click API Settings in the header
- Enter API keys for the required providers:
- Test each connection before saving
- PDF upload is disabled until all required keys are configured
- Upload a PDF: Drag and drop or click to select
- Wait for Processing: Watch the progress indicator
- Explore Content: Browse sections, tables, and images
- Ask Questions: Use the chat interface to query your document
- Export: Download chat history as PDF
PDF Upload → Page Analysis → Content Extraction → Chunking → Indexing → Search Ready
↓
Image Detection
↓
AI Description (Gemini)
↓
Content Normalization
For detailed architecture, see docs/ARCHITECTURE.md.
| Limitation | Description |
|---|---|
| Image Interpretation | AI descriptions are interpretive, not exact transcriptions |
| Complex Charts | Multi-layered visualizations may not be fully captured |
| OCR Accuracy | Depends on scan quality; handwritten text may not process well |
| Offline AI | Image analysis and Q&A require internet connection |
| Browser Storage | IndexedDB has browser-specific storage limits |
For complete limitations, see docs/LIMITATIONS.md.
src/
├── components/ # React UI components
│ ├── ui/ # shadcn/ui base components
│ ├── Header.tsx # App header with navigation
│ ├── PDFViewer.tsx # Document viewer with tabs
│ ├── ChatInterface.tsx # Q&A chat panel
│ └── ...
├── hooks/ # Custom React hooks
│ ├── useAPIKeys.ts # API key management
│ ├── useChat.ts # Chat state and API calls
│ └── useDocuments.ts # Document CRUD operations
├── lib/
│ ├── apiClient.ts # AI provider integrations
│ ├── db.ts # IndexedDB operations
│ ├── imageExtractor.ts # PDF image detection
│ ├── pdfProcessor.ts # PDF parsing and extraction
│ ├── textChunker.ts # Content chunking logic
│ └── vectorSearch.ts # Embedding and similarity
├── pages/
│ ├── Index.tsx # Main application page
│ └── HowItWorks.tsx # Processing explanation page
└── types/ # TypeScript definitions
- Architecture Overview
- Image Processing Pipeline
- Processing Flow
- Indexing & Search
- Known Limitations
- Project Structure
MIT
Contributions are welcome. Please open an issue first to discuss proposed changes.