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_automation
  • document_processing
  • analytics
  • knowledge_retrieval
  • exception_handling
  • human_escalation
  • api_integration
  • reporting

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=2000 and random_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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

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 Dataset
    test set self-reported
    1.000
  • Test macro F1 on the synthetic held-out split on N.White AI Operations Intent Dataset
    test set self-reported
    1.000