MVP SaaS solution for corporate procurement and tenders
IT company Intelkon provides business process automation services. Customers come to Intelkon when they want to digitize business processes or improve work efficiency with workflow automation software. They can develop, for example, an employee training system or BIM for construction management.
Sometimes, they involve skilled, third-party specialists in their client projects, when necessary. For example, Evrone assisted Intelkon when they wanted to develop a tender management software solution, which would allow clients to manage and submit tenders electronically.
The challenge: automating the process of applying for a tender
Commercial tenders are very similar to government tenders. They require just as much attention to detail. Usually, a tender application is submitted on paper, and it contains many numbers that must be checked for accuracy. If several contractors participate in the tender for a project, the general contractor is forced to deal with all the documentation, which can include hundreds of pages.
Intelkon wanted to offer its clients an esourcing platform for online tenders, giving them the opportunity to digitize the entire process and reduce the amount of time spent on tenders. Instead of dealing with tons of printouts and literally running around from department to department, Intelkon’s clients would be able to electronically submit tenders, utilize a database of contractors with access control, and receive and manage bids, right on the website.
The main technical requirement was for the frontend: do not use TypeScript. The Intelkon team felt that this requirement would make it easier, in the future, to find people to support the product, and at the MVP launch stage, it would save time.
The solution: develop the MVP of commercial tenders service in six months
This is how the product works:
- The general contractor accesses the system and creates a tender, with all documents, drawings, amounts, and dates.
- The general contractor's manager sends subcontractors invitations to register with the system. They create accounts for themselves.
- Subcontractors with verified accounts can apply for the current tender, follow other general contractor tenders, and make bids.
- After the bids are received, the manager of the general contractor notifies the determined winner, and they sign all the necessary documents.
Defining MVP functionality
We started our work by discussing the future application and defining a feature list for developing the first version of the product. Intelkon's own team already had a UX designer and analyst, but we offered our help, as we already had experience in quick product launches. We know that, first of all, we need to launch only what will bring great value to users. Together, we discussed functional requirements and high-level evaluations of all document workflow tools and tasks, to understand how much time we would gain by eliminating certain elements.
For example, the transfer of all applications to electronic form would make employees’ lives easier, because there would be no need to do double work and print/send documents. They could just be filled out and uploaded through the form. But, we ditched the option to select individual jobs within the framework of one application. The idea was good, but it belonged in an update, so it was sent to the backlog.
Developing the backend and frontend
Backend development was started a month earlier than frontend, to reduce expenses. If we had started both at the same time, the frontend would have been idle, waiting for tasks.
The backend is written in Python 3.8, with the Django 3.2 framework. PostgreSQL 13 was chosen as the database, and the message broker is Redis. We used Celery to run asynchronous and periodic tasks and Poetry to manage dependencies.
We catch errors on both the frontend and backend, thanks to Sentry.
For the REST-like API, Django Rest Framework was used, while documentation is done using Swagger (auto-generated by the drf-spectacular library), and API authorization is done using JWT (djangorestframework-simplejwt).
To solve one of the main tasks of the product - working with electronic documents - we integrated the generation of PDF documents using WeasyPrint and XMLX using openpyxl.
For some project models, the "polymorphism" development pattern was used, implemented using django-polymorphic and django-rest-polymorphic.
Material UI was used to create the interface, satisfying an initial requirement of the client. On one hand, this put us in a box, but, on the other hand, we didn’t have to develop an interface from scratch. This approach speeds up development, since you don't need to write components from scratch, you can just take ready-made ones and tweak them, if necessary.
In recent months, we have been linking the frontend with the backend, adding API endpoints, and refining functions, as requested by the customer.
We were warned that requirements would likely change during the tender management platform development process, because the product is literally being built from scratch. Fortunately, our managers were ready for this, and we have been able to build the right communication system, in order to get a good result. Instead of waiting for pushes from the client, we actively ask the client about the results of their research, proactively collecting new requirements.
The MVP has been launched, it is undergoing testing, and Intelkon is holding presentations for customers. After the first demos, we collected a list of improvements and bugs and immediately fixed them, so that the first users would be more comfortable working with the product.
The plans are to collect new user requirements and bring the product to a full-fledged first version. For example, we are already implementing an extension related to the specifics of data storage for contractors, allowing them to import XLS and CSV tables.
If you are looking for a team to create an SaaS or business process automation solution, contact us using the form below, and we will help you determine how to get the desired results as quickly as possible.