contract-extractor / docs /TEAM_TEST.md
myke69's picture
Add files using upload-large-folder tool
3752e5d verified
|
Raw
History Blame Contribute Delete
2.63 kB

Team test runbook β€” dynamic-finetuned

The full product: dynamic baseline + fine-tuned classifier (fusion) + LLM extraction + traceability + features. Here's how to run and what to verify.

1. Get the branch + the model

git fetch && git checkout dynamic-finetuned
# the fine-tuned weights are gitignored β€” drop the folder in by hand:
#   backend/finetune/legalbert-sent-cuad/   (LegalBERT 0.70, demo)
#   backend/finetune/deberta-sent-cuad/     (DeBERTa 0.67, deploy β€” clean licence)

2. Run it

./run.sh        # backend :8000, frontend :5173

Pick the classifier with env vars (backend):

Goal Command
Demo, most accurate CLASSIFIER=fusion CORE_LLM_BACKEND=ollama uvicorn app.main:app --port 8000
Deploy, clean licence CLASSIFIER=fusion LEGALBERT_MODEL_DIR=finetune/deberta-sent-cuad uvicorn app.main:app --port 8000
No models / safest CLASSIFIER=rules CORE_LLM_BACKEND=rules uvicorn app.main:app --port 8000
LLM extraction also: ollama serve + ollama pull qwen2.5:7b once

fusion falls back to zero-shot β†’ rules automatically if a model is missing, so it always runs.

3. What to verify (the demo path)

  1. Upload data/samples/demo_msa.pdf β†’ register + key dates + ranked risks appear.
  2. Risks tab: "Liability/direct damages uncapped" (sev ~85), "Auto-renewal 90-day notice" β€” finding shows "β‰ˆ75th percentile of 41 real contracts".
  3. Click any finding β†’ the exact clause highlights in the PDF (traceability).
  4. Key dates: non-renewal notice deadline computed (e.g. 2029-04-01) β†’ "Add to calendar" downloads an .ics; "Excel register" downloads .xlsx.
  5. Upload the scanned copy (demo_msa_scanned.pdf) β†’ identical findings via OCR.
  6. Chat: ask "what is the liability cap?" β†’ grounded answer with clause cite.
  7. Compare / Heatmap / Portfolio / Defined terms tabs render.

4. Measure accuracy (the slide number)

cd backend
../.venv/bin/python -m eval.run_eval --classifier legalbert --limit 50   # ~0.70 (LegalBERT)
../.venv/bin/python -m eval.run_eval --classifier zeroshot --limit 50    # 0.61 (zero-shot)
../.venv/bin/python -m eval.run_eval --classifier rules --limit 50       # 0.50 (rules)

5. Safety check (no regression)

cd backend && ../.venv/bin/python tests/test_risk_golden.py   # must print "golden test OK"

Notes

  • Deploy on DeBERTa 0.67 (MIT), not LegalBERT (CC-BY-SA). Same code, one env var.
  • The dynamic baseline is the differentiator β€” it works on any classifier.