Intake Independent solution

Client Intake & Triage

Turns inbound enquiries into structured, complete intake: it asks the right follow-ups, extracts the matter details, runs a conflicts pre-check, and routes to the right team — with a person confirming before anything is accepted.

The problem

Messy intake wastes lawyer time and creates risk

Enquiries arrive as free-form emails and calls with half the information. Someone re-keys it, chases the rest, eyeballs conflicts, and guesses who should handle it — slow, inconsistent, and risky.

This solution structures intake automatically, flags likely conflicts for a human to confirm, and routes matters to the right team — turning a scattered process into a reliable one.

Primary objective
Make intake fast and complete, and never miss a conflict — with human confirmation on decisions.
How it works

Enquiry → structure → conflict pre-check → route

Enquiry
Email, form or call notes
Structure
Extract parties, matter, dates
Conflict check
Pre-screen, human confirms
Route
To the right practice group
What it does
  • ✓ Structured field extraction
  • ✓ Smart follow-up questions
  • ✓ Conflict pre-screening
  • ✓ Practice-area routing
  • ✓ Completeness checks
  • ✓ Summary for the assigned team
Built with
  • ✓ Claude for extraction & Q&A
  • ✓ Conflicts DB integration
  • ✓ Matter / CRM system API
  • ✓ Routing rules engine
  • ✓ Human confirmation step
Guardrails
  • ✓ Conflicts confirmed by a human
  • ✓ No engagement auto-accepted
  • ✓ PII handling controls
  • ✓ Decision audit trail
  • ✓ Escalation on ambiguity
Under the hood

Conflict pre-screen with human confirmation

The model proposes potential conflicts from the parties it extracted; acceptance is always a human decision, never automatic.

intake/triage.py PYTHON
from conflicts import search_parties

def triage(intake: dict) -> dict:
    # intake = extracted {parties, matter_type, jurisdiction, ...}
    hits = search_parties(intake["parties"])   # fuzzy match vs DB
    result = {
        "matter": intake,
        "possible_conflicts": hits,
        "route": route_for(intake["matter_type"]),
        "status": "needs_human_confirmation",   # never auto-accept
    }
    return queue_for_confirmation(result)
Outcomes
Complete
Structured intake
Zero
Missed conflict checks
Routed
To the right team
Human
Confirms acceptance

Make intake fast, complete and safe

Feeds clean matter data into Document Drafting and Matter Summaries.

Start a conversation →
More Legal & Professional Services solutions
Client Intake & Triage | Smort