Azure Cognitive Search – when ‘name LIKE…’ is not enough

Are you in need of implementing advanced search service in your application? You can’t be bothered to learn, deploy, and maintain the next database server? You don’t want to learn AI theory or another tangled library? Azure Cognitive Search might be the solution for your concerns!

Let’s take a closer look!

What is it? And why should I use it?

Azure Cognitive Search is a search-as-a-service cloud solution allowing developers to perform advanced searches not only over text and geodata but also files like Microsoft Office documents and even images. It uses artificial intelligence to extract text – all happening backstage without any need for knowledge in that area! 

But there are already other search solutions. Why should I use this one? First of all, it’s a cloud-based service. No installing, configuring server, worrying about disc space. Second, Azure Cognitive Search aims to be a universal solution. You define the criteria that data can be searched by. Today you need regular text search, but tomorrow it can be searching in documents, or maybe you will need to use a different database? Azure Cognitive Search is ready for that.

Lots of search operations can be implemented directly on the database but can turn out to be computationally intensive. Moving this responsibility to the dedicated solution helps to ease the database and also gives a possibility to scale when needed.

It is worth mentioning that Azure provides us with SLA on a 99,9% availability level (if some certain requirements are fulfilled).

What does it offer? 

Azure Cognitive Search is a humongous tool and we wouldn’t have a day to describe all of its functionalities, but let’s look at the most important of them.


The main asset of Cognitive Search. Every document used and processed by Azure Search ends up in an index that is made up of records containing various attributes. The index defines how data can be searched.


Each replica holds a copy of your data and thanks to that you can load balance requests. In addition, all load balancing and replication are managed by Azure Search, all you have to do is adjust the number of replicas. 

Increase the number of replicas when you start getting too many requests from multiple users and performance drops.


Provides storage for your index operations (for example index refreshing or rebuilding). Each partition has shared data of all your indexes. So for example, if you have 4 partitions on your Azure Search instance your index data is split into four parts.

When on a low load a single query takes too long to complete, adding more replicas won’t solve the problem. Adding more partitions might be the solution. Splitting data into smaller chunks can allow parallel operations, increasing performance.


Crawler that extracts searchable data from an external data source and populates your Azure Search index. All you need to do is connect your data sources like a database or storage and set whether the indexes should be built on-demand or periodically.


Cognitive search allows you to create a collection of synonyms. For example when you have documents connected with the word “Dog” you can associate the words “Puppy” or “Canine” and when the user searches for any of those 3 they will hit the same results. Isn’t that great?

Language analyzers

Azure Cognitive Search provides us with 35 Lucene and 50 Microsoft text analyzers. You can set an individual analyzer for each field in your index. Language analyzers perform lexical analysis using specific linguistic rules of the target language.

Advanced features

Azure Cognitive Search isn’t just a simple search service, it has so much more to offer. Text searching can be customized with many text analyzers. Search results can be sorted and paged almost without any configuration. But what makes it stand out from the competition is AI Enrichment – set of extensions that use Machine Learning to extend search possibilities. For example, built-in OCR that can read text from images or an algorithm, based on neural networks, that allow us to identify visual features such as facial recognition or image interpretation. AI can also be used for entity recognition (email, URL, date) and language recognition. If that’s still not enough, we can define our own so-called skills, that are available via REST API, and connect them to our Azure Search.

How do we use it?

Don’t we all love actual, real-life examples? Luckily we happen to have a few. Let us share some cases of how we have used it in our projects.

Advanced user searching

We have data about employees stored in the database. They need to be searchable by email, name, last name, but also their job title and skill level. Under the hood, there are already few joins of tables required. But efficiency is only one problem here.

We want the search to be the case and accent insensitive (so “Ę” is treated as “E”, and “e” is equal to “E”). Since database contains employees from all around the world some names can be hard to pronounce for users from other countries, so we want to show results even if small typo has been made in a query (“Brzęczyszczykiewicz” should still be found if a user entered “Brzeczyszczykeiwicz”). 

Having those requirements in mind, try guessing what tool we chose to complete this task.

You got it! We have chosen Azure Cognitive Search! It could have fulfilled all the required needs. Easing database with custom index, ignore accents in a query, allow small typos while remaining efficient.

Searching documents

Imagine this – the project is already deployed and running for a few months. The customer uploads lots of documents that are stored as an image in our cloud storage. Then comes a new requirement.

“We want to search by text in those scans.”

”But sir… those are images…”

“Is this a problem?”

“As a matter of fact – no!”

We can use Azure Cognitive Search to easily setup OCR (Optical Character Recognition), and if photos are already stored in Azure (for instance Azure Blob Storage) we don’t even need any additional configuration, just select the correct option in Search. No need to extract the text for all existing files manually! At this point, things can get even spicier. You can use AI to extract data from images, like face recognition, categorization, nudity detection, and so on, but that’s a topic for a whole different story.


Thanks for staying with us. If you are in need of reliable and robust finding service, that can handle large amounts of data, has high possibilities of configuration, and is easy to use then look no further!

Azure Cognitive Search can be used for both simpler tasks, offering basic and even free tiers, as well as very complicated scenarios where performance is critical even at the cost of the budget. Powered by Artificial Intelligence, it can achieve astonishing things!

Do you want to implement this amazing service in your project? Feel free to contact us, it will be our pleasure to cooperate with you. Together we can deliver everything!

Our coverage of TestingCup2020 Online

We wouldn’t miss it for the world! On June 17th, two teams were representing iteo during TestingCup 2020 Online. This edition was special – not only because the competition was held entirely remotely but also because, for the first time, MrBuggy was created in the form of a mobile application.

Two squads consisting of 3 people each were representing iteo’s QA department in the biggest, annual competition for software testers – TestingCup. This year, due to COVID-19 pandemic recommendations, it was happening in a particular mode – entirely online. The attendees had to face the challenge of finding the biggest number of defects hidden in MrBuggy application as quickly as possible.

Why was this year different?

The exceptional nature of this TestingCup edition, besides online format and MrBuggy mobile app, was also underlined by the competition’s changed rules. Each year, TestingCup had two stages. First was all about finding the most significant number of bugs and reporting them. Depending on the significance of the issue, the participant would obtain plus points, but if the reported bug wasn’t actually a bug – there would be minus points!

