
## Tagline (one line)
An AI intake assistant that turns half-told stories into case-ready inquiries — for a law firm website.
---
## About this project
Most people who contact a law firm online write two sentences and expect a call back. What
they leave out is exactly what the lawyer needs before the first appointment — so the real
work starts with a round of emails, or with a meeting spent collecting basics.
Aktenreif closes that gap at the point of contact. A visitor describes their situation in the
firm's contact form as freely as they like. Before the inquiry is filed, an AI stage judges
whether the description is actually usable for the kind of matter it concerns. If something
essential is missing, a short dialog opens and asks for it — one question at a time, in plain
language, never more than the matter requires. If the description is already complete, the
visitor is simply thanked and nothing else happens.
What the firm receives is not a chat transcript to wade through, but a structured, internal
summary of the case, alongside the full log.
Around that sits the part that makes it usable in a regulated profession:
- A deterministic gate runs before the AI, not after it. Some inquiries a firm is not
allowed to handle at all — those never reach a conversation, and the check that decides
this uses no model and no network, so the same input always yields the same decision and
can be justified afterwards.
- The inquiry is stored before the model is ever asked. If the AI is slow, broken or
unconfigured, the site degrades into an ordinary contact form. An outage may cost a
feature; it must never cost a client.
- The dialog can only end when it is genuinely finished — several guardrails in the tool
loop exist specifically to stop the model from answering its own questions, filling gaps
with plausible-sounding placeholders, or declaring a case complete because it would like
to be.
- The assistant can offer the earliest realistic callback window, derived from the firm's
actual calendar rather than invented by the model, and can take documents when the
conversation makes them relevant.
- Only the description ever reaches the model — names, e-mail addresses and phone numbers
stay on the server.
Built as a working MVP against a real (fictionalised) family and inheritance law practice,
including two design variants of the site itself for A/B comparison. Cost per fully conducted
intake: roughly two cents.
## Technical implementation
Node.js and Express with server-rendered pages, no build step and no frontend framework.
The conversation runs through the Anthropic SDK against OpenRouter, using a small set of
purpose-built tools — set the matter type, fill the checklist, request documents, look up a
callback window, close the case — driven by a tool loop with explicit safeguards and forced
finalisation. The system prompt is cached per request; timeouts and retries are pinned so a
hanging connection cannot strand a visitor. Two end-to-end smoke tests exercise complete
intake scenarios against a running server and check more than a dozen assertions each, which
is what makes swapping the underlying model a ten-minute decision rather than a leap of faith.
Tech: Node.js · Express · Anthropic SDK · OpenRouter · ESM JavaScript · server-side
rendering · fuzzy matching · JSON file storage · SMTP
## Links
- GitHub: https://github.com/ai-anwalt/website
- (Demo-Link, falls du eine Instanz veröffentlichst)
- LinkedIn: …
## Looking for
Vorschlag zum Ankreuzen: New job opportunities, Freelance projects.