Web app · documents · DOCX and PDF
Proposal and contract generator
The deal is ready, but the manager assembles documents from old files: copies company details, recalculates amounts, writes them out in words and sometimes gets the tax ID wrong. Here documents are built from a single form using templates: amounts, VAT and amounts in words are calculated automatically, the tax ID is validated by its check digit, and a document with a typo won’t export.
Scenario: Zerno roastery — fictional — sells coffee, gear and barista training to coffee shops and coffee-to-go kiosks.

Open the demo
Best on a computer: the form and the A4 page are side by side. On a phone they’re in tabs.
The app runs in your browser: nothing is sent to a server.
What the demo shows
How to try it
Choose a buyer
A coffee shop (LLC) or a “Coffee to go” kiosk (sole proprietor) — the details are filled in, and the proposal appears on the right.
Build the order
Add items from the catalog, change the quantity, discount and VAT — the amounts and the amount in words are recalculated on the page.
Switch the template
“Contract” — a supply contract with a preamble and an appendix; “Invoice” — an invoice with bank details.
Export the document
Word, PDF or JSON. Try the buyer “With a tax ID typo” — the export won’t go through, and the cursor jumps to the field with the error.
No paid neural networks
Documents are assembled from templates without a neural network — amounts and company details in documents need precision, not guesses. The details of Zerno and the buyers are fictional but pass check digit validation. In a production project a language model can suggest the order contents from the conversation with the customer, and the manager checks and sends it.
The demo runs without OpenAI, YandexGPT or GigaChat API keys. Wherever a production system calls a model, there’s a local stub with the same interface — so the demo is free, always available and never makes things up.
What a production project adds
- The form is filled in by a bot or the CRM: a deal from amoCRM or Bitrix24 becomes documents in one click
- The company’s Word templates with your details, stamp and signature
- Buyer details by tax ID from the tax service or DaData, not by hand
- Numbering, version history and sending documents to the customer in Telegram, Max or by email
Stack
- All demos by stack:
- React
- TypeScript
- React 19
- TypeScript
- React Hook Form
- zod
- docx
- Vite
Developer’s comment
Anton Goncharov
AI systems developer · Python
For business
- The proposal, contract and invoice are built from one form in a couple of minutes, without copying company details from old files.
- Totals, VAT and amounts in words are calculated automatically, and a document with a wrong tax ID simply won’t export.
- All managers’ documents look the same — the company looks more solid.
For developers
- The form uses React Hook Form with a zod schema: tax ID and KPP are checked by check digits, and on error the cursor jumps to the field.
- DOCX is built with the docx library right in the browser, PDF by printing an A4 page.
- Amounts in words and detail checks are a shared package with tests used by other demos too.
Tips
Tip 01
Count money in kopecks as integers: floating-point rounding errors will sooner or later end up in an invoice.
Tip 02
Keep the document template separate from the data: a lawyer edits the text without a developer.
Want the same for your business?
Tell me about your task — I’ll tell you what from the demo fits, how long it will take and what I’ll need from you.
Other demos in this section
All demos- live
Web app · speech recognition · neural network in the browser
Voice request
A customer dictates a request by voice, and the manager gets a ready card: name, company, phone, budget, timeline, task and a score — hot lead or not. Speech is recognized by Whisper right in the browser.
- React
- TypeScript
- In-browser neural network
- live
Web app · call in the browser · speech recognition and synthesis
Voice delivery operator
A robot takes phone orders instead of the host: it listens, asks again, checks the address against delivery zones, totals the order and reads it back before confirming. The call runs right in the browser — a “Call” button, no phone number.
- React
- TypeScript
- In-browser neural network
- live
Web app · speech recognition · sales team quality control
Call speech analytics
A sales call becomes a transcript by role, a score against the script and a completed deal card: customer, contacts, interest, the quoted price, the next step and a task for the manager. Speech is recognized by Whisper right in the browser.
- React
- TypeScript
- In-browser neural network
- live
Web app · B2B · proposal in PDF
Price configurator
A manager builds an order for all the windows in an apartment: type, size, sashes on a diagram, profile, glazing unit and color. Production rules are checked instantly, discounts and installments are calculated automatically, and a numbered proposal goes out as a PDF.
- React
- TypeScript
- live
Web app · finance · comparison
Mortgage calculator
Five bank programs on one screen: which suit the client and why the others don’t. A developer-subsidized rate, differentiated payments, early repayment, debt-to-income ratio and the tax deduction.
- React
- TypeScript
- live
Web app · estimate · PDF
Renovation estimate calculator
Room dimensions turn into floor, wall and ceiling areas, and those into work by stage. Labor and materials separately, the timeline based on crew output, a payment schedule and estimate versions for negotiating with the client.
- React
- TypeScript
- live
Web app · storefront · checkout · orders
React SPA catalog
A whole store in the browser: search with suggestions and keyboard layout correction, facets with live counters, links to any filter, favorites, a cart with a promo code and checkout with a delivery slot. Orders are visible in “My orders” with statuses and can be repeated or cancelled.
- React
- TypeScript
- live
Machine learning in Python · runs in the browser
Marketplace review analytics
Reviews from Wildberries, Ozon and Yandex Market via the seller API: scikit-learn models determine sentiment and what buyers write about, an alert fires in the first week of a complaint spike, new topics are discovered automatically, and replies go back through the marketplace API. The models train right in the browser.
- Python
- React
- TypeScript
- live
Website widget · vanilla JS · one line
AI consultant widget
A consultant for any website, installed with a single line: it answers from a knowledge base with a link to the source, collects requests and calls an operator. Written in plain JavaScript without frameworks — the whole widget is 21 KB gzipped.
- Vanilla JS
- live
Website widget · vanilla JS · leads
Quiz lead form
A quiz instead of a long form: six questions with branching and a price estimate at the end. The manager gets a lead rated “hot / warm / cold” with its ad source, and the “Analytics” tab shows at which step people leave.
- Vanilla JS
- live
Python backend · webhooks → amoCRM and Bitrix24
Lead integration hub
Leads from the website, ads, calls, email and bots arrive at webhooks, are normalized, checked for duplicates, routed to managers and delivered to amoCRM and Bitrix24 — with retries when the CRM is unavailable.
- Python
- React
- TypeScript