The second stage required to prepare a testing process document picked by the organizational committee. In previous years there was, for example, a testing plan or a test report. The document would be verified with a checklist of all required elements. The number of points collected in both stages would indicate the winner or winners.

But this year the organizational committee changed the rules completely. There was no document preparation or the minus points, which was definitely an advantage of this year’s competition.

The course of the competition

During the festive inauguration, the rules of this year’s edition were presented. What mattered was the number of founded defects and the time spent on finding them. To prove that the bug wasn’t found by accident, one had to recreate the error again. After detecting all issues hidden within the app or when the time passed by (we had 2 hours), team captains had to send a report from their device – the time spent to find defects on their devices was crucial because it influenced the team’s score.

The organizational committee provided 20 challenging tasks that featured different functionalities like signing up, logging in, purchasing products and more – each of them had one critical defect. None of the competing teams found all of them, which can indicate that the competition this year was really tough. TestingCup 2020 winners found 18 issues. Our representatives – ITEO CrashFreeTeam and ITEO Bug Hunters placed themselves on the 12th and 21st positions in the rank.

ITEO CrashFreeTeam
ITEO Bug Hunters

Congratulations to all attendees and see you on the next year’s edition of TestingCup!

Lessons we learned from going full remote

The coronavirus pandemic happened suddenly and changed our work habits in every possible way. The biggest alteration was going full remote and sending all our employees home. They couldn’t organize meetings in the conference room, eat lunch in the kitchen or drop by their colleagues’ office to say hi or discuss important subjects. What did we learn from this unusual situation?

Working remotely is something that either you love or hate. Some people appreciate the comfort of their own homes where they don’t have to wear uptight clothes and have no distractions from their fellow employees. Others hate working from home because of other family members interrupting them all the time. Also, sometimes a fridge, undone laundry, or a cat can be way more interesting than ticking off the to-do list.

But in times of epidemic, there was no choice whatsoever. Everyone had to work from home and make the best out of it. We had to adjust our daily operations to achieve the productivity we had in the office. Here’s a couple of conclusions we have now when our team is now allowed to work on-premises or from their own homes.

1. It is different from working with remote clients

We had some experience with remote work before Covid-19. First of all, we have more than one office in Poland – so our team is not in one place. Daily video calls were a part of our routine. Also, we cooperate with international clients and Polish companies from around the country. To be honest, most of our business operations are happening via digital channels.

Still, not having the usual squad available in the office means that you need to call or message EVERYONE. No ability to meet face-to-face means no product workshops or sales meetings unless they are video calls. And we all know sometimes it is better to meet up in person.

Nonetheless, we had to change our process to be safe and sound during the pandemic. That’s exactly what we did – and even though we feel the difference, we can tell it’s not impossible to work full remotely.

2. Good organization is the key

Everything can be done if your work is well-organized. Being in constant contact, having a couple of communication tools and reporting work progress regularly are the best ways to keep in touch with your co-workers and deliver excellent results.

This rule applies not only to fully remote times but to software development in general. We shared our experience on that matter in one of our blog posts on remote work. The iteo team already worked partially remote before the pandemic as the majority of our clients come from abroad. We had to work out rules and methods to be productive even when we couldn’t meet in person. Different time zones weren’t helpful either.

All that work done in a digital environment before the coronavirus helped us to get organized when we had to ditch the office and work from our homes. And we proved it could be just fine.

3. Working from home doesn’t mean less productivity

Yes, we know it’s sometimes tempting to walk around the house 20 times a day or to spend 30 minutes petting your dog or cat. Not to mention people who have kids and HAVE to pay attention to them almost constantly. You also might have a significant other that also works remotely and has a couple of video calls per day. So there are distractions and noise that can make peaceful work problematic.

Still, we didn’t observe any changes when it comes to delivering perfect results. Our teammates were available on Slack during work hours, they attended scheduled online meetings and they shared the results of their labor with leaders and clients. Apparently, there is a way to work from home despite the obstacles. 

4. We live in privileged times and work in a privileged industry

As an IT company, we mentioned we already worked remotely with some of our clients and between offices we have in a couple of Polish cities. So we had experience and all communication means to keep in touch and push the projects further. The fact is that the majority of our work happens online, so we could just pack our computers and move within hours since the government issued their pandemic recommendations.

With internet connection almost everywhere and all the digital tools that allow video calls and file sharing, we can work from home as long as it’s needed and keep our operations as usual. In times of epidemic, our squad will stay safe and will be able to work no matter what.

5. We are different people when it comes to work

Some of us couldn’t wait to come back to the office – because of the reasons mentioned above. Some people need a visible border between work and home. Also, organizing meetings is easier when you have a dedicated room for it and you can talk with everyone face-to-face. Missing fellow employees was also a factor here.

Right now, when there is voluntary permission to come to the office, some of the iteo teammates gladly do just that. Others stayed at home and they don’t want to come back just yet. Partially because the COVID-19 is still out there and the pandemic is not over. But also because they feel much more comfortable when working from home.

We should all understand that each of us has a different style of work and they prefer various surroundings to make themselves productive. Going fully remote showed us that it is possible to work this way and that for some people it can be better.


Will we work fully remote forever? Probably not. We like to keep our teammates close to share the experience of software development. But we have to say, despite the whole pandemic that caused major public health anxiety, we learned a lot and we are prepared to tackle similar challenges in the future. Times are uncertain right now and our priority is to keep work continuity, so we can always thrive.

Contact us if you want to work with a company that has years of expertise in software development. We will walk you through the whole process to deliver excellent results and help you with your business. Let’s work together – no matter where you are located, we can offer comprehensive services in design, development, quality assurance and more.

How remote work influences project management

A project manager is one of the crucial roles in software development. It is a person responsible for work organization, efficient communication and delivering results according to schedule. In times of pandemic, many employees had to change their habits and work styles. How project management evolved to be fully remote?

Every project manager is put in the center of the team. They need to inform the client about current progress, collect feedback, and pass it to the programmers, designers, and testers to incorporate it into the production process. That role needs a lot of patience, excellent soft skills and liability.

