← All case studies
RapidLogic in-house project
TSL / Municipal services · Customer app (web + PWA)

The system that answers the phone for a service company

Ordering a pickup in this trade starts with a phone call and ends with an invoice handwritten in the truck cab and a ring binder at home. We built a system in which the customer sees the tank level, the date, the payment status and every document, so they stop calling to ask when somebody is coming. The customer side took 40 hours, the sensor integration another 20, because it was built on the same system as the dispatcher panel and the driver app.

Tidly customer panel on a laptop: order details with billing data, service address and payment status
60 h
Of work: 40 h on the app, 20 h on the sensor
2
Ways of measuring how full the tank is
1 account
Shared by the marketplace and the app
0
Phone calls needed to place an order

A fourth window onto the same data

Tidly is an in-house RapidLogic project, a two-sided platform connecting homeowners with waste collection companies. We have already described the marketplace, where an order is created, the dispatcher panel, where the company plans its working day, and the driver app that travels in the truck cab. This entry covers the window through which the customer looks at that same set of data.

The split between the marketplace and the customer app works differently than intuition suggests. The marketplace is one of the front ends for placing an order, not a separate product. The customer signs in with the same account, sees the order in the app once it is placed, and returns to the marketplace when they tap the order button inside the app. From the user’s point of view this is one place, which once serves to buy the service and for the rest of the time to keep an eye on it.

The app exists in two forms: a panel in the browser and an application installed on a phone from a link. The feature set in both is identical, because this part of the system is simple enough that splitting it made no sense. The desktop version was added for people who prefer to deal with it at a desk.

A service you have to chase by phone

Companies you can deal with online make up between one and five percent of this trade. They read messages, take bank transfers and answer outside working hours. The remaining ninety five percent have to be called and asked for a date.

That is where something starts that no feature list captures. The line is busy, so you leave your number and wait for a call back. You work from home or have meetings in your calendar, yet you have to stay by the phone, because there is no telling when somebody will ring. When it finally happens, the voice on the other end tells you there is no time right now.

Two loose ends are left after the pickup. The invoice is sometimes handwritten in the truck cab, while the contract that the tank owner is legally required to hold arrives only once they ask for it themselves. Both end up in a ring binder on a shelf, and during an inspection both have to be taken off that shelf.

How it works without an account

  • Every order starts with a phone call and a wait for a call back
  • The date is agreed by voice, with no record to come back to
  • The tank level is checked with a torch or from memory of the last pickup
  • The invoice is handwritten in the cab, the contract arrives on request
  • Documents sit in a ring binder, the pickup history exists only in your head

How it works in Tidly

  • The order is placed from the account, without talking to anybody
  • The date, the job status and the payment status are visible at any time
  • The tank level is read from a sensor or calculated from history
  • Billing details are entered once and issued with every order
  • Pickup history with a search box, available from the phone and the computer

Five things the customer handles alone

We designed the system around the questions customers ask over the phone. Each of them got its own place on the screen, which is what stops it from being a reason to call.

How long until the next pickup

The first screen after signing in answers the question that matters most in this service. A bar shows how full the tank is, below it sits the date of the last reading and the predicted moment the tank fills up. Further down are the three most recent orders with amounts and statuses, and at the bottom an order button that takes the customer to the marketplace.

This is where the point of the whole platform becomes visible. The tank owner stops guessing when to call, because the information is in front of them.

Tidly customer dashboard on a phone: tank level bar, last reading date and three most recent orders

The dashboard answers the question customers used to reach for the phone with: how long until the next pickup.

Liquid sensor settings in the Tidly app: a choice between a real and a virtual sensor

The customer chooses where the number on the dashboard comes from: the sensor in the tank or the pickup history.

Two ways to the same number

Tank level can be shown in two ways and we built both. The real sensor is an integration with a physical device in the tank that exposes an open API. The platform reads the liquid level from it, so the bar on the dashboard shows the actual state. That part was built and tested on a working tank.

The virtual sensor answers the fact that most people have no device in their tank and have no intention of buying one. The algorithm takes the average number of days between previous emptyings, checks how many days have passed since the last pickup, divides one by the other and turns the result into a percentage. The longer a customer uses the platform, the more accurate that estimate becomes, because the history grows.

The second option is commercially more interesting than the first. Value that normally requires buying hardware is produced here from data the system already holds.

An order seen from the inside

The order view gathers everything that used to live in the memory of both sides after a phone call. At the top the ordered service with tank capacity, extras and the total. Below it the customer and billing details, the service address with approach notes, the details of the company that took the job, and the service status with the payment method and payment state.

Personal details, billing data, address and tank specifics are entered once, in settings. With every following order the system fills them in itself, which removes both the retyping and the company’s questions about things already covered during the previous pickup.

Order details in the Tidly customer panel: service, customer data, billing data, service address, company details and service status

One order in full: service, billing details, address with notes, company, plus payment and completion status.

A history that replaces the ring binder

