The Story of SGMsoft

[Версия на русском]

I am Sergey Shurygin, founder and CEO of SGMsoft. In this post I’d like to share the company’s story with you.

It took a while before an idea to create an IT business came to my head. By 2013 I had been working in OTP Bank Russia for 5 years supervising implementation and development of online banking solutions for private individuals and credit card technologies. I felt I needed another challenge that would help me gain expertise in other business fields. And in the summer of 2013, after I came across a frustrating level of service trying to order delivery of a bouquet, I decided to create the best online flower delivery service in Moscow and purchased that was having a tough time then. A lot of work had to be done: I needed to create a new flower workshop from scratch, a new courier service, replace the entire catalog and totally automate all business processes from ground up, so that every employee (florist, call-center operator, courier, manager and the owner) had all the information he or she needed to make the right decisions in real time. For example:

  • current remainders of flowers in stock must define availability and the minimal time of delivery for every bouquet in real time taking into account similarity of flowers (i.e. which flower can be replaced with which ones, and which of these replacing flowers are now in stock);
  • when flowers come to the stock, the system must automatically re-calculate the cost of bouquets and notify the manager immediately if bouquet prices for customers must be increased to retain the margin or decreased to avoid overpricing (based on the financial model built into the system);
  • manager and the owner should have instant access to information about profitability of each order/bouquet with client acquisition costs taken into account; at the same time, reporting datamarts must be separated from the website and CRM to avoid degrading of their performance during pre-calculation of data aggregates;
  • inbound calls must be dynamically distributed among vacant call-center operators located all over the country; during an inbound call the operator must be able to see client’s name, turnover, flower preferences before even picking up the phone (based on inbound phone number); if all operators are busy, there must be a queue with appropriate message and an opportunity to order a call back or leave a message; all calls must be recording with an opportunity for the manager and operators to play recorded calls over the internet anytime;
  • routing module must allow the operator to assign 100+ orders to appropriate couriers in less than 30 minutes based on orders’ delivery time and addresses and current couriers’ location;
  • couriers must have a mobile app with GPS-tracking showing orders’ addresses in the correct sequence, with automatic routing and one-click phone call to the recipient of any scheduled order; it must also allow the courier to upload photo of the recipient right into the system, so that it appears in the client’s My Account straight after the delivery was fulfilled.
  • and so on; the list was long.

After I studied existing IT solutions (CMSs, CRMs, inventory management software and marketing automation services) I came to an interesting conclusion: each of the systems could do somewhat I needed, lots of things I didn’t need, they required integration and lots of customization far beyond their standard functionality. Despite the first iteration with ~70% requirements fulfilled could be launched rather quickly and within a small budget, implementation of the second iteration with +20% more of the required functions would take hiring rare and expensive specialists to perform development in the systems and a budget comparable to that of the first iteration, while the rest 10% did not comply with the systems’ architecture and was suggested to be either postponed or developed in the form of a standalone custom system integrated with the other ones.

I was reluctant to take that compromise and postpone the most complex functionality, as on a mature market leaders already have a high level of automation, and these 10% is the part of their competitive advantage allowing them to handle large amount of orders with a compact team. And it would be naive to hope for successful competition with larger players while having weaker technology and lower automation, especially taking into account higher costs of flowers for us (due to lower turnover).

Meanwhile, I was studying option #2: development of a fully customized e-commerce solution with CRM and inventory management functionality by a single team. Two of the top web-technologies drew my attention: Yii2 php-framework for the server/backend part, and AngularJS JavaScript-framework for the CRM frontend in form of an SPA1, as it promised maximum employee efficiency due to faster response from the system’s interface).

After I compared implementation timing and TCO2 of the options, I came to a rather unexpected conclusion: development of a custom-tailored solution that fulfilled 100% of my requirements would have cost less (about 3 times) and could be implemented around 2 times faster that option #1. And as the project scope or planning horizon grew, the difference increased.

Packaged products have two common drawbacks to be always kept in mind:

  • they are limited by their business architecture, which not always suits a particular business, while customization outside their architecture may not only be severely expensive but can also cause resistance from developers, as its complexity may exceed their competence (you may start hearing ‘impossible’ a lot);
  • packaged IT products with rich functionality are usually a result of several years of implementations with gradual enrichment based on customer feedback, which means that such systems are usually built with technologies that were popular 4-6 years ago that are much less efficient when used for development of large amount of custom-tailored functionality than now-a-days open source web-platforms. And the bigger a packaged system is, the more technologically obsolete it is.