What are the primary duties of a project manager?

Every person that works in this position has to analyze the requirements of the project and see what resources are needed. Then, they need to determine tasks that have to be done to deliver the expected outcome. Controlling daily progress and evaluating the team’s productivity are other obligations they have to keep in mind. In case of sudden changes or various random conditions, they need to take care of the team’s flexibility and negotiate solutions that will help them work without any roadblocks and finish the project as predicted.

As you can see, it is quite an important role with a lot of accountability. And they need to speak with many people on a daily basis – both face-to-face and by correspondence.

What are the other roles in project management?

As you may already guess, the main two parties that cooperate with the project manager are the client and the software development team. Each of them has a different role and a set of tasks they need to accomplish, so everything runs smoothly and is done on time.

In Agile and Scrum development, which is the leading methodology in seasoned digital agencies, the client usually enters the Product Owner role. They represent the company and their responsibility is to provide information on users’ needs and desires that have to be fulfilled by the product. Their expertise and knowledge about the industry, business and clients is crucial to creating a website, a mobile app, or any other software that will achieve success among potential customers.

On the other side, we have the team – usually with the team leader that reports to the project manager directly and the rest of the members that answer the leader’s decisions. What’s important is that every person has a different set of skills, so each project team’s composition should be carefully considered. We should pick people with knowledge in a particular subject that is meaningful for this concrete product and experienced in previous similar projects.

You shouldn’t completely forget about organizational and communication skills when choosing team members for a software development project. Their technical abilities are crucial, but other characteristics can influence workflow, productivity and cooperation.

How to work remotely as a project manager?

Project manager’s work is all about communication, so finding the right ways and tools to create an undisturbed environment for conversations is essential here. We already wrote about it on our blog, where we discussed remote work in general. Sharing our experience here is based on the biggest challenge in a couple of years – the COVID-19 pandemic that made us all work remotely, whether we like it or not.

First of all, project managers should establish remote communication methods for all their projects or each one separately – depending on how open their clients will be to consent to the proposed plan. There shouldn’t be more than 2 or 3 robust programs or applications that allow video calling, text chatting for links and materials, screen sharing and synchronization with calendar to schedule meetings.

Speaking of calendar and scheduling – you should really keep track of your tasks, video calls and other to-dos. You probably already established a method of organizing your own time, so you can stick to that while working remotely. We will share some tools that can help in the further part of this article.

After establishing the communication rules with your clients and teams, you need to find space for daily calls to be up to date with work progress and pass information between parties.

And that’s basically it. The rest of the project management tasks were done on the computer anyway. If you have your laptop, a smartphone, maybe a paper calendar (if you prefer it for organization) and an internet connection – you can do your job no matter what happens in the world.

Tools useful for remote project management

Let’s talk about some tools based on the categories of operations they need to perform. For scheduling, we recommend Google Calendar for the most straightforward reason – most people use it. Having a Gmail account is common and synchronization is excellent, so it’s incredibly convenient for you, the team and the client.

Video calls can be done on Google Meet, Zoom, or Skype – depending on what is preferred by the Product Owner. All these tools allow the users to share their screens and send files so you can exchange materials in real-time, even if you are running a meeting with multiple people. Remember that using a camera during remote business meetings is considered professional so even though you work at home, ditch pajamas and brush your hair 😉

For project management at iteo, we use several tools that help us track our tasks, report productivity and plan our workdays. BaseCamp is excellent as a shared space for our development team and the client. We can invite everyone to a dedicated project and do almost everything we need to – communicate, create to-do lists, add pictures or videos and so much more.

As for internal work organization, we use Confluence as a knowledge base and Jira for tasks and reporting work hours. Nothing really changed here when we started to work entirely remotely, as everything happens in a digital space.

For your own organization and scheduling, we recommend a couple of apps that you can test to see if you prefer any. Writing in your calendar is okay, too, so don’t hesitate to keep it if you liked it until now. For kanban lovers, Trello might be great and if you prefer simple lists, you can try Todoist or other similar programs. Their advantage is that web and mobile apps synchronize perfectly so you can always be up-to-date with your tasks for the day.

Email for EVERYTHING and Google Drive to keep and share files is obvious, so we won’t talk about them that much. The main idea here is to find the best remote work system to make the project manager, the client and the teamwork in perfect synergy to achieve high productivity and spectacular results.

Did remote work change our project managers’ habits?

Of course, it is different to work entirely remotely. Project managers can’t quickly drop by the developers’ room anymore to tell them the newest update from the Product Owner. And sometimes, working from home can be distracting. As a company with most of their clients abroad, we know how to communicate when we can’t meet in the office. We had to adjust our process during the pandemic just a bit to still deliver results and quality.

If you would like to cooperate with us, send us a message. As you can see, we are prepared to offer our software development services no matter what conditions we are working in. Let’s talk about your project and conquer the web or mobile app market.

Will Figma replace Sketch? Designer’s opinion

 As you may now, Sketch has a big competitor on the market and I’m not talking about Adobe Xd or InVision Studio. That’s right – Figma. It basically came out of nowhere putting Sketch in a precarious situation. Why? Let me tell you.


Before I tell you why we’re slowly switching from Sketch to Figma, you must know that Figma and Sketch are very similar.

I would say that they are like brothers. Most of the shortcuts are the same, layout is almost identical, the overall feeling is just like Sketch, so what is so special about Figma?


After a few years with Sketch, we all noticed a significant decrease in performance. Few gradients, 30+ artboards, or copied artwork from illustrator and you can’t work properly. This problem started to occur some time ago and systematically returns. Let’s add random shutdowns, errors without save, plugins problems to the list. It really started to get annoying. 

With Figma, no problem at all. I thought that with a browser-based design and prototyping tool there were bound to be performance issues. Turns out there is no such thing. In fact, in a lot of ways, it is faster. I don’t see any lag. I can work from any hardware I want. Any browser I want. Also, I have availability to download a desktop app, which is for Mac and Windows and thanks to the latest iPadOS update, I can take my iPad, connect keyboard and mouse and work on it. And in my opinion, it still works better than Sketch.


