<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:yandex="http://news.yandex.ru" xmlns:turbo="http://turbo.yandex.ru" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Case Studies</title>
    <link>http://mlweb.dev</link>
    <description/>
    <language>ru</language>
    <lastBuildDate>Thu, 07 May 2026 10:17:32 +0300</lastBuildDate>
    <item turbo="true">
      <title>Logistics Operator – Java Integration, Routing &amp;amp; SLA Control</title>
      <link>http://mlweb.dev/tpost/mlwebcase_java_developer_for_logistics</link>
      <amplink>http://mlweb.dev/tpost/mlwebcase_java_developer_for_logistics?amp=true</amplink>
      <pubDate>Wed, 06 Aug 2025 14:00:00 +0300</pubDate>
      <category>Java</category>
      <enclosure url="https://static.tildacdn.com/tild6663-6663-4336-b236-376436386536/Case_logistics.png" type="image/png"/>
      <description>One Java engineer, faster onboarding, cleaner routing, SLA enforcement, and fewer bad requests— the partner asked for another developer from ML Web Solutions right after.</description>
      <turbo:content><![CDATA[<header><h1>Logistics Operator – Java Integration, Routing &amp; SLA Control</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild6663-6663-4336-b236-376436386536/Case_logistics.png"/></figure><h2  class="t-redactor__h2">Logistics Operator – Java Integration, Routing &amp; SLA Control</h2><div class="t-redactor__text"><strong>Background</strong><br />The partner is a logistics operator with an internal platform for managing deliveries, warehouses, and routes. The team is distributed and follows a Scrum methodology. Before our engagement, development was handled entirely in-house. As the business scaled, the need arose to expand into new regions, integrate SLA controls into the existing planning module, and reduce the number of erroneous requests from business users.<br /><br /><strong>Solution</strong><br />We provided a Java engineer proficient in Spring Boot, PostgreSQL, and Apache Kafka. They integrated seamlessly into the team: quickly got up to speed on the technical context, aligned priorities with the Product Owner, and started delivering changes with no prolonged onboarding delays.<br /><br /><strong>Deliverables</strong><br />• <strong>Routing:</strong> The routing model was redesigned to account for delivery time windows, weight, dimensions, and warehouse constraints. Business rules were moved to a dedicated layer, routes are now calculated deterministically, and extension points have been added to support new regions and trip types.<br />• <strong>SLA Control:</strong>The planner now explicitly respects target time windows and priorities. If a route violates SLA constraints, the planner suggests alternatives. Deviations are captured both at the service level and in the UI.<br />• <strong>Validation &amp; Business Rules: </strong>Server-side validation was added on the backend for addresses, time slots, statuses, and conflicts. The UI now receives clear, actionable error messages. Invalid requests are blocked before trip execution.<br />• <strong>Event Processing &amp; Cargo Tracking:</strong> Kafka is now used for buffering and guaranteed processing, with order-based keys and partitioning, retries and backoff, and dedicated DLQ topics. Consumer services were rewritten to be idempotent.<br />• <strong>Core Module &amp; API:</strong> Heavy operations were moved to background jobs. Reference and geodata are now cached in Redis. PostgreSQL performance was improved with proper indexes and query optimization. Quotas and rate limiting were added to public API endpoints.<br />• <strong>Engineering Hygiene:</strong> Static analysis and parallel checks were added to the CI pipeline. Short ADRs (Architecture Decision Records) were introduced to keep architectural context transparent for the entire team.<br /><br /><strong>Outcome &amp; Impact</strong><br />The planner now respects SLA by default. Routes are generated predictably, and invalid requests are rejected at the entry point. Deployments are smoother, and the engineering team spends more time moving the product forward rather than fixing the consequences of ad‑hoc changes. Following this engagement, the partner expanded the collaboration and requested an additional Java specialist from ML Web Solutions.</div>]]></turbo:content>
    </item>
    <item turbo="true">
      <title>B2B Fintech Platform – Technical Debt Reduction &amp;amp; Integration Stabilisation</title>
      <link>http://mlweb.dev/tpost/mlwebcase_java_for_b2b_fintech_platform</link>
      <amplink>http://mlweb.dev/tpost/mlwebcase_java_for_b2b_fintech_platform?amp=true</amplink>
      <pubDate>Mon, 17 Nov 2025 17:00:00 +0300</pubDate>
      <category>Java</category>
      <enclosure url="https://static.tildacdn.com/tild6631-3262-4466-b339-643839666539/Case_fintech.png" type="image/png"/>
      <description>A middle+ Java backend engineer from MaDeLa refactored a fintech's commission module, fixed Kafka consumers, added API throttling, and stopped critical failures. </description>
      <turbo:content><![CDATA[<header><h1>B2B Fintech Platform – Technical Debt Reduction &amp; Integration Stabilisation</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild6631-3262-4466-b339-643839666539/Case_fintech.png"/></figure><h2  class="t-redactor__h2">B2B Fintech Platform – Technical Debt Reduction &amp; Integration Stabilisation</h2><div class="t-redactor__text"><strong>Background</strong><br />When the client reached out to us, the product was already live in production — a B2B fintech platform that was rapidly gaining users. However, the code remained a legacy of the MVP stage: modules written in a rush, chaotic integrations with external services, and technical debt that weighed heavily on the team. The client's developers were working flat out, while bugs and integration failures had become a normal part of the day.<br /><br /><strong>Solution</strong><br />We introduced a Middle+ Java Backend engineer who became part of the team from day one. They quickly got up to speed with the architecture and started with the most problematic area — the commission calculation module. The logic there changed constantly, with little to no real architecture in place. The engineer built a testable structure, baked in extensibility for future scenarios, and made the service functional and understandable.<br /><br /><strong>Deliverables</strong><br /><ul><li data-list="bullet"><strong>Commission module redesign: </strong>A clean, testable, and extensible architecture was put in place, allowing business logic to change without breaking everything around it.</li><li data-list="bullet"><strong>API decoupling &amp; optimization:</strong> The public API was separated from internal interfaces. Throttling was added for heavy requests, and part of the logic was moved to a dedicated microservice.</li><li data-list="bullet"><strong>Kafka overhaul:</strong> Previously used without a clear system, topics were reorganised, consumer services were rewritten to be idempotent, and DLQ (Dead Letter Queue) topics were added to capture and isolate problematic messages.</li><li data-list="bullet"><strong>CI/CD improvements:</strong> Static code analysis was added. Tests were sped up by running them in parallel. QA and analysts could validate changes faster.</li></ul><br /><strong>Beyond the code</strong><br />The engineer didn't just write code — they became embedded in the product life cycle. They investigated production logs without being asked, communicated with the team as an equal, and proposed solutions even when the client was still trying to articulate the problem.<br /><br /><strong>Outcome &amp; Impact</strong><br />Within a few weeks, the client experienced their first "quiet" sprints — no critical failures, tasks completed on time, and a normal, sustainable pace of work. The team was able to switch from putting out fires to moving the product forward.</div>]]></turbo:content>
    </item>
    <item turbo="true">
      <title>Construction &amp;amp; Tourism Management Platform – Digital Ecosystem for Territorial Development</title>
      <link>http://mlweb.dev/tpost/mlwebcase_outsource_construction_platform</link>
      <amplink>http://mlweb.dev/tpost/mlwebcase_outsource_construction_platform?amp=true</amplink>
      <pubDate>Fri, 23 Jan 2026 13:23:00 +0300</pubDate>
      <category>Outsourcing</category>
      <enclosure url="https://static.tildacdn.com/tild3734-6438-4433-a431-393662623066/Case_tourism.png" type="image/png"/>
      <description>A 20+ person team built a unified digital platform for construction and tourism projects — from investor applications to project completion. Full investment cycle digital twin.</description>
      <turbo:content><![CDATA[<header><h1>Construction &amp; Tourism Management Platform – Digital Ecosystem for Territorial Development</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild3734-6438-4433-a431-393662623066/Case_tourism.png"/></figure><div class="t-redactor__text"><strong>Background</strong><br />The customer's platform (NDA) is a system for managing construction and tourism facilities, significantly simplifying navigation and project management at all stages of development — from an investment project application to its commissioning.<br />The customer implements large‑scale territorial development programmes and investment‑construction projects across different regions of the country. These projects involved huge volumes of data and documentation: calculations, estimates, architectural plans, and more. Existing tools did not provide holistic or transparent process management.<br /><br /><strong>The main problems:</strong><br /><ul><li data-list="bullet">Data on facilities and projects were stored separately and quickly became outdated</li><li data-list="bullet">No single digital register of investment projects and applications existed</li><li data-list="bullet">Approvals and report preparation required significant manual work</li><li data-list="bullet">As the number of projects grew, the system became increasingly unmanageable</li></ul><br /><strong>Our task</strong> was to develop a single digital platform that would:<br /><ul><li data-list="bullet">Consolidate data on projects and facilities</li><li data-list="bullet">Provide transparency of statuses and implementation stages</li><li data-list="bullet">Simplify interaction between process participants</li><li data-list="bullet">Create an architectural foundation for further scaling</li></ul><br /><strong>Solution</strong><br />We developed a digital platform for territorial development programme management, combining data on construction sites, projects, investor applications, and related tasks. The solution automates interaction between developers, investors, development institutions, and other participants, creating a unified digital environment for planning and execution.<br />The project was delivered by a team of 20+ specialists — business analysts, designers, developers, architects, and testers. Over 18 months, we implemented a complete digital twin of the investment cycle for territorial development.<br /><br /><strong>Technical stack &amp; implementation highlights</strong><br /><ul><li data-list="bullet"><strong>File storage:</strong> Document and file storage implemented using S3-compatible storage</li><li data-list="bullet"><strong>Asynchronous processing:</strong> As load increased, part of the processes were moved to async mode. Existing inter‑server communication via WebClient was supplemented with RabbitMQ message broker</li><li data-list="bullet"><strong>External integrations:</strong> Some integrations with external systems were implemented using the SOAP protocol</li><li data-list="bullet"><strong>Investor application workflow:</strong> Applications were created via Camunda integration. Users could edit/cancel an application at any stage. All construction participants could review the application and approve or reject it</li><li data-list="bullet"><strong>Printable documents:</strong> Key sections (e.g., project passport) required printable forms. We implemented printing according to required natioanl standards with pre‑filled information from the system using Apache POI and JasperSoft frameworks</li></ul><br /><strong>Key platform modules</strong><br /><ul><li data-list="bullet">Construction facility and project management</li><li data-list="bullet">Investment project creation and support</li><li data-list="bullet">Investor application submission and processing</li><li data-list="bullet">Task and event tracking</li><li data-list="bullet">Analytics and progress visualisation</li></ul><br /><strong>Outcome &amp; impact</strong><br />As a result of the project, the customer received a ready‑to‑use digital platform for managing investment and construction projects.<br /><br />The platform enabled:<br /><ul><li data-list="bullet"><strong>Consolidation:</strong> All facilities and projects in a single digital environment</li><li data-list="bullet"><strong>Speed:</strong> Simplified and accelerated investment application submission</li><li data-list="bullet"><strong>Control:</strong> Activity tracking across regions, deadlines, and statuses</li><li data-list="bullet"><strong>Automation:</strong> Analytical reporting and map‑based visualisation</li></ul></div>]]></turbo:content>
    </item>
    <item turbo="true">
      <title>CRM Subscription Module – System Analysis &amp;amp; Architecture Discovery</title>
      <link>http://mlweb.dev/tpost/mlwebcase_analytics_crm_module_staff_augmentation</link>
      <amplink>http://mlweb.dev/tpost/mlwebcase_analytics_crm_module_staff_augmentation?amp=true</amplink>
      <pubDate>Tue, 10 Mar 2026 15:29:00 +0300</pubDate>
      <category>Analytics</category>
      <enclosure url="https://static.tildacdn.com/tild3538-3137-4231-b764-396637343639/Case_crm.png" type="image/png"/>
      <description>No docs, no clear requirements. A middle+ system analyst from ML Web Solutions interviewed users, mapped BPMN, fixed logic contradictions, and delivered a roadmap — before a single line of code was written.</description>
      <turbo:content><![CDATA[<header><h1>CRM Subscription Module – System Analysis &amp; Architecture Discovery</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild3538-3137-4231-b764-396637343639/Case_crm.png"/></figure><div class="t-redactor__text"><strong>Background</strong><br />The client is a product IT company with its own CRM system. A major upgrade was planned: a new subscription management module needed to be built, synchronised with the billing system and the call centre API, while also cleaning up the relationships between clients, tariffs, and internal reference data.<br />At the start, the task seemed simple: <em>"Draw up diagrams and describe the business processes."</em> But it quickly became clear that no documentation for the existing architecture existed, requirements were being defined on the fly, and business logic was based on assumptions rather than rules.<br /><br /><strong>Solution</strong><br />A middle+ system analyst from ML Web Solutions joined the client's team.<br /><br /><strong>What was done</strong><br /><strong>Week 1 – Discovery through real users</strong><br />The analyst spent the first week conducting interviews with internal users: managers, support staff, and engineers. Instead of simply documenting "as is", they asked uncomfortable questions:<br /><ul><li data-list="bullet"><em>"Why do you do it this way?"</em></li><li data-list="bullet"><em>"What happens if…?"</em></li><li data-list="bullet"><em>"What if a client is on two tariffs at the same time?"</em></li></ul>These "what ifs" quickly uncovered contradictions in the system's logic.<br /><br /><strong>Week 2 – Deliverables</strong><br />After two weeks, the client received not just a set of BPMN diagrams, but:<br /><ul><li data-list="bullet">A <strong>unified glossary</strong> of terms that had previously been used inconsistently across teams</li><li data-list="bullet"><strong>Proposals for reusing logic</strong> from existing services</li><li data-list="bullet">A <strong>REST integration specification</strong> for billing, including edge cases</li><li data-list="bullet">A <strong>roadmap for task decomposition</strong> for the development team</li></ul><br /><strong>Beyond the diagrams</strong><br />The client specifically noted that the analyst <em>"resolved disputes between business and developers because they understood both sides"</em>. There was no need to explain what idempotency is or how webhook request ordering works — the analyst built these considerations into the logic from the start.<br /><br /><strong>Outcome &amp; impact</strong><br />The project is still ongoing. But even at the preparation stage, it became clear: without this level of systems thinking, the client would have sunk into feature chaos. Instead, they now have a structured architecture and a precise understanding of where the product is heading.</div>]]></turbo:content>
    </item>
  </channel>
</rss>
