Art Quest · Horror Cinema · MORPHEUS
A working CRMin one day.
On 20 October 2026 the company’s main CRM suffered an outage. Between 11:13 and 18:29 Tashkent time we turned the company’s cabinet from a copy of its deals into a working CRM. The same 4,186 deals, conversations from four channels, changes flowing both ways, payment links and reminders for clients. That is 52 changes in one working day.
Live · since 20 October 2026 · payment reminders switched on for Art Quest at 18:29 Tashkent time
20 October 2026 · Tashkent time
Each stroke on the scale is one change
- First change of the day
- The cabinet becomes the working replacement for managers
- Avito joins the shared inbox
- Changes flow both ways: sync switched on
- Deleting deals and merging clients deployed
- “Template” and “Payment link” buttons ready
- Payment reminders ready
- Reminders live for Art Quest
- 7 h 16 minfrom the first change to reminders going live20 October, 11:13–18:29 Tashkent time
- 4,186deals in the cabinetreconciled with the main CRM: 0 discrepancies
- 4 channelsin one inboxVK, MAX, Telegram, Avito
- 155–195 hestimated effort for a CRM like thisor 8–10 calendar weeks; the foundation took 2 h 50 min
Morning: an outage in the main CRM
On 20 October the company’s main CRM suffered an outage. Clients write in four channels, and managers needed a place to answer them.
The company already had a cabinet holding a copy of its deals, and since 19 October its Inbox had been reading MAX, Telegram and VK, with replies to clients switched off. Managers still did their daily work in the main CRM. The goal for the day: the managers work in the cabinet.
The same deals, the same conversations, payment for clients. And every change must reach the main CRM, so the two systems never drift apart.
Morning of 20 October
Evening of 20 October
exchange every 10 minutes
- VK
- MAX
- Telegram
- Avito
The first hour: the same deals
At 11:20 a transfer from the main CRM pulled in the latest data: the cabinet held 4,186 deals, and reconciliation found 0 discrepancies. The transfer runs every 10 minutes.
By 11:22 the cabinet was fixed as the working replacement for the duration of the outage. Managers received access, and replies to clients were switched on for MAX, Telegram and VK.
- 4,186deals in the cabinetmorning of 20 October
- 0discrepancies in reconciliationevery deal in place
- 10 minbetween updates from the main CRMscheduled transfer
Four channels in one window
By 12:27 Avito joined the shared inbox. From then on clients in VK, MAX, Telegram and Avito are answered from one window.
The window behaves like a messenger: Enter sends the reply and new messages appear by themselves. The reply goes out in the channel where the client wrote.
- Reply
One screen for four channels
The manager sees the whole conversation and the client’s deal side by side.
- Write first
By phone number in MAX and Telegram
The cabinet finds the client and the deal, or offers to create a new one. We checked the first message in MAX live: delivered.
- Sort the flow
The extras leave the queue
The buttons “No reply needed”, “Spam” and “Change deal” clear the list. A bot’s reply also counts as an answer.
- 515conversations from VKas of 29 October
- 138conversations from MAXas of 29 October
- 72conversations from Telegramas of 29 October
- 22conversations from Avitoas of 29 October
Changes flow both ways
Before switching on we tested the exchange on a test deal. The stage, budget, note and task from the cabinet reached the main CRM. A budget changed there later came back to the cabinet. The echo duplicated nothing.
At 12:43 the sync went live. The rule was chosen together with the company: if a deal is edited on both sides, the later edit wins. It decides field by field, so a budget from the cabinet and a stage from the main CRM do not erase each other.
- 1
Only the cabinet changed it
The edit stays in the cabinet and goes to the main CRM.
- 2
Only the main CRM changed it
The cabinet takes its value at the next exchange.
- 3
Both changed it
The later edit stays.
- 4
The lead was deleted in the main CRM
The decision is final: the deal in the cabinet gets the “deleted” stage.
The cabinet sends only what differs from the last agreed state. A repeat run duplicates nothing. It calls the main CRM no more than twice a second.
By 13:08 two more functions went live: “Delete a deal” and “Merge clients”. Test and spam deals are now deleted, and a person who wrote from different messengers becomes one client. Both took about 1 h 15 min. At first the transfer from the main CRM overwrote the merges. We spotted it in testing and fixed it in the same release.