Initially, I was negative for all kinds of real-time collaboration, because I like to work alone and privacy is my number one priority. Then I tried Figma collaboration with a friend of mine from iteo (Cheers, Kasia) and the conclusion was simple. Holy moly. It’s awesome.

They took the approach of Google Docs or Time Viewer. It allows all the designers to work on the same file at the same time. With availability to peek what your mate is doing. It’s so much better than the Branch system when you have to resolve conflicts. Also, you can download the Figma Chat Plugin and chat with others about the awesome project that you’re working on. 

Vector Tool

I don’t know how you’re feeling about it but for me, Sketch Vector Tool sometimes is unbearable. Don’t get me wrong, it works great, but I miss some major options and finally, Figma gave us the option to connect more than two strokes to a node. They made drawing complex shapes and symbols easy-peasy.

Design Systems — Symbols vs. Components

Sketch Design System is good, really good, but let me tell you why I moved to Figma.

Text styles. When I wanted to create text in Sketch, I have to define all the cases of the styles I want which can end up to so long list of text styles. 

Let me explain how Sketch styles work: when you define any text or layer style, Sketch saves all the properties in this style and if you do any change to any property then you are overriding the text style. For example, if you want to have a different alignment for the text or different colors – with Sketch, you have to make a text/layer style for every case.

With Figma, you have better control of your “Atomic System”. You just define the text basic options, like weight, size, spacing, line height and that’s all. I don’t have colors in text styles and colors in layer styles like Sketch. In Figma, it is one place of truth and if you change it in one place it will change everywhere. You can save colors, fonts, shadows separately and use any combination you want to define your main style. This is how Atomic Design should work. Got it Sketch?

The last one about components in Figma. In Sketch if you have a symbol you can only modify through the overrides, but you cannot remove elements inside the components. For example, if you have a button with an icon, you have to create 2 symbols, one with an icon and the other without the icon. Figma’s components are a bit different, you can change the overrides but you can also modify the component layers and the properties of the layers.

Unfortunately, our master components won’t create on the extra page like in Sketch where we have a “Symbol” page. So you must be aware of that when you’re creating your component, to copy master onto a new page. Too bad.

Smart Grids

Smart Grids in Sketch? Nah. Too complicated. We had a problem with creating a good grid in Sketch. You changed one value, the other one changed. You corrected it and again another value has changed. Probably Rows is the only Grid in Sketch, that is easy to make and you can’t mess it. But when you created a new artboard, you cannot apply the grid you previously made, you have to create it again or just copy the artboard with the correct grid.

Figma made grids like another element of atomic design. You create grids with few clicks (you can define your column/row width, your margins and how many columns or rows you want), you add your grid to your Design System and you’re ready to go. 

The client wanted a change with smaller margins? No problem. You just edit your option in Grid System and all your artworks with applied Grid updates, too. Again, a strong point for Figma. 

Place Image

In Figma, you can just place the image into the shape and when I resize, it will act as a mask. Don’t think about it as it’s nothing. It is a huge advantage that saves you time. You don’t have to worry again about resizing your mask and image differently. The image will just fill the shape saving original aspect ratio. 

Plugins, plugins and plugins

Yes, yes and yes! Initially, when Figma came, the biggest disadvantage was no support of plugins. Thank God, it changed. Now the library is full of great plugins and thanks to reviews, you can be sure that a plugin won’t mess up your project file. Icons, animations, prototypes, flows and even 3Ds. The variety of plugins it’s just amazing. 


A few weeks ago Zeplin redesigned their own plugin with Figma and I must say that it’s great, besides one option but I will tell you more about it later. 

As you export frames and components, Zeplin now keeps track of them. After a design iteration, you can export all your changes in one-click using the handy button on the right panel. 

Zeplin also will automatically generate an asset for developers in different formats and sizes based on your project type and if a master component is exportable in Figma, Zeplin now generates assets for all of its instances automatically. It has pros and cons. Why? 

You don’t have to worry about other components. You just take care of your master. Awesome but… when you have a massive file, with a lot of frames and components and you try to export them all – it will generate every asset exportable. So you end up with 10 000, 15 000 elements to export (sic!). I had that situation many times. And unfortunately, every time Zeplin threw me an error in the middle of this process, I was forced to export frames by parts.


Figma has plenty of shortcuts and they give us a great option to take a look, what kind of shortcuts you used and you didn’t. Just click that question mark in the bottom right corner and select Keyboard shortcuts. You will find a lot of pages with useful shortcuts. The blue one – you used this shortcut at least once and the white border means that you didn’t discover or used this shortcut. When you use it, simple animation will pop up. That’s what is called a microinteraction.

Other smart things that we love about Figma

  • Frames vs. Artboards – a frame is a primary object that you design within. You can have frames within frames, enabling you to set constraints and grids in child frames.
  • Sketch Support – you can just drag & drop your Sketch File into the Figma dashboard and you’re good to go.
  • Pricing – not sure about Figma? No worries. Just create an account and start designing. Figma is completely free. Yes, Free! 
  • Prototyping – no need to use Sketch and InVision. Just make your design in Figma and prototype in Figma. It works well, not great but still better than Sketch. Also, you have plenty of options for animating elements inside your frame. It’s like a little Principle. 
  • Figma Mirror – our worst nightmare was Sketch Mirror, sometimes it worked, sometimes not and based on a Network, not an account, you could see someone’s work instead of yours. Figma came up with a solution. You just sign to your account and it will mirror the actual artboard you’re working on. 
  • Handoff – developers are curious about your design? No problem. Just add them to your project. They can take a look and in case of a problem/question, they will leave you a comment.
  • Comments – at iteo, we have a simple board with Designer Name, Jira link, Project Manager, Mail, etc. We also have a board where the client/developer etc. can leave feedback in the form of a comment which Figma allows to. Simply press C and write it down!
  • Smart Layout – Hell yes. Finally, we can make components that adjust by themselves, without worrying if anything is the same, or we didn’t mess something up.

Does Figma have any disadvantages?

A few, but major. The main and biggest is that you can’t work without an internet connection. It will simply won’t load your work. We all sometimes have a situation when our ISP failed, or there are technical repairs. In those cases, you won’t be able to load your project.

