App preview:
A modern, elegant application to analyze your CSV files with Artificial Intelligence using multiple AI providers (OpenAI, Anthropic, Google, Mistral, and more). Privacy-first: the app does not store your data. Use a self-hosted/custom endpoint to keep processing entirely local; otherwise API calls go to the selected provider. Self-hostable with Docker.
- Drag & Drop or file selection
- Automatic detection of delimiters (comma, semicolon, tab)
- Configurable settings: delimiter, header row, encoding
- Type inference for columns (text, number, date)
- Interactive table with sorting and pagination
- Data preview with automatic formatting
- Smooth navigation for large datasets
- Multiple AI providers: OpenAI, Anthropic Claude, Google Gemini, Mistral, and more
- Custom endpoint support: Connect to Ollama, LM Studio, vLLM, or any OpenAI-compatible API
- Intelligent analysis of your data with AI-generated insights
- Smart chart suggestions tailored to your dataset
- Chart types: Bar, Line, Pie, Scatter, Area
- Local or direct-to-provider: the app does not store your data. Processing can happen in your browser when using a self-hosted/custom endpoint; otherwise API calls go directly to the chosen AI provider.
- API keys stored locally in your browser
- No tracking or third-party cookies
- Docker ready: Deploy in seconds with a single command
- Custom AI endpoints: Use your own LLM server (Ollama, LM Studio, vLLM, etc.)
- Full control: Host on your own infrastructure
# Clone the repo
git clone https://github.com/maxgfr/csv-ai-analyzer.git
cd csv-ai-analyzer
# Install dependencies
pnpm install
# Run in development
pnpm devThe application will be accessible at http://localhost:3000
This project ships a static public/models.json that contains the models catalog fetched from https://models.dev/api.json.
- You can regenerate the file locally with:
pnpm run fetch-models-
A GitHub Action is configured to run this script once per day and automatically commit
public/models.jsonif it changes.- Workflow:
.github/workflows/update-models.yml - Runs daily (UTC 06:00) and is also triggerable manually with
workflow_dispatch.
- Workflow:
If you'd like the file to be refreshed more/less often you can update the cron schedule in the workflow file.
# Build the Docker image
docker build -t csv-ai-analyzer .
# Run the container
docker run -p 3000:3000 csv-ai-analyzerOr use Docker Compose:
# docker-compose.yml
version: '3.8'
services:
csv-ai-analyzer:
build: .
ports:
- "3000:3000"
restart: unless-stoppeddocker compose up -dThe application will be accessible at http://localhost:3000
Or use the live version directly!
Drag and drop your CSV file or click to select a file.
If automatic detection doesn't work perfectly, adjust the settings:
- Custom delimiter
- Header row choice
- File encoding
Click the ⚙️ icon to configure your AI provider:
- Choose a provider: OpenAI, Anthropic, Google, Mistral, or others
- Enter your API key: Each provider has its own API key format
- Custom Endpoint: Enable "Use Custom Endpoint" to connect to local/self-hosted OpenAI-compatible APIs (Ollama, LM Studio, vLLM, etc.)
- Toggle "Use Custom Endpoint" in settings
- Enter your API Base URL (e.g.,
http://localhost:11434/v1for Ollama) - Enter your model name (e.g.,
llama3.2,mistral,codellama) - API key is optional for most local servers
Example configurations:
| Provider | Base URL | Model Examples |
|---|---|---|
| Ollama | http://localhost:11434/v1 |
llama3.2, mistral, codellama |
| LM Studio | http://localhost:1234/v1 |
Model name from LM Studio |
| vLLM | http://localhost:8000/v1 |
Your loaded model name |
| OpenRouter | https://openrouter.ai/api/v1 |
openai/gpt-4o, anthropic/claude-3 |
Click "Run Complete Analysis" and the AI will analyze your data, detect anomalies, and suggest relevant visualizations.
| Technology | Usage |
|---|---|
| Next.js | React Framework with App Router |
| TailwindCSS | Styling and design system |
| PapaParse | Client-side CSV parsing |
| Recharts | React charting library |
| Lucide React | Modern icons |
| js-cookie | Secure local persistence |
MIT - Use as you wish!
