Case studies

The problem the client brought us. The state we left behind.

Three stories from practice, as Jan Walter told them on LinkedIn. No marketing, mistakes we made included.

Patience pays off. Six years with one application.

Starting point

An application for financial advisors that another team had been building for six months. Angular, Node.js, MongoDB. Unfinished features, unstructured data, weak typing, and code nobody could read.

What we did

E2E tests first. They pinned down how the application behaved and gave us the freedom to change it. Then we rewrote the backend in Python, Django, and PostgreSQL. It took two months. Since then, agile development has been running with a product owner on the client's side.

Users were skeptical at first and progress wasn't linear. Internal ambassadors in the advisor network, the people we worked with most closely, helped win their trust.

Result

FINfest 2021 Application of the Year. The standard tool of the KAPITOL advisor network. The client has invested roughly a million dollars in it since 2019, and development continues.

What we learned

  • Automated tests are the foundation of serious software, not an add-on.
  • Small commits, TypeScript everywhere, generated typed API clients, a monorepo, feature flags.
  • RxJS and NgRx: powerful tools with a considerable price. We use them deliberately.
  • Steady long-term progress is worth more than speed at the start.
“You'll have a good time working with them.”
CEO, KAPITOL · Clutch

From Excel to the web and back again.

Starting point

The best mortgage comparison tool on the Czech market lived in Excel. Dozens of sheets, over 2,500 formulas, over 5,200 constants, and a VBA interface. One expert, not a programmer, updated it week after week because banks keep changing their products. The client wanted a web application but didn't want to lose the ability to keep editing the logic themselves.

What we considered

  • Rewrite the formulas in Python. Clean, but the expert would lose Excel.
  • Drive Excel remotely via Google Sheets or the Office 365 API. A simple calculation took 0.6 to 1.8 s. Too slow.
  • Drive Excel locally from Python. Fragile and hard to scale.

What we did

Excel stayed the source of truth. The open-source library Koala parses formulas into a dependency tree and recalculates only what changed. We added the missing Excel functions, and a recalculation on the server takes 20 ms. 20,000 scenarios generated directly in Excel verified the match with the original.

The prototype took five nights, the MVP a few months. Then reports, SSO, multi-company operation, CRM integration, and checks against bank calculators. A pool of precomputed instances on Docker Swarm handles hundreds of requests per minute from srovnejto.cz.

Result

FINfest 2021 Application of the Year. Six years of development, roughly 7,800 commits. The expert still edits the logic in Excel and the web picks it up.

What we learned

  • Prototype and measure the key architectural decision, don't guess it.
  • Excel is excellent for parameters and their relationships. No need to replace it at any cost.
  • Tests against reference data caught every deviation before a user did.
“The company owner always made sure that the project was running smoothly.”
Vice Chairman of the Board, Gepard Finance · Clutch

Small and big lessons for small and big programmers.

Starting point

Late 2020. Michal Beneš's epidemiological model and the idea of turning it into a game that shows the public how the timing and strength of measures change the outcome. It had to be done over Christmas, before the next wave. We took it on pro bono.

What we did

Five engineers, agile sprints, TypeScript, an Angular UI, a minimal backend over JSON, and automated tests from day one. The hardest part was integrating the simulation core, which changed fast during development.

Launch on January 28, 2021. A link from a major news portal overloaded the server. Disabling gzip for static files was a mistake. Moving static assets to Cloudflare stabilized the site. 50,000 games played in the first days, over 100,000 players in total. People in government used the game too, and national media wrote about it.

On February 7, a TV report brought a spike several times larger. A database backup was running at the same time. The result: several dozen minutes of downtime.

Result

The game served its purpose. The author's key message: delayed measures cost lives, school days, and money. The effort came to roughly 80 SWEHQ person-days, four times the original estimate.

What we learned

  • Estimate conservatively. Even enthusiasm has a price.
  • Understand inherited code first, then change it.
  • Prepare for traffic spikes in advance: CDN, static assets, no backups in prime time.
  • During data import, MongoDB read only about 10% of records without errors. Next time, PostgreSQL.
  • A cohesive team and a junior who got room to both design and code.
“SWEHQ was a professional team that genuinely cared about our project.”
Quantitative analyst, project initiator · Clutch

Next step

Working on something similar?

An engineer replies within a day. Within a week you have an honest view of scope, risk, and price.