The second one. We really miss the Symbol page and sending a master component to that page so you will never lose it in your project. Maybe in the future… 

It’s been already almost 3 months with Figma. Great months and I’m amazed how they manage to create such a great tool. I didn’t found that much of problems, they may show up in the future. And if they will, I surely come back with another article.

If you want to work with our team at iteo – contact us. We can create extraordinary software with pixel-perfect design just for you.

Call Center: to Outsource or to Automate?

Call centers are still a very common concept to be implemented into companies that need quantitative, scalable customer support. But they often become ineffective – when the number of requests grows, when the employees are overwhelmed with workload or when we need to offer more services. There are many ways to optimize call centers – let’s find out which ones can be beneficial for your business.

Communication via voice channels is still one of the most valued by the customers. That’s because they give the users a feeling of personal treatment. They can talk with a real person that cares about their problems and does everything to fix them. Talking human-to-human creates space for nuances and complex issues.

Customer support facilities like call centers also address the need for constant contact between the client and the brand. People trust companies that answer their phones and often look for information about businesses by calling them and asking questions. 

So what should you do to optimize the work of your call center?

In-house call centers – pros and cons

So the internal call center means that you rent an office space, hire people, buy hardware and take care of the whole process yourself. It needs a lot of constant investments – paying for the location and salaries, maintenance of the equipment, having managers that will organize the work and control the quality of the service. There’s a lot to remember about and it takes a significant chunk of your budget every month.

If you are not scared of the costs, you might benefit from creating a call center on your premises. Being able to look over the daily operations can actually be an advantage, but also a drawback. That’s because it can take a lot of time and effort. Without a good structure based on the positions of your employees, you will probably waste a lot of energy trying to know what’s what. You need analytical, competent and experienced subordinates that will report the work for you thoroughly.

As you can see, there’s a lot to think of and it’s not always a bed of roses. You can optimize all of the processes you handle with your call center – and there’s a couple of ways to do it. But first, we should take a closer look at all the purposes we usually consider opening call centers.

Processes served by call centers

Here’s the overview of the most popular cases that are solved by call center employees. They are the perfect material for optimization.

  • Debt collection

It’s quite a sensitive and unpleasant process that has to be done when the clients are not paying on time. Calling and reminding them about the debt is tough but needs to be done. This type of process has to be treated with extreme caution to not break the trust between the customer and the company. It also requires high effectiveness.

  • Conducting surveys

To constantly grow the quality of your products or services, you need to collect feedback from your clients. Call center workers contact the users that recently decided to become one of your customers and ask them about their satisfaction. Then, they report the results to determine which areas require improvements.

  • Booking appointments

Many clients still rather call the facility themselves and book the appointment than use mobile apps or web systems to do so. Giving them this possibility helps you maintain a significant group of clients. Confirming and changing the dates, as well as canceling appointments should also be available.

  • Sales and marketing

Informing clients about promotions and new products is also a part of a call center’s job. They also place sales offers directly so the process is simplified – the person on the other end of the line doesn’t have to walk to a store to purchase something. Employees can make reservations or send packages and then inform the customers about the status of their orders.

  • Malfunction submissions

When there’s an issue with hardware or something’s broken at home, people want to act fast. And there’s no better way to quickly submit a malfunction complaint than calling the provider or service. The customers should also have a chance to find out when the problem will be fixed and what’s the stage of request processing.

  • Providing information

Sometimes there’s just a need to find out something about the company or their products and services. And going to the source is the best way to do that for so many clients. You need to be able to communicate all the details comprehensively and transparently. This way, the users that call you will understand everything they were asking about and your brand’s opinion will improve.

  • Technical support

Explaining how stuff works and fixing small technical errors is the second easiest way to do it, after meeting face-to-face with a service rep. Sometimes reading a manual can be not enough – when weird issues start to pop up or we can’t understand the instructions. Explaining everything by the phone will take less time and is a chance to pass additional information about the product.

How to optimize a call center?

You have two ways to do that: you can outsource your call center needs to an external contractor or automate the processes mentioned above with a voicebot.

Outsourcing means you keep the human contact factor but you don’t need internal infrastructure to keep the operations going. This solution is more scalable than having a call center on-premises, but it can mean you have less control over the whole system. You will probably receive reports and other useful documents but you won’t be able to visit the place whenever you want to.

When it comes to voicebot, you can read more about them in our previous blog articles:

Optimize Your Customer Service with Voicebot

How to Create a Perfect Voicebot for Your Business?

Voicebots, chatbots and livechats. How do they work?

Automating a call center with voice technologies can be highly beneficial. First of all, you save time because you don’t need to recruit, hire and onboard new employees – and we know that with scalable call centers your needs will grow. It’s also efficient budget-wise as you need just one technology to provide service simultaneously to multiple clients 24/7.

You may not be sure about this whole voicebot idea as it’s not a human being. It might not be able to solve very complex cases but it’s pretty much independent if you program it right. We also created our own voice product at iteo and we always take care of implementation so all our clients are satisfied with the results.

Voicebots are quite universal, as they can provide various services – including all we described above. Their capabilities are quite impressive – thanks to artificial intelligence and other algorithms. A bot will not only hold a conversation but because it’s connected directly to the database, it will send all the information in real-time. It can also analyze data and create insightful reports that will be useful for your future business decisions.

Conclusion – what to do with my call center

Become the master of customer service and look for innovative methods of optimization to make your call center effective and liked by the customers. It’s one of the elements that build your brand’s image so it is crucial to do it carefully and with your business goals but also clients’ needs in mind.

We recommend reaching out to us if you want to discuss voicebots and how this technology can improve your company’s work. We will help you implement it into your current, existing system or we will create something completely new – whatever your vision is. Find out that we are a reliable business partner and can help you expand your business in any direction you want. 

Voicebots, chatbots and livechats. How do they work?

Modern customers have really high demands. Not a surprise here – constant digitalization and automation of business processes accustoms them to get what they want almost instantly. Having customer service available 24/7, being in constant touch with companies, calling them without a need to wait for a free line, running errands using only a smartphone – the list goes on. Today we give you 3 solutions that will help you to truly optimize your operations.

