ACLISS — AI-Supported Competition Law Investigation System
Team project — "Stack Underflow" (4 members), graduation project
ACLISS assists Competition Board investigators through the full lifecycle of a cartel-type antitrust investigation — from intake of a raw complaint file to a final reasoned decision draft — with a self-hosted fine-tuned LLM at every drafting step and a human review/approval gate before each handoff.
Problem
Investigating a potential antitrust violation means manually reading complaint files, sifting through emails and numeric evidence for coordination signals, and cross-referencing large volumes of Competition Board precedent. It's slow, and hard to keep consistent across cases and across investigators.
Flow
Eight modules (M0–M7), each backed by its own FastAPI router and a SQLite-persisted session that tracks raw LLM output, validated output, and a separately-tracked human-edited version — with a review and approval gate before work hands off to the next module.
- 01M0 — Intake & Validation: parses the complaint file and evidence attachments, validates format and schema.
- 02M1 — Preliminary Investigation: a fine-tuned LLM drafts a preliminary report and structured fields; validated, retried on failure, reviewed and approved by a human.
- 03M2 — Evidence Collection: auto-generates a required-evidence upload plan based on the violation type, and validates submissions.
- 04M3 — Evidence Analysis: LLM-based analysis of text evidence (emails, chat logs, meeting notes) for direct evidence, plus numeric/statistical analysis of pricing, tender, and sales data for indirect coordination signals.
- 05M4 — Precedent Retrieval: ChromaDB vector search over a Competition Board decision corpus (multilingual E5 embeddings + cross-encoder reranking) returns the most relevant past decisions.
- 06M5 — Investigation Report Drafting: the LLM combines M1, M3, and M4 into an institutional-format report; human-edited and approved.
- 07M6 — Defense & Additional Opinion: the LLM drafts a response to the parties' defense submissions, grounded in the M5 report.
- 08M7 — Final Reasoned Decision Draft: the LLM combines M5, M6, and M4 into a final decision draft, approved and exported as PDF.
Technologies
Notable decisions
Hand-rolled validator + repair-hint generator
LLM output is never trusted directly. Explicit rule checks (required fields, label compatibility, date ordering) map each failure type to a targeted natural-language correction instruction that's fed back into the next generation attempt — a domain-specific rule engine rather than a generic schema library.
VRAM-constrained adapter hot-swapping
Five fine-tuned LoRA adapters (one per drafting module) are hot-swapped in and out of a single resident base model, so all five "models" fit on one GPU instead of requiring five separate deployments.
Per-module session state machine
Each module's SQLite table stores raw LLM output, validated output, and a separately-tracked human-edited copy — a clean separation that makes human review, revert, and change-auditing possible at every step.
Result
All 8 modules were verified end-to-end with real data against the live fine-tuned inference server, including M4's precedent summarization step — no mock provider involved anywhere in the pipeline. A 143-test automated suite (unit + API integration) passes, and fine-tuning runs show concrete convergence (eval_loss between 0.38 and 0.56 across modules). The full M0→M7 pipeline has been run end-to-end on real cases with the real inference server.
Repository not publicly available.