Instructions to use nwhite-systems/nwhite-ai-operations-intent-classifier with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Scikit-learn
How to use nwhite-systems/nwhite-ai-operations-intent-classifier with Scikit-learn:
from huggingface_hub import hf_hub_download import joblib model = joblib.load( hf_hub_download("nwhite-systems/nwhite-ai-operations-intent-classifier", "sklearn_model.joblib") ) # only load pickle files from sources you trust # read more about it here https://skops.readthedocs.io/en/stable/persistence.html - Notebooks
- Google Colab
- Kaggle
N.White AI Operations Intent Classifier
A small, CPU-friendly text classifier for routing synthetic operational requests to one of eight intent labels. It is a real scikit-learn pipeline combining word-level TF-IDF features with multinomial logistic regression. It uses no pretrained base model and makes no network request during inference.
The model was trained and evaluated by Whitemore Ngwira (N.White) for N.White Systems as a transparent educational demonstration of practical, responsible AI workflow design.
Important: the 1.0000 held-out scores below are genuine for this small, balanced synthetic dataset, but they are not evidence of production accuracy. The splits share one deterministic authoring framework and contain strong intent-specific language. Natural requests will be more varied, ambiguous and often multi-intent.
Model details
| Property | Value |
|---|---|
| Version | 1.0.0 |
| Algorithm | TF-IDF word unigrams/bigrams + multinomial logistic regression |
| Framework | scikit-learn 1.9.0 |
| Solver | L-BFGS (lbfgs) |
| Training records | 128 synthetic requests |
| Validation records | 32 held-out synthetic requests |
| Test records | 32 held-out synthetic requests |
| Classes | 8, balanced in every split |
| Model artefact | model.joblib (84,185 bytes) |
| Hugging Face compatibility alias | sklearn_model.joblib (byte-identical to model.joblib) |
| Model SHA-256 | a322f3a996b4c3fdda072f9328e3857da226cdedb5fa4acc0777442080296223 |
| Browser export | web_model.json (522,759 bytes; local, static inference) |
| Browser export SHA-256 | 03fb8163fdfca33f183a9c0d1650e9d2b26c935a204ac93dfc5abf049d56b1b2 |
| Remote endpoint required | No |
Labels
workflow_automationdocument_processinganalyticsknowledge_retrievalexception_handlinghuman_escalationapi_integrationreporting
Training data
The model uses version 1.0.0 of the public N.White AI Operations Intent Dataset. Every record is synthetic; no client, claimant, policyholder, learner, employee or beneficiary data was used.
The pipeline was fitted once on data/train.csv only. Validation and test texts were passed to the fitted pipeline only for evaluation. There was no hyperparameter search, threshold tuning or test-driven model selection.
| Input | SHA-256 |
|---|---|
| Training CSV | 8ca38cbff872772ff7bcbeaff9769c626dbca7da347bbae7a6ca3a3adc2a8840 |
| Validation CSV | 76c45f31563941d09a8717321f2837bcb31663be2528162e1e3059b30e00ac54 |
| Test CSV | 4a3041912d0fe5383845c705aec55f6fd6fdd0c3487b68060a59a469567ed13a |
Evaluation results
| Split | Records | Accuracy | Macro F1 | Weighted F1 |
|---|---|---|---|---|
| Validation | 32 | 1.0000 | 1.0000 | 1.0000 |
| Test | 32 | 1.0000 | 1.0000 | 1.0000 |
Every class has four test examples and achieved precision, recall and F1 of 1.0000 on that split. The full class-level output, confusion matrix, configuration, hashes and interpretation are in reports/evaluation_report.md and metrics.json.
Eight separately worded, non-sensitive requests—one per class—were also classified after reloading the saved joblib artefact. All eight matched their intended class. This is recorded in sample_predictions.json as a functional smoke test, not an additional benchmark.
The repository also includes web_model.json, a deterministic export of the same vocabulary, IDF vector, class coefficients and intercepts for local browser inference. The verification script independently reconstructs tokenisation, sublinear TF-IDF, L2 normalisation and multinomial probabilities from this JSON and requires its held-out and smoke predictions to match the joblib pipeline.
Why a perfect synthetic score is possible
The corpus is balanced by construction, contains only 192 records, and deliberately uses clear operational language for each label. Training and held-out examples share the same authored vocabulary and structural conventions. This makes the classification boundary much cleaner than real operational traffic. The result should be read as evidence that the packaged pipeline can learn and reload the demonstration task—not as evidence that it can reliably understand arbitrary users.
Local inference
Install the small CPU dependency set:
python -m pip install -r requirements.txt
Run the packaged command-line helper with non-sensitive text:
python scripts/inference.py "Generate a weekly operations summary with ageing bands and data-quality caveats."
Or load the model directly:
import joblib
model = joblib.load("model.joblib")
request = "Route an uncertain high-impact request to a named supervisor for a recorded decision."
intent = model.predict([request])[0]
probabilities = dict(zip(model.classes_, model.predict_proba([request])[0]))
print(intent)
print(probabilities)
Joblib uses Python pickle semantics. Load only a trusted artefact and verify its SHA-256 before deserialising it. Class probabilities are convenient model scores; they have not been calibrated and no production abstention threshold has been established.
Reproduction
From a directory containing this repository beside the dataset repository:
python ../nwhite-ai-operations-intent-dataset/scripts/generate_dataset.py
python ../nwhite-ai-operations-intent-dataset/scripts/validate_dataset.py
python scripts/train_model.py
python scripts/verify_model.py
The fixed configuration is:
- lowercase Unicode-normalised word TF-IDF;
- unigram and bigram features;
- sublinear term frequency and L2 normalisation;
- logistic regression with
C=3.0,solver="lbfgs",max_iter=2000andrandom_state=20260801; - no pretrained embeddings, base model, online API or paid service.
Intended uses
- teaching a transparent text-classification workflow;
- demonstrating local CPU inference for a narrow synthetic taxonomy;
- prototyping non-sensitive request routing and user-interface behaviour;
- providing a reproducible baseline for independently authored evaluation sets;
- exploring where explicit human-review and exception routes belong in operational architecture.
Unsuitable uses
Do not use this model to:
- make or recommend insurance, credit, financial, employment, education, legal, medical or safety decisions;
- infer a person's identity, risk, eligibility, intent or character;
- process confidential, personal or client records without a separate lawful governance process;
- authorise payments, policy changes, access changes, publication or destructive actions;
- claim production readiness, fairness, multilingual ability or real-world accuracy;
- replace accountable human review for consequential work.
Limitations and bias risks
- Small, synthetic, English-only and created through one authoring system.
- Balanced labels do not reflect natural request frequencies.
- Clear label vocabulary can make the test task artificially easy.
- No multi-label output: an ambiguous request is always forced into one class.
- No code-switching, African-language, speech-transcript, typo-stress or adversarial evaluation.
- No calibration, abstention policy, out-of-distribution detector or drift monitor.
- Sector examples cannot represent the diversity of African organisations, countries, languages, laws or infrastructure conditions.
- The model may reproduce the maintainer's assumptions about how responsible operational workflows are described.
For any further research, build a new evaluation set independently of this generator, involve relevant domain owners, measure misrouting costs by subgroup and context, and preserve a visible human override.
Artefacts
model.joblib: fitted TF-IDF/logistic-regression pipeline.sklearn_model.joblib: byte-identical compatibility alias for Hugging Face's generated scikit-learn loading helper.web_model.json: vocabulary, IDF values and logistic-regression parameters for static browser inference.label_mapping.json: stable class order and integer mapping.model_config.json: fit-boundary and interface metadata.metrics.json: machine-readable validation/test metrics and confusion matrices.reports/evaluation_report.md: human-readable evaluation account.reports/*_predictions.csv: every held-out prediction with correctness and predicted-class probability.sample_predictions.json: post-reload smoke examples.scripts/train_model.py: deterministic training/evaluation procedure.scripts/inference.py: local inference helper.scripts/export_web_model.py: deterministic browser-model exporter.scripts/verify_model.py: reload, metric, hash and safety verification.SHA256SUMS: integrity hashes for the complete package.
Human-review requirements
Predictions are routing suggestions only. A named human owner must decide whether a workflow is appropriate, whether information may be used, and whether any consequential action can proceed. Log only what is necessary, preserve source evidence, expose uncertainty, and provide a safe exception path.
Licence and attribution
The model artefact and repository code are released under the MIT License. The training dataset is separately released under CC BY 4.0 and should be attributed to Whitemore Ngwira / N.White Systems. scikit-learn, joblib and NumPy retain their respective upstream licences.
Citation
@software{ngwira_2026_nwhite_ai_operations_intent_classifier,
author = {Whitemore Ngwira},
title = {N.White AI Operations Intent Classifier},
year = {2026},
version = {1.0.0},
publisher = {N.White Systems},
url = {https://huggingface.co/nwhite-systems/nwhite-ai-operations-intent-classifier}
}
- Downloads last month
- 12
Dataset used to train nwhite-systems/nwhite-ai-operations-intent-classifier
Spaces using nwhite-systems/nwhite-ai-operations-intent-classifier 2
Collection including nwhite-systems/nwhite-ai-operations-intent-classifier
Evaluation results
- Test accuracy on the synthetic held-out split on N.White AI Operations Intent Datasettest set self-reported1.000
- Test macro F1 on the synthetic held-out split on N.White AI Operations Intent Datasettest set self-reported1.000