The recruitment task

My task was to create a simple web application that settles up expenses and debts. A user should easily add information about new debts by gathering all the necessary data: who owes who, how much and for what. The user should also be able to check the current status of accounts, check history with others and notify (on behalf of the debtor) that the debt is already covered. I had to design and create a website with a diligent consideration of the UX and UI aspects. The previous version of the app had been called Bailiff, after an officer whose main responsibility is the collection of debts. Mine was designing Bailiff2.0.

After the first look at the content of the task I had mixed feelings. First I thought that I've already had done similar projects, in terms of the level of advancement, so I could handle it easily, but on the other hand I knew that every project was different and I would have some difficulties for sure.

I can say that the biggest challenge was the time I had to complete the task. 40 hours is a lot of time, but not for a beginner developer, believe me.

The trial period

Prograils were happy with my work and decided to check my skills during the ‘trial’ period. (You can read more about recruitment process at Prograils in our Playbook). During this time my task was to improve Bailiff2.0. The main change to be done was to integrate the existing application with Slack – the communicator we use at work. By integrating I mean that the user can use Bailiff2.0 via slash commands in Slack. Introduction of this feature was the first big difficulty I met because I have never used an outer API in a Ruby on Rails application before.

Bailiff2.0 is the second version, so when the live time was coming, I needed to migrate data from the previous application to the new one – no one wanted to lose information about owed and borrowed money. Migrating the data was very interesting and didactic for me, but at the same time it brought me numerous difficulties.

The result of my work

I think it’s time to present the result of my work on Bailiff2.0. The application consists of the web version integrated with Slack. In Slack, you can communicate with the app by a slash command: /bailiff.

There are five available commands and each one of them has its corresponding action in the web version of the application:

  • /bailiff help
  • /bailiff debt
  • /bailiff pay
  • /bailiff settle
  • /bailiff status

Let's start with the landing page:

Landing page

To authorize users, Bailiff2.0 uses the OAuth protocol. It allows to sign and log in using a Slack account.

After logging in, you can see your status - how much you owe and how much money you borrowed.

Dashboard page

To see this information in Slack you can use the command /bailiff status:

Slack status

Bailiff 2.0 gives you the opportunity to check the history and activity of others.

Activity with other

In Slack use e.g /bailiff @clakomy to check the status of a specific user.

Slack status with other

In the web version you can also check your recent activity.

Recent activity page

To create a new debt you can use form in web version or command /bailiff debt. You must provide user or multiple user, the purpose and the amount of the debt, like /bailiff debt @bercik95 10 @bartek 12 burger.

Slack debt command

To cover active debts you have to use the 'pay' action. When you gave money back in real life, just fill in the form in web version or use slash command in Slack, like /bailiff pay @bercik95 10 @bartek 12.

Slack pay command

When you gave your friend a credit and realized that they had already given you the money back and they hadn't saved this fact in Bailiff2.0, you can use /bailiff settle instead of waiting your friend use /bailiff pay.

If you paid too much, Bailiff2.0 creates an extra event with purpose Pre-payment which will be used in the future.

Every action you are involved in creates a notification in form of Slack message from Bailiff2.0 bot user - you won't miss anything.

Slack notification1
Slack notification2


I enjoyed designing both Bailiff2.0 and despite the challenges, I managed to perform this task properly. What feels really rewarding to me is the fact that the recruitment task I completed is now used on daily basis at Prograils. The first months at Prograils were really productive and made me want to constantly upgrade my skills.

At the end I would like to thank Robert Kaczmarek for leading me during my trial period.

Recommended reads:

Top photo by Freddie Collins on Unsplash