How can we meet the needs of the market and the customers themselves? There are two options – text or voice. The first one is more convenient for people who don’t like to talk to others or can’t do it for some reason. The latter can definitely be faster and bring more personalized, detailed experience.

Text automation usually happens via some form of online chat. And voice solutions are mostly available via phone calls. Let’s discuss a couple of different options and see what we can expect out of them.


Livechat is a form of help desk where all communication between the user and the customer service rep happens through an online chat. The conversation resembles the one that we conduct with our friends on messaging applications.

To provide this type of communication to our clients, we need a widget installed on our website. It will allow access to the chat window that will connect the user with the agent on the other side. Oftentimes, brands use Facebook’s Messenger widget to allow customers to contact their fanpage directly from the website. Also, it doesn’t require any additional systems and programs to operate the livechat.

As for the administrative side, there is also an application that allows customer care employees to answer requests from the clients and converse with them to fix their issues. For Messenger, that would be the fanpage panel where every person with authorization can answer sent messages. Off-the-shelf systems provide their own solutions.


The whole process is similar to livechat described above but instead of a person, we have a bot answering questions. It is a piece of software that we program beforehand with knowledge about our company, most common issues and other useful data.

Chatbots used to sound unnatural and they wouldn’t share any information unless we would provide a question that was written exactly the same way it was programmed by the owner. Now, thanks to artificial intelligence, machine learning and other algorithms, chatbots are behaving quite human-like and with time their database evolves to provide even better answers.

Facebook Messenger also provides chatbot features that every brand can turn on in their chat. This way, even if the owner or admin is not available, the bot will provide useful information about some topics.


An original solution that is still quite fresh on the market. At iteo, we even offer our own voicebot called Hellobot. It is a tool that allows us to optimize and automate almost any process within the company. Basically, it’s a voice technology that is programmed beforehand to answer or make phone calls and talk with clients about particular issues. 

A voicebot can be used in debt collection, sales and marketing, booking appointments, receiving complaints and many more cases. It provides clients with useful information, but it can also confirm visits or change their dates, register technical malfunctions, take orders – it has countless capabilities. From artificial intelligence customer care tools, this one has the most personal touch – because it can not only talk but also take concrete actions. Artificial intelligence is once more a technology that helps the bot to improve and provide a more individual approach to the client.

This is a more expensive option that is not available as a DIY. To get a voicebot for your business, you should reach out to a company that can program one just for you – like iteo. We provide Hellobot that can be implemented almost seamlessly into the system you currently use for customer support.


Artificial Intelligence

AI is an area of computer sciences that is dedicated to creating algorithms that will operate similarly to human brains. So the goal here is to make them understand our behaviors and mimic them in context. Also, particular divisions of artificial intelligence focus on human-like abilities – for example, machine learning was created to constantly improve itself and make predictions based on previously provided data.

This is the technology that gives the chatbots and voicebots this human-like feeling where they can interpret speech, answer questions written in various ways, understand non-specific inquiries and constantly learn how to better themselves based on past performance. Advanced products based on AI can also analyze data they collect from the customers and draw conclusions that can be essential for business decisions.

Will artificial intelligence substitute people in some professions? Possibly. But for sure it will be developed to perform even more complicated tasks and to resemble humans as much as possible. This way, using AI in daily business processes won’t seem lifeless for people and the capabilities will significantly outgrow the ones of human employees. No worries, there is a lot of work that still needs creative approach robots can’t achieve. We will work side by side for spectacular results.

The Future

Algorithms and voice technologies undergo constant dynamic development. This way, companies will be able to offer more sophisticated yet cheaper solutions. And that will probably happen quite soon. Voicebots and complex chatbots won’t be available for big corporations only. More commercial use is a matter of time.

Optimizing and automating business operations has an important justification – our team members can take care of tasks that require their attention instead of the repetitive actions that would exhaust them. Robots are way more effective in this department. This way we can invest in the creative growth of our employees and get better outcomes when they leave these difficult but still important duties to machines.


Which solution will be truly suitable for your business? That depends on your budget and current customer support needs. But even startups and small companies can afford to build livechat infrastructure or use a chatbot to improve their results when it comes to communication with clients.

If you are interested in these innovative tools – don’t hesitate to contact us. We will help you to pick the best one for achieving your goals and addressing your pains. Then we will prepare the whole system and implement it according to your requirements. Let’s work together and create software that will complement your brand in the best way!

Quick Dive Into Azure Service Bus

Are you developing an enterprise product? Need the right solution for communication between microservices? Looking for a way to improve the reliability and scalability of your application? Azure Service Bus might be the solution you are looking for.

Stay with us to find out!

What is it? And why should I use it?

Azure Service Bus is a highly reliable cloud messaging service. Service buses, in general, provide a solution for communication between services. Modern software starts to be created in microservice architecture more and more often. The need for a reliable communication solution is not a new thing, though. In the classical approach, one would use services like RabbitMQ, Mass Transit, or so to achieve this task.

What advantages does Azure Service Bus give, then? Besides many advanced features, which will be covered, it’s the availability. Advertised as dedicated to enterprise solutions, it’s one of the most mature products, which gets constant support for many years, used in many commercial projects. It grants disaster recovery, so even fire or flood won’t stop services from running. Being serverless PaaS, serverless solution frees the user from the need for installation and supporting local instances of the product, saving time and money, in the result. Everything can be configured in the Azure Portal with just a few clicks.

Quick Overview

There are two main ways Azure Service Bus can be used:


Queues let us implement First In, First Out (FIFO) communication between services. When using Queues for every message, there can be only one receiver type. Even if there are multiple instances of such service, only one of them will handle each sent message. Communication participants are named “message sender” and “message receiver”.

Sent messages are stored, even if the receiver is temporarily unavailable, and delivered later upon request (pull mode). Another advantage of using queues is the possibility of the sender and receiver to work with different frequencies. While messages can be sent very often, the receiver may choose to process them on its own rate to prevent crashes.


Topics can be used to send messages in publish-subscribe scenarios. Unlike in Queue, where each message always has only one type of receiver, topics can have multiple. Each subscriber gets their own copy of the message. There is a possibility to set rules that define which receiver can get which type of message so certain one can be sent to the wanted group of receivers only.