So misapplication of packaged systems in projects with large amount of custom functionality and customer’s commitment to continue fine-tune the system may result in way higher costs as opposed to costs of custom development (taking into account the costs of integration and maintenance of the resulting IT landscape).

That’s why, in my project I picked the option of custom development. Now I had to decide whether to do it with an outsourcing partner or to hire my own developers. Since web development is a core expertise for an online business, it looked rational to develop this expertise inside the company. However, very soon it became evident that in real life it is close to impossible to gather a rock-star band for a one-off project, without a clear development strategy in part of IT that would guarantee more projects of a larger scale and on more up-to-date technologies. Enthusiastic developers that want to make a difference favor committed IT companies that share their values and passion.

So till the fall of 2014 we used outsourcing for development, and spent lots of time trying to find a reliable, transparent and committed IT partner with a strong expertise in web-development. Eventually, I had to dismiss two contractors before we formed a stable freelancer team, and the flow of project became more predictable. However, I still had to do all the analytics: due to the lack of demand for these labors, compact teams tend to have quite weak expertise in designing the system in details based on the target business processes from the customer and managing requirements and risks of their change throughout the project. This may result in multiple iterations of reworking the business logic, which can nullify cost saving from lower costs for such teams, as opposed to working with higher priced teams with proficient analysts. Nevertheless, issues with finding the right partner gave me a clear clue that the niche of reliable IT partners persevering in helping their clients reach their business goals was not yet saturated.

A turning point in self-identification occurred in the fall of 2014 when oil prices dropped and the ruble dramatically weakened causing hourly rates of Russian coders to drop 2 times, which made them more competitive on the world’s market. This was a clear opportunity to realize my dream and ambition to gather IT perfectionists obsessed with coding and become part of the ongoing technological revolution in custom software development at the global scale. Our team of freelancers was hired fulltime under a separate brand – SGMsoft. Guys’ experience and skills gained during development of’s CRM and their other similar projects were in such demand that in 1,5 years SGMsoft’s profit exceeded 4 times that of, the team grew up to 12 people and launched projects with customers in the US, Canada, Hong-Kong. And in summer 2016 I decided to leave my position at OTP Bank to focus entirely on development of SGMsoft.

Along with delivering current projects, we are paying great attention to piloting new technologies (including those backed up by Google), that claim to greatly speed up cross-platform development and manipulation of large data volumes. Over the last year we added to our toolbox hybrid mobile apps, isomorphic web-apps and NoSQL databases3. Our next step is to bring value to larger customers by offering enterprise-grade solutions that support Big Data, clustered computing and load balancing capabilities as well as smooth horizontal scalability on commodity hardware at a fraction of costs currently spent on solutions based on the Oracle/Java stack.

We continue to grow and are open to new partnerships and projects of any complexity, which could benefit from our industy expertise in:

  • process design for banks and microfinancing organizations, automation of entire lifecycle of credit products – from application and call-center service to working with debts; we can not only develop a customized IT solution but also offer our help in designing of the concept and process architecture of new banking products and services;
  • creating online-banking solutions, both web-apps and mobile apps: from process design to platform launch;
  • design and implementation of e-commerce solutions (online stores, portals, marketplaces) with complex billing (buyer->platform->seller), automation of inventory management, delivery services, call-centers and reporting, with proper separation of transactional and reporting modules and designing datamarts to target high-load real-time reporting.
  • Please contact us at [email protected] or +7 499 110 6856 to discuss your project and options for its architecture as well as get an express estimate of costs and timing of its implementation.

    1 Single Page Application (SPA) – web-site that load JavaScript code and static parts of webpages once and then only exchanged changing data with the server – this way amount of data exchanged between the client drops significantly, as opposed to the classic approach when the page is refreshed by client’s request. SPA proved especially efficient in business web-apps when data exchange is frequently initiated by the server.

    2 Total Cost of Ownership (TCO) – all costs related to owning the system accumulated on a certain planning horizon (usually 3 years) comprising of investments into initial implementation, additional developments and hardware as well as the cost of licenses and maintenance.

    3 I will devote separate posts to hybrids and NoSQL, meanwhile there is a great post about isomorphic approach from guys at Tinkoff Bank.