Skip to content
SemCue

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

7 h 16 min52 changes in one working day

Each stroke on the scale is one change

  1. First change of the day
  2. The cabinet becomes the working replacement for managers
  3. Avito joins the shared inbox
  4. Changes flow both ways: sync switched on
  5. Deleting deals and merging clients deployed
  6. “Template” and “Payment link” buttons ready
  7. Payment reminders ready
  8. Reminders live for Art Quest

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

Managerdeals, conversations, payment
amoCRMoutage in the main CRM

Evening of 20 October

Managerdeals, conversations, payment
The company cabinet4,186 deals, reconciled with zero discrepancies
amoCRMreceives the cabinet’s changes

exchange every 10 minutes

One inbox
  • VK
  • MAX
  • Telegram
  • Avito
Clientgets a payment link and a reminder in the same conversation
The manager’s path on the morning and the evening of 20 October. Times on this page are Tashkent time.

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
747 conversations in one inbox as 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.

Deal card: stage bar, deal fields, client with a Call button, today’s task and stage history
Demo stand with fictional clients: the deal card where a manager edits the stage, fields and tasks. Captured on the code from before 20 October; interface translated for this page.

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.

Art Quest · Telegrampayment reminder
  1. A reminder about your booking’s prepayment: the link is valid until 18:40.

    Pay: short link

    If you have already paid, please ignore this message.

    Payment reminder · arrives in the same conversation until the booking is paid
Typeset from the reminder template; the time and booking are fictional.

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
Deals board: In progress, Won, Lost and Overdue tasks tiles above stage columns with totals
Demo stand with fictional clients: the working deals screen, by stage; interface translated for this page.

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

Next system

Four messengers in one window and payment in a click →

SemCue / Let’s talk

What would you like to work on?

Tell us about your project and what you need. A rough idea is enough.

Get in touch on Telegram

We’ll discuss your goals, where things stand and the right next step.

Discuss your project on Telegram
In developmentThis site is still being built, so things may change.