Which should I use?

If your applications are going to communicate with each other in one to one model, and your messages must always be delivered at all costs, use Queues. For example, for receiving many orders, which all must be processed.

If you need to broadcast messages to many systems that can react to the same message with different actions, use Topics. It can be used, for instance, to send notifications via many services (one service can provide SMS notifications, another – email, and so on). Topics are perfect for implementing microservice infrastructure where many services can react to a particular event.

Azure Service Bus – Advanced Features

Azure Service Bus has some advanced features that put it ahead of the competition. Let us list just some of them.

Dead-letter Queue

Azure Service Bus supports a queue of messages that cannot be delivered or processed where the operator can look into the issue, correct it, and resubmit the message.

Get-disaster recovery

When the entire region or datacenter of Azure experiences downtime, geo-disaster recovery allows data processing to continue on another region/data center.


Client-side batching enables a queue or topic client to delay sending a message for a specified period. If the client sends additional messages during this time, it transmits the messages in a single batch.

At least once / At most once delivery

Depending on the configuration of the Bus, a message can be processed in two ways. With “at least once” approach, if the application crashes while processing the message, it is delivered when the application restarts or is sent to another instance of the receiver if such exists. That guarantees, each message is processed at least once.

“At most once delivery” approach guarantees that once processed messages will never be received again, mitigating the risk of duplicating data (sending the same order twice or sending the same message multiple times).

We could go on and on with those features, but if you like to know more, you can always visit a page dedicated to Azure Service Bus and find out yourself.

How do we use it?

Do you want some real-life examples? Sure thing! We also use Azure Service Bus in our projects! Here are some use cases in which it comes in handy.

Sending emails with the order confirmation

User has placed their order. We have saved all necessary data in our database and now we want to send them an email with the order confirmation. Still, we don’t want them to wait until the service for notifications finishes its job, we want to show them nice “your order has been placed” as soon as possible. And what if the messaging service is down at the moment? Using Azure Service Bus, we don’t need to worry! The message will be sent after completing the request, and if it fails for any reason, it can be sent later.

Integration Events

If you are familiar with Domain-Driven Design in a microservice architecture, you probably know the term “integration event”. In short – integration event is some broadcasted message that might be of interest to third parties or services from other domains. Let’s not dive too deep into the DDD concept, for now, it’s left for reader’s research, and let’s focus on some particular cases. 

All users’ orders should be stored, besides in our database, in the partner’s service. After an order has been placed, saved in our database, just before we notify the user about success, a message is sent to the Service Bus with details of the order. Partner’s service can subscribe to those types of messages and react with them in the desired way. If more services like that are added in the future, all requirements will include subscribing to the same message and handling it accordingly.


It’s worth mentioning that Service Bus is not the only one Azure messaging service. There are also Event Grid and Event Hubs, which all share some similarities but are designed for different scenarios. But that’s a story for a whole new article.

To wrap up Azure Service Bus is a solid enterprise solution to manage your communication between services with excellent scalability and reliability. It’s easy to create and maintain, and being popular software, users can find lots of solved problems and original usages online. Want to find out yourself? Then get on the Bus and try out! And if you are looking for a reliable business partner – let us know. We can work together on your software development product to achieve spectacular results.

Microinteraction: a small but essential design element

The current market is very competitive, with thousands of products that fulfill the same purpose. Microinteractions and animations are the magic things that keep us coming back to the products we love, but you have to use them deliberately.

Microinteractions are rather small and single-purpose focused events that occur within apps. The ideal microinteraction helps the user to accomplish a task in the most delightful way and then – interpret the results. 

Why should we create Microinteractions?

Microinteractions, as we mentioned in the intro, are catching our attention and make us want to use the product constantly. They’re the satisfying little details that happen when we perform a single task. They humanize products and make them more enjoyable. Still, many web developers and designers still ask such a question. They don’t understand that ignoring microinteractions may cost their clients a lot. Attention to detail is what differs an exceptional website from an ordinary one. You may ask, but what are the pros of it?

  • Accomplishing a single task more easily
  • Enhancing navigation
  • Making it easier for users to interact with a piece of data
  • Viewing or creating a small piece of content, such as a status message or update
  • Directing user’s attention to a particular element
  • Offering recommendations to customers
  • Controlling a process through constant feedback
  • And, finally, they just make your app or site more emotional

So, what’s the anatomy of microinteraction?

1. Trigger – starts interaction, should be rather visible and prominent, depending on how important the action is.

2. Rules – they determine how interaction acts after initiating it, how and if it’s animated, and so on.

3. Feedback – gives user information whether action s/he performed was completed successfully.

4. Loops & Modes – they decide how animation acts over time – is animation different for the first time? What happens if you hold the button (trigger)?

What are the most known microinteractions that we all know? 

We can see MI in almost every app. Apple is doing great at this. Just launch a random Apple native app and I bet you will get some of the microinteractions. 

That subtle bell animation combined with little vibration when you switch your iPhone to Silent Mode (sometimes I did it just to see that great bell swing – great job there, Apple!).

While you press the Like emoji in Messenger for too long, it starts vibrating, and the animation shows you this: “ONE SEC LONGER AND I WILL POP!” – then just a “Poof” sound appears and it looks like nothing happened.

The next one, one of the most common microinteractions, is when you swipe your finger over the alphabet in the contact book. You see what current letter you are browsing, combined with zoom effect and vibration. It gives you this really nice feeling of browsing through pages like in a normal book.

The last example (in this article, because there is an infinite list of common interactions) – the click when you turn something on and off. Confetti while you complete one of your tasks in the app. A trophy or achievement.

Mobile games are packed with microinteractions. You see them on every page, every task, every move you do, it’s all interactions. They encourage

you to do more, more and more. Just to stay in the app a little bit longer 😉

What’s the relationship between animations and microinteractions?

Let’s get one thing clear: animations and microinteractions aren’t the same things. Microinteractions are small functionalities that serve one purpose only, while animations are useful add-ons that complement the interactions.

