Technical showcase & architecture specification
This repository outlines the system architecture and technical design of Autocrisp. Because of intellectual property agreements and non-disclosure requirements, the production source code remains in private institutional repositories.
Autocrisp is a low-code orchestration platform that guides users through data science workflows without writing code. It helps researchers and domain specialists frame questions, clean datasets, train predictive models, and interpret results through conversational AI agents.
The system follows the CRISP-DM (Cross-Industry Standard Process for Data Mining) lifecycle. Instead of handing the entire pipeline to an unconstrained code-generation model, Autocrisp assigns dedicated agents to discrete phases. It requires human sign-off during early problem scoping and data cleaning, keeping flawed assumptions from cascading into modeling.
Autocrisp was developed by Jack van der Vall (AI Engineering Intern) in collaboration with the Erasmus Centre for Data Analytics (ECDA) at Erasmus University Rotterdam, and the Applied Data Science & AI program at Hogeschool Rotterdam.
The platform was developed and tested in the EDC Data Sandbox, the data and compute environment managed by the Erasmus Data Collaboratory (House of AI).
- Official portfolio case study: ECDA: Autocrisp: AI Agents that Automate CRISP-DM
- Institution: Erasmus Centre for Data Analytics (ECDA) / Erasmus Data Collaboratory | House of AI
- Academic partner: Applied Data Science & AI, Hogeschool Rotterdam
- Developer / AI intern: Jack van der Vall (LinkedIn)
Autocrisp separates deterministic workflow automation from autonomous agent reasoning:
flowchart LR
subgraph Frontend["Frontend Layer"]
UI["Streamlit UI<br/>(Conversational & Visual)"]
end
subgraph Orchestration["Deterministic Orchestration Layer"]
N8N["N8N Workflows<br/>(Webhooks & API Connectors)"]
OrchAgent["Orchestration Coordinator"]
N8N --> OrchAgent
end
subgraph Business["Phase 1: Business Understanding"]
QueryAgent["Query Refiner Agent"]
WebAgent["Web Research Agent"]
DataDiscAgent["Dataset Discovery Agent"]
CompilerAgent["Research Compiler Agent"]
QueryAgent --> WebAgent --> DataDiscAgent --> CompilerAgent
end
subgraph DataOps["Phases 2-5: Data Ops & Modeling (AG2 / AutoGen)"]
ExplorerAgent["Data Explorer Agent<br/>(Automated EDA)"]
ProcessorAgent["Data Processor Agent<br/>(Sanitization & Features)"]
TrainerAgent["Model Trainer Agent<br/>(scikit-learn / PyTorch)"]
CodeExec["Sandboxed Code Executor<br/>(UserProxy Container)"]
ExplorerAgent --> ProcessorAgent --> TrainerAgent --> CodeExec
end
subgraph Backend["State & Security (Supabase)"]
Auth["User Auth (RLS)"]
Credentials["Encrypted Credentials"]
Memory["Agent Memory / Research Logs"]
Storage["Datasets & Artifacts"]
end
subgraph External["Models & External APIs"]
LLMs["Multi-LLM Providers<br/>(OpenAI / Gemini / DeepSeek)"]
SearchAPI["Web Search API<br/>(Perplexity / Sonar)"]
end
UI -->|"Natural Language Query"| N8N
UI -.->|"Session Auth"| Auth
OrchAgent -->|"Delegation"| QueryAgent
OrchAgent -->|"Structured Pipeline Task"| ExplorerAgent
CompilerAgent -.->|"Persist Findings"| Memory
ExplorerAgent -.->|"EDA Insights & Charts"| UI
DataOps -.->|"Model Inference & Synthesis"| LLMs
Business -.->|"Web Search"| SearchAPI
CodeExec -.->|"Artifacts & Metrics"| Storage
Autocrisp maps the six CRISP-DM phases to dedicated agent roles:
The process starts with research agents that convert plain-text goals into clear hypotheses. Before touching raw data, the agents use web search (via Perplexity) to gather domain context, explore public benchmarks, and discover relevant external datasets.
Once a dataset is uploaded, the explorer agent profiles distributions, checks column correlations, flags missing values, and produces interactive Plotly and Seaborn charts inside Streamlit.
The processor agent cleans dirty records, handles imputations, resolves collinearity, and engineers new features informed by the research phase. Every transformation produces a verifiable Pandas script before execution.
The trainer agent configures classification, regression, or clustering pipelines using scikit-learn, XGBoost, or PyTorch. It tests model candidates, runs hyperparameter sweeps, and logs cross-validation results.
Rather than just returning raw scores, this agent explains model performance and confusion matrices in plain language so users can evaluate results before deciding to iterate or deploy.
Users can export clean, containerized Python scripts, trained model files (.pkl or .onnx), and step-by-step audit logs to hand off to engineering teams.
| Component | Technology | Role |
|---|---|---|
| Agent framework | AG2 (AutoGen) | Conversable loops, automated code generation, and iterative syntax repair. |
| Orchestration | N8N | Deterministic workflows for webhooks, web search integration, and API queries. |
| Memory & storage | Supabase (PostgreSQL) | Conversation state, research logs, Row-Level Security (RLS), and encrypted credentials. |
| User interface | Streamlit | Interactive UI for agent dialogues, data visualizations, and approval gates. |
| Code execution | Docker sandbox containers | Isolated runtime for running generated Pandas, scikit-learn, and PyTorch scripts without host exposure. |
| LLM routing | Multi-provider dispatch | Routing between GPT-4o, Gemini Pro, and DeepSeek based on task complexity. |
- Sandboxed code execution: All code proposed during agent loops runs in isolated Docker containers. The host machine is isolated from generated scripts, blocking unintended filesystem or network access.
- Human-in-the-loop review: Agents cannot run data transformations or train models without explicit user confirmation. Users review proposed code and data edits before execution begins.
- Row-Level Security (RLS) & data isolation: User accounts, datasets, and project data are secured in Supabase with PostgreSQL Row-Level Security, enforcing strict access control.
- Stateful memory & session persistence: Agents retain context across the project lifecycle via encrypted storage in Supabase, keeping previous research findings, data cleaning steps, and generated scripts accessible across sessions.
For research inquiries, demonstrations, or collaboration:
- Developer: Jack van der Vall (LinkedIn)
- Portfolio case study: Erasmus Centre for Data Analytics