The list of all orders has filters by date range and status, a search box and a result counter. Every row carries the service, the company, the order date, the delivery date, the amount and the status. This is exactly the set of information that previously had to be reconstructed from receipts in a binder.

One more thing was meant to stand here: an export of the pickup list to a spreadsheet or a PDF, useful during a municipal inspection. That feature was never built, which we cover below.

Order history in the Tidly customer panel: filters by date and status, a search box and a table with service, company, date, amount and status

History with filters and a search box. The same view works on a phone, in a vertical layout.

Settings that show where the project stops

The settings screen is the most candid part of this entry, because it says on its own where the working part ends. The active items are user details, billing details, address and the liquid sensor. Below them sit three greyed out: automatic pickup, notifications and other settings.

That is what a project stopped on purpose looks like, rather than one abandoned. The foundation those three items were meant to stand on is ready, while the move itself waited for a signal that the product would catch on.

Tidly customer account settings: active user details, billing details, address and liquid sensor, with automatic pickup, notifications and other settings greyed out

Three greyed out items are the list of things we did not build, stated by the interface itself.

What this system does not have

The biggest gap between what the product page promises and what actually stands in the system concerns automation. The sensor reading works, while everything meant to happen once a threshold is crossed was planned and postponed.

Not built

  • Notifications about tank level and about order status changes
  • An order placed automatically once the threshold is crossed
  • Payment collected automatically for such an order
  • A contract with the company concluded automatically
  • Export of the pickup list to a spreadsheet or a PDF for inspections
  • Company ratings, a chat with the driver and native iOS and Android releases

Why that way

  • The hard part, reading the level from a device, was built and verified
  • A notification and a threshold order are a rule on top of an existing reading, work measured in days
  • The contract comes down to accepting the company terms and generating a document, which we have already done in a catering system
  • The spreadsheet export is a few hours once the format required by the municipality is confirmed
  • All of it waited for a market signal we deliberately stopped looking for

How far the testing went. Accounts were created by family and friends, and between a handful and a dozen people placed an order through the marketplace. The sensor integration was verified on a working tank. There was no rollout at a company with paying customers, because the commercial development of Tidly was paused, which we cover in the marketplace case study.

Sixty hours for a fourth view

The customer application was built alongside the rest of the platform, on a data model designed once. Below is the course of this part of the work.

Foundation
The data model of the whole platform
Orders, statuses, payments, addresses, tanks and companies designed for the marketplace and the dispatcher panel. The customer application uses the same records, so it needed no database of its own.
About 40 h
The customer panel and the phone version
Dashboard, order details, history with filters, settings and the address and tank configuration. The feature set is identical in the browser and on the phone, because the app is simple enough that splitting it made no sense.
About 20 h
Integration with the level sensor
A connection to the open API of the device in the tank, a reading of the liquid level and showing it on the dashboard. Verified on a working tank, which closes the question of whether the automation is feasible.
Step four
The virtual sensor
An algorithm calculating tank level from pickup history, for everybody without a device. A switch in settings decides which number reaches the dashboard.
Testing
Family, friends, a dozen orders
Accounts created outside the team, orders placed through the marketplace. Without a rollout at a company with paying customers.

What this means for a service company

We have no results from a rollout at a paying carrier and we are not going to invent any. What we do have is a measured amount of work, a working device reading and a working algorithm, and that is enough to show what it costs to move a customer from the phone into a system.

60 h
Of work on the customer application
Forty hours on the app and twenty on the sensor integration
2
Ways of measuring tank level
A reading from the device and an estimate calculated from pickup history
1
Account for the marketplace and the app
The move between them is invisible to the customer
0
Phone calls needed to place an order
Including the questions about the date, the price and the invoice

Why this matters beyond waste collection

The same situation repeats everywhere a service is performed at the customer’s place, returns on a cycle and leaves a document behind. Waste collection, rubble and scrap removal, oversized transport, mini excavator work, medical waste pickup. In each of those trades the customer calls with the same question, and the company answers the same call for the hundredth time that month.

The conclusion for an owner is not about features, though. The system removes work nobody measures, because it is spread across dozens and even hundreds of short conversations. Once the date, the status and the invoice are visible without asking, the phone only rings when something unusual happens.

The second conclusion is about cost. A fourth view onto the same data closed in sixty hours, because the data model was designed once and serves all four. Today we would build it faster still, with the AI-assisted engineering we show in the Fortress and Invoice Automation case studies.

The mere thought of picking up the phone to order a septic tank pickup turns my stomach. You call, the line is busy, you leave your number and wait for a call back, and then you hear there is no time right now. We built a system in which I see the tank level, the date and the invoice, so I do not have to call anybody.

Krzysztof Gromadzki, founder of RapidLogic
Krzysztof Gromadzki Founder of RapidLogic, creator of Tidly

Do your customers call to ask when you are coming?

A system with job status, history and documents removes dozens and even hundreds of short conversations a month from a company. In Tidly we built it in sixty hours, on a data model that already existed. A free digital audit will show what such a system could look like for you.

Book a free digital audit
See all case studies