Using Neon Law Navigator
0 / 30 viewedOpen any slide to read it. View them all to unlock your certificate.
Chapter 1
Intro
Learning objectives
The lawyer is always the actor; Neon Law Navigator is the instrument. Each objective is tagged with its Bloom verb:
- Remember — name the four Neon Law Navigator nouns and locate each in the workspace glossary.
- Understand — explain why every glossary noun is a database table.
- Apply — open the seeded Henderson Project and bind its pre-seeded deed template as a notation in a configured AIDA environment.
- Analyze — validate a draft's notation structure and identify the lawyer's checklist findings.
- Evaluate — review a peer's notation and propose one kaizen improvement.
- Create — explain the notarization workflow step and deliver a three-minute demo from a configured workflow channel.
The running matter
The class works one matter together so every example aligns:
- Project — Henderson Bungalow Purchase
- Buyer — Virgo (the value bound to
{{client_name}}) - Property — a single-family residence in Henderson, NV
- Workflow step —
lawyer_review→notarization__pending→notarized(complete)
Who is in the room
This workshop is for Lawyer users of the application: licensed lawyers who work matters for clients. The client in the class is Virgo; Virgo is the person the firm represents on the Henderson Bungalow Purchase matter. You will use the lawyer workbench and AIDA to open the matter, bind the notation, review the checklist, and advance the workflow.
Local KIND presenter rehearsal
Start a fresh worktree environment, source its descriptor, and run the host web process:
cargo run -p cli -- dev worktree-env up --path "$PWD"
set -a; source .devx/env; set +a
cargo run -p neon
Then browse to $NAV_BASE_URL/auth/login. Sign-in lands each tier on its own home — a firm tier on the /app/team
home, a client on /app/projects. The stock local accounts are deliberately different lenses on the same seeded matter:
lawyer@neonlaw.com/passwordis the Lawyer presenter. Sign-in lands on the/app/teamhome; open/app/projectsto see Henderson Bungalow Purchase through Lawyer's firm-sideparalegalparticipation — the workbench lens.client@neonlaw.com/passwordis the client presenter. Sign-in lands on/app/projects, which lists Henderson Bungalow Purchase through the client account'sclientparticipation — the client lens. Its detail has no seeded client Documents, Engagements, invoices, or review documents; those surfaces remain empty until a later exercise creates and releases them.
lawyer and client are system roles; paralegal and client above are per-Project participation descriptions. Do
not use the now-unnecessary navigator dev grant-lawyer step for this fresh seed: it remains harmless for the browser
harness, but it does not add project membership. Re-login after changing any role or participation.
How Neon Law Navigator works
Neon Law Navigator grounds your LLM output in a deterministic, shared glossary backed by database tables. The noun ladder:
- Project — the matter ("Henderson Bungalow Purchase").
- Template — a markdown blueprint with
{{placeholders}}and a workflow declaration. - Notation — one Person bound to one Template inside one Project, advancing through a workflow.
- Workflow — the state machine the Notation walks.
- Signed — the lawyer's own work product.
Matter files: portal for clients, workbench for lawyers
Every Project also has a matter file surface. Clients see it as Documents, Engagements, Invoices, and other plain-English portal views. If a person is added to a Project, Navigator can show them the client-facing files for that matter; if they are not added, those files do not exist from their portal's point of view.
Lawyer users have the firm workbench. Assigned lawyers work the Project through /lawyer. Admins are lawyer-tier users
with installation-wide authority, so they can reach the same firm workbench without per-Project assignment. Clients
never need that layer and never see the private GCS bucket behind the files.
The Shared Drive and Project repository map
The firm's Projects Shared Drive is the production matter-file root. Its top-level folders are Navigator Project
codes, not display titles: a matter whose code is henderson-bungalow-purchase lives at
Projects/henderson-bungalow-purchase/. A code uses only lowercase letters, digits, and single hyphens; Navigator
requires it when a Project opens because the name is an equality check, not a display-name normalization.
The same convention is deployment-owned rather than guessed from a laptop or a repository:
| Deployment | Shared Drive root | Organization |
|---|---|---|
| Neon Law production | Projects | neon-law |
| Neon Law staging | Staging Projects | neon-law |
| Neon Law Foundation | NLF Projects | neon-law-foundation |
The organization is configuration rather than a name in Navigator's source, and one string means two different things
across the two vocabularies: the organization neon-law is staging, while the GCP project neon-law is production.
The organizations are named for the entities and the GCP projects for the deployments.
A Project has one repository and one portal, and both are the code. That matter's source lives at
neon-law/henderson-bungalow-purchase, holding its notation templates under templates/ and its client portal under
portal/, and Navigator serves that portal at /app/projects/henderson-bungalow-purchase/portal/ — the repository name
plus one literal segment. Nothing is composed, so nothing has to be parsed back apart, and there is no manifest anywhere
restating a name the repository already carries.
Drive holds the firm's legal working files and Navigator holds the matter record and asset provenance. Project repositories hold source only: never client uploads, answers, generated legal documents, secrets, dependencies, or build output. When CI publishes approved Project-scoped template or application output to Drive, it resolves the matter folder from Navigator rather than from a repository-supplied folder ID, writes one way, and records the publication for audit. A hand edit to that published output is drift, not a source change. Project participation grants Navigator and deployed-application access; it never grants GitHub Enterprise access.
Chapter 2
Build the Notation
Install (no install)
The class uses Gemini's "Add AIDA" connector. About ninety seconds:
- Open your Gemini workspace and click Add connector. Paste the workshop's connector URL (the instructor will display it). Authenticate with your firm Google account, and confirm.
Sign in as yourself
The connector URL is not access to the firm's matters. AIDA acts as the person who signed in:
- Gemini sends Navigator the Google OAuth token for the firm account you selected; Navigator verifies it, then looks that email up in its own people record.
- Only a person recorded as
lawyeroradmincan use AIDA's matter tools. You cannot gain that role by asking AIDA. - Denied during class? Sign in with the lawyer account the instructor provided, or ask them to check your role.
Tool calls are just prompts with specific words
Every "tool call" is a regular Gemini prompt with one or two words that route it through Neon Law Navigator. Try one:
"AIDA, list my projects."
Build the template
Write a small markdown template for a deed of sale. The minimum body for the class:
# Deed of Sale
This Deed is made between {{client_name}} ("Buyer") and the named Seller for the property described
herein. Choice of law: Nevada. Buyer's signature must be acknowledged by a Nevada notary public under
Nevada's Uniform Law on Notarial Acts (NRS 240.161 to 240.169).
Buyer: ______________________
Date: ______________________
Run the transactional checklist
The checklist is the same list you run in your head: choice of law, privilege, confidentiality, active voice, inclusive
language. aida_validate_notation can report structural notation diagnostics for supplied Markdown; it is not a named
transactional-checklist service and it does not save the draft.
"AIDA, validate this notation Markdown and show the diagnostics."
Kaizen — share what you found
Kaizen (改善, Imai 1986) is the principle of small, iterative improvement. Each checklist pass that surfaces a failure is one kaizen step.
Chapter 3
Keep the Attorney in Control
When AIDA asks before she acts
One rule on the A2A connector: reads run, writes wait. A write pauses and asks first:
"Authorize this action? AIDA wants to Send Welcome Email for Virgo… Reply yes to authorize, or no to cancel."
When an answer is wrong, send it back — don't start over
Review is not only approve or decline. A third choice keeps the matter moving:
- Flag the specific answers that are wrong, add a note, and send it back. Only those get re-collected — by the client from their portal, or by your paralegal on their behalf — and it returns to your desk for review.
Answers and questions are two different things
You are correcting an answer, not re-opening the questionnaire:
- Only the answers you flagged are re-collected. Every other answer stays as it was, and the matter never re-walks the whole intake.
- The paper stays pinned. Correcting an answer does not swap the template version the matter opened on — the bytes you review are the bytes the client signs.
The conflict check runs before every new matter
When you create a Project, Navigator runs a conflict check first — before the matter exists:
"Conflict check flagged this matter for review: shares a party with a current client's matter. Confirm you have reviewed these findings and are authorized to proceed."
Chapter 4
Complete the Matter
Notarize and demo
In a configured workflow channel, advance the notation: lawyer_review → notarization__pending → notarized (complete).
The stock local KIND rehearsal does not include a Gemini connector or a configured reply-email channel, so do not
present this as a browser-only local action. For the three-minute demo:
At lawyer_review, reply to the conversation's token address with these two command lines:
@link <notation-id>
@approve
@link connects the conversation to the Notation. @approve then fires the workflow's approved condition.
- The matter ("Henderson Bungalow Purchase, buyer Virgo").
- The template you wrote (show the markdown).
- The notation you bound (show its returned notation record and the source template).
- The one checklist failure you found and fixed.
- The workflow advance to
notarized.
Why this matters
A harness — a deterministic checklist applied every time — is how routine legal work gets cheap enough to reach the people priced out of it today.
Chapter 5
Take It to the CLI
Run your own — and drive it from the command line
This workshop used the "Add AIDA" connector. When you are ready to run your own Neon Law Navigator, the Deploy the
Neon Law Navigator workshop stands up the same stack on your own Google Cloud project
— and once it is live, the navigator CLI drives it from your terminal:
navigator site login --host <your-host> # mints a short-lived token
Form a Nevada LLC from the command line
The same CLI forms a real Nevada LLC end to end — no browser — and downloads the filled official Nevada Secretary of State packet:
navigator site login --host https://your-firm.example
navigator site notation create nv__llc_formation --client-email libra@example.com
navigator site intake answer <notation-id>
navigator site notation status <notation-id>
navigator site notation approve <notation-id>
navigator site notation document <notation-id> --out llc.pdf
Walk a questionnaire like a text adventure
intake answer is a guided loop: it shows one question, you answer it, it shows the next — a text adventure through the
matter's questionnaire.
navigator site intake answer <notation-id>
Chapter 6
Vibe Code the Navigator
Your installation publishes its own schema
You do not need to read Rust to build against your matters. Your installation documents itself:
https://<your-host>/app/api/openapi.json— the OpenAPI 3.1 document for every/app/api/*endpoint.https://<your-host>/app/api— the same document rendered as Swagger UI.
Sign in first, then open the second one. Then paste the first one into a coding agent and describe the screen you want.
Two doors — /api for a page, /mcp for an agent
Same database, same authorization, two shapes:
| Door | Protocol | Call it from |
|---|---|---|
/app/api/* | REST over JSON, described by /app/api/openapi.json | A page, a script, anything speaking HTTP |
/mcp | JSON-RPC 2.0 over MCP Streamable HTTP | An LLM client — Claude, Gemini, LibreChat, your own agent |
/mcp advertises fourteen tools, all namespaced aida_: aida_list_projects, aida_create_notation,
aida_validate_notation, aida_answer_notation, aida_show_person, and the rest.
A first application is about fifteen lines
Point a fetch at your own host and read the tool catalog back:
const res = await fetch("https://<your-host>/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "tools/list",
}),
});
const { result } = await res.json();
console.log(result.tools.map((t) => t.name));
Swap tools/list for tools/call with {"name": "aida_list_projects", "arguments": {}} and you have your matters.
Vibe the screen — do not vibe the rules
Prototype freely on one side of the line, and call Navigator on the other:
- Vibe this. Layout, interaction, the empty state, the error state, what a report looks like when you print it.
- Call Navigator for this. Who may see it, what a valid notation is, what a signature means, what gets recorded.
Two rules travel with every prototype: no client data, ever — invented or firm-owned names only, and reserved example domains for any address — and your prototype is a specification, not a shipment.
Ship it as a Project's client portal
A React application can also live beside a matter, at a route Navigator owns:
/app/projects/<project-code>/portal/
One Project, one portal. The path is the Project code plus one literal segment, so the mount is derivable from the repository name alone — there is no application name for anyone to choose, register, or guess.
The line your application does not cross
Everything you build is a non-lawyer assistant under ABA Model Rule 5.3 — the same standing AIDA has. It may read, draft, summarize, and check your work. It does not:
- sign, file, or send;
- advance a workflow step;
- decide who may see a document.
Those are acts an attorney takes deliberately, through Navigator, which records that the attorney took them.
Chapter 7
Prepare the Room Before Class
Seat every attendee before the first login
Everything above is what an attendee does in class. This section is for the person running it — the environment operator who seats everyone before anyone signs in. The attendee arc is arrive as a client → get promoted → work an existing matter → then open your own, and it only holds if the room is prepared first. Five steps, once per class:
- Start a development environment. Deploy the Neon Law Navigator stands up a
disposable
devinstance — local KIND for a dry run, or a cloud staging lane for the room itself. It is throwaway by design, so deleting and recreating it between classes is cheap. - Confirm the stock dry run before seating a cohort. A
devenvironment applies the disposable development portfolio automatically on boot — there is no seed command to run. Sign in aslawyer@neonlaw.com/password, then open/app/projectsand confirm Henderson Bungalow Purchase. Sign in separately asclient@neonlaw.com/passwordand confirm the same matter in/app/projectsthrough the client lens. The client account's detail files are empty until an exercise creates them. If both lists behave that way, the local room is stocked. - Seat each attendee — a Rauthy identity and a Navigator person on the same email. The two stock accounts are for a
local dry run only. A class cohort still needs its own identities and matching People: sign-in is operator-mediated:
an authenticated email with no pre-seeded person is refused, so pre-provisioning is the only door in. For each
attendee, create a Rauthy user and a Navigator person (
/admin/people/new) that share the same email address — email is the join key. Seed them asclient; the promotion comes next. Attendee emails are real contact data, so they live in the running environment only and never in the repository. - Promote and disclose membership through the people surfaces. Promote each attendee to
lawyerfrom the people console, then add them to the Henderson matter through the project's people surface. The participation ledger is the access grant: record a firm-side participation for every lawyer or Clerk before they open the matter; the accountable lawyer is the one whose participation row carries theis_lawyer_drimarker, so naming the lawyer DRI and recording their participation are one act. Do not treat role promotion or a disclosure/conflict record as a substitute for Project participation. Assignment is deliberate: a lawyer user with no project participation sees an empty workbench — only an admin sees every matter unassigned. Assigning the attendee to the seeded matter is what turns "work an existing matter" from a slogan into a populated screen. - Verify before the doors open. Have each lawyer attendee sign in once and confirm the lawyer workbench lists the Henderson matter. Verify the Virgo client lens separately: it lists the matter, while empty client-file sections are expected until an exercise creates approved client-facing artifacts. A green login and the scoped lawyer workbench are the signal that the room is ready.
Chapter 8
Wrap Up
You finished — claim your certificate
Enter your name and email and the Neon Law Foundation will send a PDF certificate of completion.
We use your email only to send this certificate.