How Gojek named pickup points from what riders typed
In May 2020 Gojek's Cartography Data Science team described CartoBERT, a small model that reads past booking text and marks the words that name a pickup spot. It replaced a phrase counter whose every name had to be checked by hand. The names were already in the chats; the model learned to find them.

A big Jakarta mall has many exits, and a driver at the wrong one means a phone call nobody wants. Gojek's answer is a list of named pickup points in the app. "This saves customers the hassle of calling the driver partner, explaining where they are, what colour clothes they are wearing, and so on." On 1 May 2020 Li Xiaohong of Gojek's Cartography Data Science team described how those points get their names: CartoBERT, a small language model that reads what riders and drivers already wrote. The lesson is that it does not invent names. It finds them.
The problem: a pin is not a place
A map pin for a mall sits in the middle of the building. A 2019 Gojek post put it plainly: "They will never pick you up inside the mall." So Gojek first found the real spots. Its earlier clustering post grouped past pickup locations into points, with Blok M Square, a Jakarta mall with five gates, as the worked example.
Then each point needs a name, ideally the one people already use. The post says the names "are displayed exactly how customers driver partners usually refer to them" (sic). The raw material: "We use past booking locations and their associated chat logs to discover named pickup points."
The first namer was a phrase counter: "our original statistical language model selects the best pickup point name from the most probable n-grams extracted from bookings text." It had no idea what the words meant. "Sometimes it throws street names, sometimes even common phrases with no information about location. We have to manually check everything to make sure it reflects the right POI, before it appears on the app." Hand checks hold back growth, especially "if we want to quickly expand the frictionless pickup experience" to new places.
How they built it
A small model. BERT, Google's 2018 language model, reads each word in the context of the words around it. ALBERT, from 2019, shares weights between layers to cut the parameter count, "by 9 times for base model". Gojek built on it: "we developed CartoBERT, Gojek’s very own pickup point name recognition model, based on ALBERT’s architecture." The post also says ALBERT outperforms BERT. In the ALBERT paper's own table that holds only for the larger sizes; the base size, which CartoBERT uses, averages 80.1 against BERT base's 82.3. Small was the point, not the top score.
Step one: learn how Gojek users write. "the uncased CartoBERT is pre-trained on Gojek’s own masked bookings text corpus of about 200 million sentences." The text was cleaned first: "data masking to mask all customer sensitive information, language detection, text normalisation (including text cleaning, slang, abbreviation transformations, lowercase transformation and emoji removal)." The model then learned by guessing hidden words and the order of sentence pairs, ALBERT's two standard tasks. At this stage it knows how people write, not what a place name is.
Step two: learn to tag names. The guessing heads were swapped for a token-classification layer, which marks each word as part of a pickup name or not. It learned from "bookings text sentences, and corresponding pickup point names." Name words are rare in a chat, so "we use weighted cross entropy loss to deal with class imbalance, as tokens tagged to pickup point names are a minority." The result is a model "fine-tuned to extract pickup point names from bookings text sentences, if any."