An animation can be as simple as the coloring of a thin bar that indicates progress on a task, or display of a side menu after the burger menu icon is clicked on. The point is that these micro-animations are there to make the microinteractions intuitive and to help them convey their function to the user.

Sometimes you see a Dribbble shot with so many animations – everything is moving and sliding so easily. Unfortunately, it’s wrong. Sophie Paxton wrote a really important sentence in her article:

“Animation is like cursing. If you overuse it, it loses all its impact.”

And that’s true. Probably if you’re into animation, you know very well the basic principles of animation by Disney. It’s great, but only in the case of animation. If you use it in the app, it really slows the user down. 

So how can I apply animations or microinteractions to my app and website?

It all depends on what kind of application or website you have. What do you want to achieve with that? What is your main audience?

For example, if you’re making an app for children, try to focus a little bit more on animations and interactions, make really cute animated onboarding, try to award them with microinteractions for every completed task, etc. Things look different when you’re making an app for a more adult audience. Animated onboarding? Sure, but it should be subtle and non-distractive, including your microinteractions. 

Protip: Having too many microinteractions can lead to the user being distracted or losing sight of the real function of the app.

In iteo we’re trying to stick some of the simple principles that we worked out with time:

  • Think of the benefit that animation can bring to you instead of “it’s cool”.
  • Keep animation duration at or under 400ms.
  • Linear animation is boring, mechanical and looks robotic. Avoid that.
  • Give your animation a simple Easy In or Easy Out. You can even combine these two and add Easy In and Out.
  • Spring and bounce are okay. But only when it’s really needed. If your animation doesn’t require it, skip it. 

And finally, which tool should I use?

The variety of programs you can use is very wide, but based on how simple or complex you want them to be, there are different tools.

If you’re familiar with coding:

Mobile: Xcode, Android Studio

Mobile or Web: Framer

Web: CSS animation

If you want to create more detailed Interactions with simple drag and drop options:

Principle, Adobe Xd, Origami Studio, and Protopie

If you want to create detailed interactions + animations:

After Effects

In my opinion, the best one is After Effects. Why? Because the only thing that limits you with it is your creativity. It’s a really powerful tool that requires a lot of work and learning but when it “clicks”, everything changes. 

After Effects also has one powerful extension. Which is Lottie (we’ve mentioned it in one of our articles about animations – check it out!).

Lottie is a JSON-based animation file format that enables designers to ship animations on any platform as easily as shipping static assets. They are small files that work on any device and can scale up or down without pixelation. You can use Lotties on basically any platform: web or mobile. This means you can integrate them seamlessly into both apps and web pages. Lottie animations can even be used as stickers on messaging platforms. It isn’t technically limited to web and mobile. You could use it on desktop apps as well as some watches. Also, the size is super small. 

The wrap-up

Go ahead and observe the little things in all the apps you use frequently. You’ll start to understand that these interactions are everywhere and yet are so easy to overlook. You’ll notice that micro-animations can spice up any app, and guide the user to where the action is.

And if you would like to cooperate with a seasoned team of designers that know all about microinteractions, animations, illustrations and more functional and pixel-perfect solutions – contact us. We will create an extraordinary product just for you.

Client Side vs Server Side Rendering

What are the performance differences between CSR and SSR? It depends but also, the type of rendering can influence many processes in the mobile app. That’s why we would like to compare these two types of techniques for rendering applications on the example of Next.js and Create React App. Let’s see what are the results and which rendering method will be suitable for different kinds of projects.

Quick overview


Client Side Rendering – rendering method that relies on executing JS on the client’s side (browser) via JavaScript framework. The client will first request the source code which will have a little amount of indexable HTML in it. Then a second request will be made for the .js files that contain all of the HTML in JavaScript as strings.


Server Side Rendering – rendering method where all of your page’s resources are kept on the server. When the page is requested, the HTML is delivered to the browser, rendered and JS and CSS downloaded.



Next.js is a React framework that allows you to create a React application with server-side rendering. According to

“With Next.js, server rendering React applications has never been easier, no matter where your data is coming from.”

The framework uses such libraries as React, Webpack and Babel.

Create React App

According to documentation

“Create React App is an officially supported way to create single-page React applications. It offers a modern build setup with no configuration.”

It is a tool built by developers at Facebook that gives you a massive head start when building React applications.


To compare these two techniques, first I used Next.js to create a React application that supports server-side rendering. In the second case scenario, with Create React App I could use React for client-side rendering.

Surely, there are also other frameworks when it comes to either choice. I have chosen two of the most popular to make that comparison.

The comparison

The performance was tested on a simple example with one API request and JavaScript dependency – Moment.js, using the Chrome browser. Here are the Lighthouse results for a full-page load on each application.

Next.js (SSR)

Create React App (CSR)

One of the more notable differences is the First Meaningful Paint. That means the time at which the user feels that the primary content of the page is visible. For the CRA it is 3,5 seconds, Next.js 1,3 seconds.

Also when it comes to the Speed Index, which shows how quickly the contents of a page are visibly populated, CRA is delayed 5,5 seconds, compared to Next.js (3 seconds).

In both examples, with CRA the image and non-image content cannot be displayed and the application becomes interactive when the JavaScript files are downloaded. That’s why these results differ so much.

If you are interested in a more detailed description of these metrics, read the Lighthouse Scoring Guide.

SSR – pros

  • Thanks to better SEO, search engines can crawl the site higher
  • The initial page load is faster
  • Useful for static sites

 CSR – pros

  • Rich site interactions
  • Website rendering is faster after the initial load
  • Great selection of JavaScript libraries

SSR – cons

  • Frequent server requests
  • Full page content reloads
  • Overall page rendering is slower

 CSR – cons

  • If not implemented correctly, low SEO score
  • The initial load may require more time
  • Requires external libraries, in most cases


For a web application with React, better SEO score, easier social media optimization and faster render, you should think about SSR and framework like Next.js.

If you are building a SPA (single page application), and you don’t want to configure everything on the server’s side like i18n, router e.t.c. you should use Create React Application.

Of course, further recommendations are going to be based on the type of project and many other factors. Contact us to get detailed information about mobile or web development. We will gladly cooperate with you to accomplish your business goals!