All case studies

Case study · LegalTech · AI for a regulated profession

A cited legal research assistant for law firms

Jurisync · LegalTech · Law firms · Québec and Canada

How Jurisync was designed as a multi-tenant legal AI platform: a research loop with tools, a web search restricted to legal sources, answers in a fixed structure with citations, one isolated tenant per firm — and a roadmap toward a private analysis environment inside the firm.

  • 9 Canadian and Québec legal domains the web search is restricted to
  • 18 row-level security policies across 7 tables
  • 4 successive searches per question in deep-research mode

Status In production

Context

Law is a regulated profession, and legal research in Québec and Canada means reading case law and legislation that a general-purpose chatbot does not know how to find, let alone cite. Lawyers were already using those chatbots anyway — for speed — and getting confident answers with invented references. I wanted an assistant designed for the legal context from the start: recognized sources, the Canadian citation format, a fixed answer structure, isolation between firms, and a clear boundary for confidential case files. Jurisync is that platform, built and operated by my team at SOFT M POWER CANADA for law firms in Québec and Canada, French-first, with an English localization.

Challenge

Three problems had to be solved together. Grounding: every answer had to rest on real Canadian and Québec sources, with citations the lawyer can open and check, and the model had to be prevented from inventing references. Isolation: the product had to be multi-firm from the first day, with each firm’s conversations separated at the database layer rather than in application code. Confidentiality: a public research mode that runs on cloud AI must not become the place where case files get pasted, so the boundary had to be visible in the interface, not buried in terms of use. And a fourth constraint governed the other three — the product had to be honest about what it is: general legal information with sources, never legal advice.

My role

Founder and architect: I defined the market — law firms in Québec and Canada — and the positioning as two distinct modes, a public research mode in the cloud and a private analysis environment inside the firm. I set the multi-tenant model, one tenant per firm, and made the technical decisions that shaped the platform: an agentic research loop with tools rather than a single prompt, a web search constrained to legal domains, row-level security from the first migration, answers in a fixed legal structure, and a local inference node packaged for firms without IT staff. My team built and operates the platform; I directed the technical execution and reviewed each iteration.

Architecture / approach

The two modes are designed as separate spaces, each with its own theme and its own warnings, so that a user always knows where a question is going. In public mode, the question enters a research loop: a large cloud language model can call up to five tools per turn — a web search and reference tools pointing to CanLII, the Civil Code of Québec, LégisQuébec and federal statutes — and each result is folded back into the conversation before the next step. The web search only returns results from nine Canadian and Québec legal domains, with a fallback model. A deep-research mode runs four successive searches and then synthesizes them. Citations are aggregated during the loop, persisted with the message and copied in legal citation format. French system prompts impose the answer structure and forbid invented references.

Technology

A React and TypeScript single-page application with French and English localization; managed Postgres with row-level security — seven tables, 18 policies, security-definer functions — and a trigger that creates the firm’s tenant, profile and default role at sign-up; serverless functions that orchestrate the model calls, run the tool loop and stream answers to the browser over server-sent events; two cloud AI providers, a large language model for reasoning and a citation-oriented search engine, called from the server side only behind a provider abstraction. For the private environment, a local inference node — a Python API in front of open-weight models — packaged in three deployment forms: a container with GPU or CPU profiles, a native installation without containers, and a self-contained offline USB package generated on the fly by a serverless function.

Execution

The platform took shape over roughly six weeks of intense iteration — 41 builds between December 2025 and January 2026 — starting with the bilingual interface and the multi-tenant schema, then the research loop, citations in legal format with one-click copy, and deep-research mode with a confidentiality notice before any attachment. The local inference node went through three forms in that period: a container image first, then a native installation after Windows installer issues showed that firms would not run containers, then a self-contained USB package with preloaded models, iterated seven times in a single day until it installed cleanly on a machine with no internet access. The public research mode is in production; wiring the private conversation to the local node is the next step on the roadmap.

Constraints

Cloud inference means the question and the conversation history are processed by AI providers outside the firm, so the product says so: a permanent banner states that the assistant provides general information and that a lawyer should be consulted, the public mode warns against submitting confidential documents, and a confidentiality notice appears before any file is attached. No claim of compliance with Québec’s Law 25 is made — the platform is designed with its requirements in mind, not certified against them. Canadian legal sources expose no public APIs, so grounding relies on a domain-restricted search and reference tools rather than integrations. And a legal assistant must be bilingual for Québec, French first.

Business impact

What the platform delivers today: a working legal research assistant that answers in a fixed structure with citations drawn from nine Canadian and Québec legal domains, a deep-research mode for harder questions, conversations saved and reopened per user, and isolation between firms enforced by 18 row-level security policies rather than by application code. Alongside it, a local inference node that runs on its own — model server, health check and three installation packages, including one that works with no internet access — and whose connection to the private analysis mode is next on the roadmap. The result is a platform where the boundary between what is public and what must stay inside the firm is a design decision visible on every screen.

Key takeaways

  1. Constrain the search space before you write the prompt: nine trusted domains did more for citation quality than any instruction to the model.
  2. Isolation at the database layer from the first migration costs almost nothing; retrofitting it into a running multi-tenant product is a project of its own.
  3. When inference runs in the cloud, say so in the interface — the boundary for confidential files is a product feature, not a footnote in the terms of use.
  4. Packaging a local inference node for firms without IT staff is harder than building the model server: the installer is the product.
  5. An assistant for a regulated profession earns trust by stating its limits on every screen, not by promising more than it does.