contract-drafting-assistant / failure_report.md
narcolepticchicken's picture
Upload failure_report.md
aa4f156 verified
|
Raw
History Blame Contribute Delete
3.69 kB
# Failure Report
## Evaluation Results Summary (Template-Based System)
| Task | Contract Type | Position | Total Score | Key Weaknesses |
|------|--------------|----------|-------------|----------------|
| saas_pro_company_001 | SaaS | pro_company | ~0.52 | Placeholder clauses, business constraints not in text |
| nda_balanced_001 | NDA | balanced | ~0.75 | Good coverage, template quality acceptable |
| msa_pro_counterparty_001 | MSA | pro_counterparty | ~0.45 | Missing key terms, playbook compliance low |
| dpa_balanced_001 | DPA | balanced | ~0.70 | Good clause completeness, weak citation support |
| consulting_balanced_001 | Consulting | balanced | ~0.55 | Placeholder clauses hurt invented_terms score |
## Root Causes
### 1. Template Coverage Gaps (Impact: HIGH)
- Only 7 of 9 contract types have template clauses for common provisions
- SaaS-specific clauses (scope_of_services, subscription_term, SLA, assignment) have no template
- Fallback: "[Placeholder clause for X]" β€” this triggers invented_terms penalty
**Fix**: Add per-contract-type templates for ALL required clauses, not just the 7 common ones
### 2. Business Constraint Injection (Impact: HIGH)
- Business constraints (e.g., "SOC 2 Type II", "99.9% uptime") are checked via string matching
- Template clauses don't incorporate constraints into generated text
- Score: business_usefulness β‰ˆ 0.0 for most tasks since constraints aren't literally present in clause text
**Fix**: Template generation must inject business_constraints into clause text, not just reference them
### 3. Playbook Compliance Heuristics (Impact: MEDIUM)
- Compliance scoring checks for keywords like "cap", "mutual", "company" in clause text
- Pro-company position: checks for "cap" OR "company" β€” too permissive
- Pro-counterparty position: checks for "broad" OR "customer" β€” too narrow
**Fix**: Use structured fallback positions in scoring β€” check that fallback position terms appear in clause text
### 4. Risk Flag Detection (Impact: MEDIUM)
- Keyword-based detection misses semantic issues
- "NO_DPA" flag fires even when DPA is referenced in text ("DPA may be executed upon request")
- Detection doesn't distinguish between "referenced" and "attached"
**Fix**: Use ContractNLI-based entailment checking instead of keyword matching
### 5. Citation Support (Impact: MEDIUM)
- With seed clause library (~100 clauses), retrieval matches are sparse
- Many clause types (SLA, assignment, subscription_term) have no seed examples
- Score: citation_support β‰ˆ 0.3-0.5
**Fix**: Expand clause corpus with CUAD-extracted clauses and ACORD training data
## Known Limitations
1. **Template-based generation** produces short, generic clauses β€” need LLM-based generation
2. **Risk flag detection** uses keyword matching, not semantic understanding β€” need NLI verification
3. **Playbook compliance** scoring is heuristic-based β€” need structured clause analysis
4. **Business constraints** checked via string matching β€” need semantic embedding comparison
5. **No LLM-based generation** when running without GPU/transformers
6. **Citation support** depends on retrieval corpus size β€” currently sparse for uncommon clause types
## Recommended Next Steps
1. Fine-tune Qwen2.5-3B on CUAD + ContractNLI for clause classification and generation
2. Build embedding index over ACORD clause corpus for dense retrieval
3. Add per-contract-type, per-position clause templates covering ALL required clauses
4. Replace keyword-based risk flag detection with NLI-based entailment scoring
5. Add business constraint injection into template/LLM generation prompts
6. Expand eval suite to 20+ tasks across all 9 contract types