IntentGuard

Pre-Documentation Scope Review

Authoritative specificationhistoricalml

Source of truth

Part of docs/specification/ — the repository declares this tree the sole authoritative design source. The README and backlog do not override it.

Architecture challenge#

Every Phase 1 component was challenged against one question:

Is this required to demonstrate the complete train-evaluate-serve-abstain vertical slice within 12–16 hours?

Proposed componentDecisionReason
BANKING77KeepOne public, fine-grained, laptop-sized primary dataset
Stratified validation splitKeepRequired for epoch and threshold selection without test leakage
TF-IDF logistic baselineKeepMeaningful reference with low implementation cost
Fine-tuned DistilBERTKeepCore PyTorch/Hugging Face evidence
Global abstention thresholdKeepChanges a forced classifier into a safer decision boundary
Risk/coverage evaluationKeepNecessary to evaluate abstention honestly
Small unsupported fixtureKeep, narrowBehavioral demonstration only; not a general OOD benchmark
Temperature scalingMove to SHOULDUseful but not required for the vertical slice
Per-class thresholdsPost-weekendAdds policy and data-sufficiency complexity
FastAPIKeepProvides one typed production boundary
CLI inferenceRemoveDuplicates the public interface
Health checkKeepSmall and directly validates artifact readiness
Local artifact metadataKeepRequired to reload and reproduce the evaluated model
DockerPost-weekendGPU/WSL packaging risk displaces ML validation
Structured logsKeep, minimalOne privacy-conscious event per request is proportional
Dashboard/monitoringRemoveNo continuous deployment or traffic exists
Database/model registryRemoveOne immutable local artifact does not justify them
FrontendRemoveCurl/OpenAPI is sufficient for a five-minute demo
Cloud deploymentPost-weekendNot required and no target platform is known
Hyperparameter searchRemoveOne model configuration answers the portfolio question
LLM explanationsRemoveCreates an unevaluated second model problem

Smallest meaningful vertical slice#

BANKING77
  -> validated train/validation/test data
  -> TF-IDF baseline
  -> fine-tuned DistilBERT
  -> validation-only abstention threshold
  -> saved local artifact
  -> evaluation report
  -> FastAPI accept/abstain response
  -> focused tests and honest README

Removing any item above would weaken the central claim. Adding another model, dataset, service, interface, or UI would expand rather than complete it.

Assumptions requiring early validation#

AssumptionValidate byFailure response
BANKING77 pinned loader and 77-label mapping workHour 2Fix source/revision; no substitute dataset without scope change
PyTorch detects intended deviceHour 1Continue CPU baseline; time-box GPU repair
DistilBERT forward pass fits memoryHour 3Reduce batch, not architecture
Training fits Hour 6–9Hour 8One epoch; then documented frozen-embedding fallback
Saved artifact loads in a new processHour 9Block API work until fixed
Threshold selector never accesses test labelsBefore Hour 11Fail evaluation; do not bypass

Strict scope freeze#

Scope freezes when make baseline produces a reloadable artifact and valid test report, no later than Hour 6.

After freeze:

  • model, dataset and interface choices cannot change silently;
  • new dependencies require justification;
  • new features enter the parking lot;
  • only defects blocking acceptance criteria may displace time.

No blocking architecture question remains. The specification therefore makes and labels assumptions rather than pausing for non-material preferences.

Related in repository

Open in full graph →
LINKS_TOLINKS_TO — source: docs/specification/README.mdCURRENTdocument: Pre-Documentation Scope ReviewIntentGuard Weekend MVP …document: IntentGuard Weekend MVP — Development Specification
Hover an edge for its provenance · click a node to open it2 nodes · 1 edges