Photo by CHUTTERSNAP on Unsplash

Startup won’t profit, says who?— Creating Kargo’s First EBITDA+ Product

Giovanka Bisano
Kargo Technologies
Published in
6 min readMar 15, 2023

--

Kargo Tech has expanded its reach to the Door-to-door logistics business.

The door-to-door logistics business in Kargo refers to a national inter-island transportation service that runs by delivering shipper's goods via sea freight using containers. Sea freight is only our first kickstart and we plan to expand to multiple transportation channels soon!

This is a journey of the “First Mile” team (one of the product-engineering squads in Kargo)

How does the DTD shipment work?

I will describe it in a high-level overview.

First, we would borrow an empty container from our shipping liners and mount it into our truck, then we drive our truck to the “Stuffing Point” to fill the containers. After that, we bring the truck to the “Origin Port” and move the container onto the ship so it will be sailed to the “Destination Port”. Once it arrived, our trucks will take the container and drive it to our “Destination Warehouse” for unloading the goods from the containers.

Project Kickstart

We started this project in June 2022 by introducing the business to the product-engineering team. It is a very difficult thing to comprehend because, unlike B2C/C2C businesses, we never encounter this process on a day-to-day basis. Moreover, this new business is quite different from any existing products we have ever built.

Upon “Business Introduction” time, we spend hours explaining the business & processes to the engineers, using every whiteboard that we have, documenting every glossary and acronym. But we have to admit that after those hours, it is still unclear to us, we need more time for that :(

https://pixabay.com/photos/concept-man-papers-person-plan-1868728/

Development

Although it was difficult to understand business knowledge at that time, it was either go hard or go home.

How do we make sure that we understand what we build?

This question is a bit straightforward to answer. We just ask!
“There are no stupid questions” is a quote that I always elevate to my team. We also have a proper sprint cadence especially for transferring knowledge from the business side and transforming it into code in technical planning.

In our sprint grooming session, everyone should ask every question that pooped out in their head. Don’t hold back! In this session, we also bring the people from operation / domain-expert and ask them to explain the business problem, urgency, and impact that we might bring. Everyone (engineers included ofc) must know the user problem when leaving the room.

After sprint grooming, engineers are given enough time to explore the current codebase and do some research for calculating the complexity of a product that we gonna build in the upcoming sprint. All of the questions and requirements from the grooming session are translated into an “RFC” document where we write a technical document to solve the user problem. This technical meeting section will align Frontend and Backend teams making it easier to do integration.

Oversimplified Sprint Cadence in Kargo

Close Collaboration (Product X Biz X Engineering)

It’s a bitter pill to swallow, but I have to admit that working together from the office is making development easier. When we have questions or found an edge case during development, we can raise it immediately! Just poke anybody on the other desk, and everything could be cleared within seconds.

Disclaimer: HR doesn’t force me to create this meme… ((plz help))

Build build build, till it breaks…

Okay, so we build something that we are not familiar with, and we need to build that fast! But at the same time, we need to make sure that we don’t break anything.

Our goal is to do a fast release with high product reliability and easy to maintain. Unit tests allow us to give high confidence to release products regularly, they also able to notify us if something breaks because of a new code, thus we can keep building products with minimum risk.

A github-action script is integrated into our repository. The script will check whether the code has a sufficient test or not. As it results, every engineer needs to write a proper test and keep increasing the test coverage. Otherwise, they won’t be able to push their code.

name: Code Quality

on:
push:
branches:
- master
pull_request:
branches:
- master

jobs:
test:
needs: install-dependencies
runs-on: ubuntu-latest
steps:
...some_setup_happening...
- name: Test
run: yarn test:coverage --changedSince=origin/master

Continuous Feedback Loop

Pitstop visit is a regular agenda that we do in the First Mile team. The product and engineering team went to Kargo pitstop in Tanjung Priok. That place is an operational office for this Door-to-door business. We spend some time to know our users, observing the way our operational team works, and understanding the pain points that they had.

We might also do some product demos about the thing that we just build at the last sprint and gather additional feedback directly from the user.

Overall, if we know our end users, we can be more emphatic and have better collaboration. Because in the end, they are the one that executes and bring value to the company.

Health Check

Having peoples that highly motivated, feel secure, and are having the same goal will help to reduce the problem itself.

As a leader, the responsibility is not only on delivery and coding, but we need to allocate most of our time to understanding people.

Regular 1:1 is one of the ways to talk with team members, build a closer relationship, and understand their condition. We should minimize the burn-out to keep the productivity and health of our co-workers.

Sometimes I juggle the heavy task from one to another. Let’s say one of our teammates gets the heavy task this sprint, then in the upcoming sprint, they deserve a cool-down.

Continuous Deployment

Another point is don’t hold back the deployment! We always make sure that our latest code in master branch is safe to deploy.

> Question: “What happened when there are some features that still under development?”

We have a thing called “feature-flag”. It basically gives you the flexibility to “hide” your code that is still under development.

import { useFlag } from '@unleash/proxy-client-react';
const SURAT_JALAN_GENERATOR = useFlag("SOME_KEY") //true

if (SURAT_JALAN_GENERATOR) {
//show component or logic
}

Each of our features deployment was presented directly to our operational team during the demo session. The product operation team (or sometimes the engineering team) shared the release note and release guide to the operation team. As it results, we can cater the feedback from ops directly. Thus helping the adoption process.

Post Result

October 2022 marks the finish line of our hygiene development. We have finished building every feature that is necessary for our operation team to run door-to-door shipments from end to end. With this, our operation team has fully adopted their operation work and start to ditch google sheet 🤘

After this full product adoption, our shipments are increasing more than 2x! The full product adoption is one of the small factors that helps Kargo's Door-to-Door business to have positive EBITDA.

The sales team and operation team are the ones that deserve the biggest kudos ❤️

--

--

Giovanka Bisano
Kargo Technologies

Technical Lead at Kargo Technologies | Google Associate Android Developer Certified