The change is in kind, not only in score. The counter asked "what phrase is common here?" The tagger asks "is this phrase a place?" That second question is what lets most of the hand checks go.
What it delivered
One number: "CartoBERT gives a lift of more than 25% in pickup point name accuracy to ~93% accuracy, which is measured as the percentage of valid pick up point names out of generated names." And one claim: "we have achieved full scalability of automatic generation for named pickup points to quickly cover multiple geographies without heavy reliance on human inputs."
Read it with care. "More than 25%" has no unit, so the old level is unknown. The ~93% counts how many generated names are valid; it says nothing about points that got no name, or whether riders met drivers faster. There is no count of points, no sample size and no word on serving. These are Gojek-reported claims.
The wider pickup system does report an outcome. An April 2020 post on named points with photos says "In the areas where we’ve deployed these features, we’ve seen pickup accuracy double on average." That covers the whole system, not the naming model. In November 2020 Gojek's IndoNLU post said of CartoBERT: "The project was successful and generated many new pickup points for us." Again, no number.
What has changed since
The post ended with a plan to open-source "a general Indonesia Bahasa ALBERT model". Something close arrived through a research collaboration: IndoNLU, a benchmark of twelve tasks (paper), with pre-trained models such as IndoBERT under an MIT licence. CartoBERT itself was never released that we could find; it is not among the 63 public repositories of Gojek's GitHub organisation as of 28 October 2026.
The maps moved closer to Google. In March 2025 GoTo announced that it and Google Maps "will work together to enhance destination selection, searchability, and pickup/drop-off experiences". GoTo's 2025 annual report, on its investor page, says its own mapping platform provides "two-wheeler & four-wheeler specific pickup, dropoff and package delivery gates." Neither says what happened to CartoBERT.
Indonesian language models grew up. GoTo and Indosat launched Sahabat-AI in November 2024, an open model family for Bahasa Indonesia and local languages. A 70B model followed in June 2025, and GoTo released a 27B model on 19 October 2026 under the Gemma licence. None of these releases mentions maps or pickup points.
Grab tells a different public story. Its 2018 post on pickup points describes looking places up online, then "visiting each location to corroborate what has been discovered", plus driver feedback. By 2022 GrabMaps claimed "more than 33 million POIs and point addresses in Southeast Asia".
Why it matters for your business
Any service with a "where exactly are you" problem has this data: couriers at office towers, agents at a housing cluster gate, guests at an event venue, a hospital with five entrances. Customers already write the names in notes and chats. The work is to find them, not to make them up.
Two Indonesian laws shape the build. Under the data protection law, UU 27/2022, chat text is personal data until it is masked: general personal data includes "Data Pribadi yang dikombinasikan untuk mengidentifikasi seseorang", and a note with a phone number, a name and a gate can do exactly that. You need a basis for processing, a use that fits the purpose, and deletion once the data is no longer needed. Gojek masked before training; mask before storing.
The geospatial law, UU 4/2011, counts official place names ("nama rupabumi") as part of the national base map, and says "Setiap orang dapat menyelenggarakan IGT hanya untuk kepentingan sendiri": anyone may make thematic maps for their own use. A crowd name such as "Lobby Selatan" is a label, not an official name, so keep the two apart. The transport ministry is also discussing rules on ojol pickup and waiting areas in a draft transport bill, so some pickup spots may get official names. That is our reading as engineers, not legal advice.
How we would build it today

- Find the points first. Cluster past pickups and keep clusters seen on many days by many riders. A few hundred good points at busy places beat thousands of noisy ones.
- Mask before you store. Phone numbers, names, plates and home addresses come out in code with tests. Raw chat stays out of training and is deleted on a schedule.
- Rules before models. Write out jl, gg, dpn and sltn, and keep a slang list that ops can edit. Measure how far rules alone get.
- Record a baseline. A phrase counter with a filler stoplist ("di", "depan", "dekat") and a street-name filter, scored on a hand-labelled test set. This is Gojek's "before", and it takes a day.
- Then a small tagger. Fine-tune an open Indonesian encoder such as IndoBERT to tag name words. A few thousand labelled sentences, chosen where the model is least sure, is a fair first set by our estimate, and it runs on a CPU at these volumes.
- Give an LLM one narrow job, if any. Let it pick a tidy name from the top candidates and nearby map places, as JSON, and reject any word that no note contains. Run it on new points only.
- Keep two name fields. The crowd name for the app; the official name, from OpenStreetMap (credit and share-alike apply) or official sources, for support and future rules.
- Close the loop. Review new and unsure names, and every airport, station and hospital. Give drivers a one-tap "titik salah". Track what Gojek did not publish: the share of trips that use a named point, calls and chats per trip, pickup time and cancellations.
For a fleet of a few hundred drivers, steps 1 to 4 plus a review queue are a fair start. Add the tagger when new names arrive faster than people can check them.