A payment link and a reminder for the client
By 13:45 two buttons appeared in the reply box: “Template” and “Payment link”. 16 templates came over, all from the main CRM. A manager answers with ready text and adds a short prepayment link. Both buttons took about 1 h 20 min.
Clients forget to pay, so the cabinet reminds them itself when the link was issued from the cabinet. For a link valid for one to two hours, a reminder goes out 30 and 10 minutes before it expires, in the same conversation and channel. Before each reminder the system checks the booking: if it is paid, the remaining reminders are cancelled. Nothing goes out between 22:00 and 09:00 Omsk time.
A reminder about your booking’s prepayment: the link is valid until 18:40.
Payment reminder · arrives in the same conversation until the booking is paid
Pay: short link
If you have already paid, please ignore this message.
The first test run exposed a fork: in the test the conversation was closed and the deal deleted, and the reminder was cancelled. For a deleted deal that is right. But closing a conversation means removing it from the list, not turning the client away. The fix was made at 16:55.
The second run on a test booking went all the way: both reminders arrived, at 18:01 and 18:21. At 18:29 the reminders went live for Art Quest. Up to deployment they took 1 h 05 min.
Pace: a day against the plan
A plan for a CRM like this was estimated at 155–195 hours of work, or 8 to 10 calendar weeks. We built the foundation on 15 October in 2 h 50 min of working time: core, transfer, screens.
On the 20th four features were added to it, the ones you cannot work without when you replace the main CRM. All four took about 5 hours of working time in total by the time log; the sessions partly ran in parallel.
- 1 h 15 min
Two-way sync
The rule, the exchange both ways, a test deal, switched on at 12:43.
- 1 h 15 min
Delete a deal and merge clients
Two functions, two migrations, deployed by 13:08.
- 1 h 20 min
Payment link and templates
16 templates from the main CRM and a short prepayment link in the reply box.
- 1 h 05 min
Payment reminders
Code, migration and deployment by 16:25, then test runs and live mode at 18:29.
- 52changes in 7 h 16 minone every 8 minutes on average
- 8database migrationsnumbered 0048–0055
- 17,231lines added across 124 filescode, tests and documentation, 20 October
Nine days later
By 29 October the cabinet holds 4,312 deals (one of them deleted) and 9,723 client records. The cabinet’s inbox holds 747 conversations from four channels.
The exchange with the main CRM works: 12 cabinet records reached it through the send log, each marked done. The log remembers what went out and when, so after a network failure a record is never sent twice.
- 4,312deals in the cabinetas of 29 October, one deleted
- 9,723client recordsas of 29 October
- 747conversations from 4 channelsas of 29 October
- 12records sent to the main CRMsend log, marked done

How it was built
How the day went
We worked in short loops: a rule, code, a check on a test deal, a release. Every feature went out with a way back. Sync can be switched off by one setting from the next cycle. Reminders went live in steps: off, test, live.
Where the two systems could disagree, the company chose the rule. That is how “the later edit wins, field by field” came about.
- The companyThe rule for double edits, what to delete and merge, when to switch reminders on.
- SemCueSync, the inbox, payment links, reminders, checks and releases.
- ManagersReceived access and the ability to answer clients from the cabinet.
For technical readers
For technical readers
- Database
- PostgreSQL. 8 migrations in a day: “No reply needed”, first message by number, sync, spam, deal deletion, client merge, templates, reminders.
- Sync
- A three-way merge against the last agreed state, a send log, lookup of the record after a failure, echo protection, no more than 2 requests a second to the main CRM.
- Inbox
- Per-channel sending policies for MAX, Telegram, VK and Avito. First message by phone number in MAX and Telegram.
- Reminders
- A worker task every 30 seconds, a receipt for each link-and-deadline pair, and a repeat pass sends nothing twice. Modes: off, test, live.
- Way back
- One setting switches the sync off, and the reminders stop in “off” mode.
Where the numbers come from
Where the facts come from
- The change history for 20 October 2026: 52 changes with the time of each, 8 migrations and the volume of changes.
- The write-up of the transfer from the main CRM and the two-way sync: reconciliation result, merge rules, switch-on time.
- The write-up of the inbox and payment reminders: schedule, test run, modes.
- The time log for 15 and 20 October 2026: working time per feature and the estimate for the CRM plan.
- Database counters of the cabinet as of 29 October 2026: counts only, no content.
- Captures come from a demo stand with fictional clients. Times on this page are Tashkent time unless stated.
Next system
Four messengers in one window and payment in a click →