What is marijoAI?
marijoAI is a browser-based, no-code application that helps SaaS and subscription businesses predict customer churn using a neural network — entirely on your device.
You upload a CSV exported from your CRM, billing tool, or analytics platform. The app detects the format, cleans the data, trains a binary classifier, and lets you score new customer lists. Every step runs locally in your browser: no accounts, no servers, no data leaving your machine.
It is designed for customer success, revenue, and product teams that need actionable churn predictions without a data science team, a vendor review, or a data processing agreement.
The Workflow
marijoAI is structured around three simple pages:
- Train — upload a CSV, pick the churn column, and train a neural network. The model learns from historical customers you already know churned or stayed.
- Score — load a trained model and a new customer list to get a churn score and a risk tier for each customer.
- Tutorial — a step-by-step walk-through using an included public SaaS churn dataset so you can get a working model in under five minutes.
Browser-First, Privacy-First Architecture
marijoAI is a single-page static web application. The entire stack — data parsing, model training, scoring, and visualization — executes in your browser tab. There is no backend, no database, and no telemetry.
Concretely, this means:
- Your CSV files are read with the browser's
File API and parsed in memory.
- Training runs on your CPU, in the same tab, using WebAssembly when available.
- Trained models are downloaded as plain JSON files to your local disk.
- Closing the tab clears all in-memory data.
- No cookies, no tracking scripts, no analytics.
The Neural Network
marijoAI uses a small, fixed feed-forward neural network for binary classification. The architecture is intentionally simple so it trains quickly on a laptop and generalizes well on typical tabular customer data:
- Input layer — one neuron per numeric feature detected in your CSV (the churn column and any ID column are excluded automatically).
- Hidden layer — 64 neurons with ReLU activation.
- Output layer — 1 neuron with sigmoid activation, producing a churn probability in
[0, 1].
Weights are initialized with Xavier / Glorot uniform initialization. The loss function is binary cross-entropy, which is the standard choice for sigmoid-output classifiers.
Optimization uses Adam (adaptive moment estimation) with default hyper-parameters β₁ = 0.9, β₂ = 0.999, ε = 1e-8, a learning rate of 0.001, a batch size of 32, and 100 epochs. These values are tuned to work well out-of-the-box on typical subscription-business datasets.
WebAssembly Training Engine
The performance-critical inner loop — forward pass, back-propagation, Adam updates, epoch-level training — is implemented in AssemblyScript and compiled ahead of time to a compact wasm/nn.wasm module. The source lives in assembly/index.ts.
The WebAssembly module manages its own linear memory: weights, biases, Adam first- and second-moment estimates, gradient accumulators, and the training dataset are all stored as flat f64 arrays at fixed pointer offsets. JavaScript uploads features and labels once, then drives training one epoch at a time, reading back loss and accuracy after each epoch to power the live progress UI.
When WebAssembly is unavailable — for example on very old browsers or certain locked-down environments — the same network is trained by an equivalent pure-JavaScript implementation in js/neural-network.js. The model produced by either path is numerically compatible: weights can be exported from one and loaded into the other.
Data Pipeline
Before any neuron sees your data, marijoAI performs an automatic, deterministic preprocessing pipeline:
- Format auto-detection. A sample of the first few lines is scanned to pick the most likely delimiter (
,, ;, tab, or |) and to decide whether the first row is a header, using a numeric-ratio heuristic.
- Row validation. Empty rows and rows with no usable values are dropped.
- Column selection. The churn column and optional ID column are excluded. Among the remaining columns, only those that contain at least one parseable number are kept as features.
- Deduplication. Exact duplicate feature + label combinations are removed so they do not bias training.
- Missing-value imputation. Non-numeric or empty cells in a feature column are replaced by the column mean computed from the valid values.
- Validation holdout. If requested, a random 20% of the data is held out as a validation set and exported as a separate CSV so you can measure real-world accuracy later.
- Min–max normalization. Each feature is rescaled to
[0, 1] using the min and max from the training rows only (to avoid leakage). These stats are saved with the model so scoring uses the exact same scaling.
- Label mapping. Common textual churn labels —
yes/no, true/false, churned/retained, left/stayed, inactive/active — are automatically mapped to 1/0. The mapping is surfaced in the UI so you can verify it before training.
Scoring and Interpretation
On the Score page, the trained model outputs a churn score between 0 (will stay) and 1 (will churn) for each customer. marijoAI turns that raw probability into actionable views:
- Risk tiers. Scores are bucketed into Safe (0.00–0.20), Watch (0.20–0.50), At risk (0.50–0.80), and Critical (0.80–1.00).
- Accuracy evaluation. If the scored CSV still contains the true churn column, the app computes overall accuracy and a full confusion matrix (predicted vs. actual).
Results can be sorted, filtered by score threshold, paginated, and exported to CSV for follow-up in your CRM or customer success tool.
Model Persistence
A trained model is saved as a single, human-readable JSON file. It contains:
- The network architecture (layer sizes and activations).
- All weights and biases.
- The preprocessing metadata: the ordered list of feature column names, per-column min/max for normalization, the churn column name, the ID column (if any), and the label-to-number mapping.
Because preprocessing travels with the model, you can close the tab, come back a month later, re-upload the JSON with any CSV that has the same columns, and get perfectly consistent scoring. The model file is also small enough to check into version control or attach to an email.
Requirements and Compatibility
- Any modern browser — recent Chrome, Edge, Firefox, Safari... WebAssembly is used automatically when present.
- No internet connection required after the page is loaded. The app also runs from a local file for fully offline use.
- Any CSV with at least one numeric feature column and a binary churn column. Datasets with tens of thousands of rows train in seconds on a typical laptop.
Open Source
marijoAI is released under the MIT license. The source code lives on GitHub.