“From here, how do we get to Ragunan Zoo?”
Good question.
I paused. This wasn’t a matter of intuition; it was a routing problem.
I opened a navigation app, queried the destination, and switched the mode to public transport. The proposed solution was a multi-hop journey : take the blue commuter line to Manggarai, transfer to the red line toward Bogor, get off at Pasar Minggu, then continue with something called S15A.
S15A?
That identifier triggered a red flag. After a quick lookup, it turned out to be an angkot.
That immediately raised another question. Was there really no direct busway route to Ragunan? Not even a JakLingko alternative? Cost sensitivity was also a concern. There are plenty of public transportation modes in this city: MRT, LRT, Commuter Line, Transjakarta BRT, and Transjakarta non-BRT, but angkot and ride-hailing motorcycles are the two worst options, since they can end up being pricey due to the lack of government subsidization.
At that point, I decided to discard the initial navigation output entirely. Close the app. Start over with a more specialized tool.
I switched to the official Transjakarta application.
It refused to open and forced an update. Fine. Update first, then rerun the query.
Post-update, I defined the problem more explicitly. Assume the train leg was already completed. Starting point: Pasar Minggu Station. Destination: Ragunan. The goal was to find a replacement for the S15A angkot.
Search results came back clean. Instead of S15A, there was a JakLingko option: JAK47, Pasar Minggu–Ragunan. That was acceptable. Same endpoint, better integration.
Solution candidate number one locked in.
Then I expanded the scope. What if we removed the train entirely? What if the journey started directly from Bekasi using Transjakarta, via Vida to Cawang Sentral?
New query. New parameters. Starting point: Cawang Sentral. Destination: Ragunan.



