01 · AI agent and web service · 2026

Instanciya

A service that prepares formal complaints to Russian government bodies. Someone describes the situation in their own words and gets a document with real statutory references, in PDF and DOCX, with instructions on how to file it.

Open the service — zakon-vashe-pravo.online

Role Whole cycle: product, backend, frontend, legal database, payments, server
Timeline One week to production
Legal database 154 provisions from 26 acts, seven authorities
Stack Next.js 16 · React 19 · TypeScript · Prisma · Claude API

The problem

Someone cheated by a shop, or left without heating for a month, usually knows they are in the right but has no idea where to write or how. Templates found online cite versions of laws that were repealed years ago, and a complaint sent to the wrong authority comes back unexamined.

Asking an ordinary chatbot is worse: it will happily quote an article number that does not exist. The person signs the document and answers for it themselves — so an invented reference in it is unacceptable in principle.


What was built
01

A conversation, not a form

People write as best they can: "bought a fridge, it does not cool, the shop refused". The agent asks five to seven clarifying questions — one at a time, in plain words, and only the ones whose answers the document actually needs.

02

The authority follows from the substance

Consumer protection, the housing inspectorate, the prosecutor, the police and three more. A mistake here costs more than any other: a complaint filed with the wrong body is returned, and the clock keeps running.

03

The filing deadline is computed by code, not by the model

The model names the date of the violation and the applicable rule; a separate module does the arithmetic. If the deadline has passed, the service says so plainly and suggests what can still be done — rather than producing a document nobody will accept.

04

Three document types, and the choice is explained

A pre-court claim to the offender, a complaint to a supervisory body, a complaint about inaction to the prosecutor. Most people do not distinguish a claim from a complaint, so the default is "not sure — pick for me": the agent proposes the type and explains why.

05

A finished file, not text in a box

PDF and DOCX with the mandatory formalities, a list of attachments and instructions: where to take it, what to attach, how long to wait for an answer. The draft and the preview are free — payment is only for downloading.

How it started
The Instanciya landing mockup, drawn before development
First screen: the promise and a sample of the finished document
Analysis screen mockup: authority, applicable norms and the limitation period
Analysis: authority, applicable provisions with quotations, limitation period

Why the agent cannot invent statutes
01

The model does not write numbers — it picks from a list

At the analysis step the model receives candidate provisions as identifiers and returns only those. The article number, the quotation and the details of the act are substituted from the reference database. The model physically cannot write out an article number: it has no such field.

02

Unknown identifiers are discarded

Anything absent from the reference database is silently dropped on the way in. Even if the model invents an identifier, it will not become a citation. What was rejected is shown to the applicant on the analysis screen — so that it is visible rather than hidden.

03

The factual part contains no citations at all

The model is explicitly forbidden to mention article numbers: it writes only facts and demands. The legal grounds are added by a template from the already-selected provisions. If the ban is breached anyway, a regular expression strips the citation — so the safeguard does not depend on the model obeying.

04

Every paragraph is tied to the applicant's own words

The model must attach verbatim fragments from the person's answers to each paragraph, and the code checks them against the original text. A paragraph without a confirmed source is marked unverified. A live audit found exactly what this was built for: "I do not remember the reason for the refusal" was turning into "I was not told the reason".

Result

The service runs at zakon-vashe-pravo.online: the draft, the questions, the choice of provisions and the preview are free, and a subscription is needed only to download the files. One week from the first line to a production server — and the legal part here is not decoration but the thing the applicant answers for with their signature.


Similar problem? Tell me in one message.