๐ Try it live โ
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.
# 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 dev
The 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.
pnpm run fetch-models
A GitHub Action is configured to run this script once per day and automatically commit public/models.json if it changes.
.github/workflows/update-models.ymlworkflow_dispatch.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-analyzer
Or use Docker Compose:
# docker-compose.yml
version: '3.8'
services:
csv-ai-analyzer:
build: .
ports:
- "3000:3000"
restart: unless-stopped
docker compose up -d
The 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:
Click the โ๏ธ icon to configure your AI provider:
http://localhost:11434/v1 for Ollama)llama3.2, mistral, codellama)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.
@maxgfr/csv-charts โ Reusable Chart PackageThe chart components are extracted into a standalone npm package @maxgfr/csv-charts, available for use in any React project.
pnpm add @maxgfr/csv-charts
Peer dependencies: react, recharts, lucide-react.
import { ChartDisplay } from "@maxgfr/csv-charts";
const data = {
headers: ["Category", "Sales"],
rows: [["Electronics", "1200"], ["Clothing", "800"]],
columns: [
{ name: "Category", type: "string", index: 0 },
{ name: "Sales", type: "number", index: 1 },
],
rowCount: 2,
};
const charts = [{
id: "1",
type: "bar",
title: "Sales by Category",
description: "Compare sales across categories",
xAxis: "Category",
yAxis: "Sales",
aggregation: "sum",
}];
<ChartDisplay data={data} charts={charts} />
| Export | Description |
|---|---|
ChartDisplay |
Multi-chart container with optional card wrapper |
SingleChart |
Individual chart with toolbar (sort, zoom, trendline, export) |
ChartToolbar |
Standalone toolbar component |
processChartData |
Data processing utility with aggregation |
COLORS |
Default color palette |
Chart types: bar, line, area, scatter, pie. Aggregations: sum, avg, count, min, max, none.
See the full documentation in packages/csv-charts/README.md.
| Technology | Usage |
|---|---|
| Next.js | React Framework with App Router |
| TailwindCSS | Styling and design system |
| PapaParse | Client-side CSV parsing |
| Recharts | React charting library |
| react-markdown | Markdown rendering for AI responses |
| rehype-highlight | Syntax highlighting in code blocks |
| Lucide React | Modern icons |
| js-cookie | Secure local persistence |
| tsup | Package bundling for @maxgfr/csv-charts |
| semantic-release | Automated npm publishing via CI |
csv-ai-analyzer/
โโโ src/ # Next.js application
โ โโโ app/_components/ # React components
โ โโโ lib/ # Services, parsers, stores
โ โโโ styles/ # Global CSS
โโโ packages/
โ โโโ csv-charts/ # @maxgfr/csv-charts npm package
โ โโโ src/ # Package source (ChartDisplay, SingleChart, etc.)
โ โโโ dist/ # Built output (ESM + .d.ts)
โ โโโ package.json
โโโ pnpm-workspace.yaml # Monorepo workspace config
โโโ package.json # Root app
MIT - Use as you wish!