Loading…

Grab
Southeast Asia's leading everyday "super-app" that provides ride-hailing, food delivery, grocery shopping, and digital financial services.
- 243 posts summarised
- latest
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
From their blog
Latest articles
GrabMart data for faster disease outbreak detection
GrabMart transaction data could supplement clinical surveillance because over-the-counter demand sometimes shifts before confirmed case reports. The concept aggregates eligible purchases, maps SKUs to broad symptom classes, and compares demand series against seasonal and historical baselines to produce an Early Outbreak Detection Index. Public health experts would review that aggregate signal alongside independent evidence, and the method excludes identity linkage and individual-level health inference. Statistical evaluation would need sensitivity, false-alert rate, calibration, geographic stability, and retrospective testing against approved public health data, with ongoing monitoring for catalogue changes, promotions, and shifting purchasing behaviour. Privacy relies on data minimisation, coarse geography, aggregate time windows, minimum-count thresholds, and possibly differential privacy under an approved budget; the authors state this is early-stage planning only, with no deployment, measured performance, or integration claimed.
Smarter personalization: How property data helps us understand user price sensitivity
Existing systems estimate user price sensitivity from spending behavior or demographic proxies, missing residential property values and creating one-dimensional profiles. This invention proposes a four-step method that combines public property data with LLM-assisted data structuring, building-level price estimation, hierarchical clustering, and user mapping. The method collects public property records, uses LLMs to standardize attributes such as postcode, transaction price, and property size, then aggregates transactions within buildings to calculate weighted average sale prices. A hierarchical clustering model groups buildings into affluence tiers based on estimated resale values, accounting for regional market differences, and users are mapped to these tiers via aggregated geographic signals. The approach remains unimplemented and untested in live markets, with potential applications in personalization, advertising, and operational planning subject to future technical validation and privacy approvals.
Powering AI-led research through simulation
Grab built sim-rs, a self-contained simulator that models its fulfillment marketplace to enable rapid experimentation with dispatch strategies. The simulator processes a city-day of marketplace activity in tens of minutes, using historical data and configurable components for batching, allocation, and cancellation. Agents connected through an autoresearch loop propose changes, run reproducible experiments, and receive computed verdicts, with safeguards against specification gaming such as immutable core data and scoped changes. The simulator also supports A/B/n comparisons within a single run, exposing all arms to the same demand and dynamics to improve translation to production. By making each attempt take minutes instead of weeks, sim-rs allows agents to test thousands of ideas cheaply and receive honest feedback, accelerating research while keeping the simulator faithful through automated translation of production logic and behavioral modeling.
Automated merchant review summary system with integrated feedback
The system uses representative sampling, large language model (LLM) summarization, automated quality checks, and consumer feedback to generate concise summaries from written merchant reviews. Consumers can scan an overall summary or focus on specific topics such as taste, packaging, and portion size, while merchants can identify recurring themes without reading every comment. The pipeline calculates the merchant’s rating distribution, uses a sentiment model to score reviews, and applies stratified sampling to select a representative subset before sending them to an LLM for summary generation. A separate LLM validates that each claim in the generated summary is supported by the source reviews, and summaries that fail this automated assessment are withheld from publication to reduce unsupported claims. The system regenerates summaries when new reviews or negative consumer feedback reach configured thresholds, and the feedback-driven regeneration includes anti-abuse controls to maintain trustworthiness.
Data Mesh at Grab (Part III): Operationalizing data reliability with automated DPIs
Grab’s data mesh uses the Signals Marketplace to publish, discover, and reuse trusted data products, while certification establishes ownership, documentation, lineage, and quality controls but does not prevent runtime failures. Data Production Issues (DPIs) turn data-quality signals into an operational workflow that begins when Kinabalu detects unhealthy contract tests and closes when the underlying condition recovers. Triage promotes meaningful contract breaches, deduplicates repeated signals, groups related issues, and records affected assets, intervals, contracts, tests, and dependencies. For diagnosis, the Data Health API exposes a portable taxonomy of UPSTREAM_ERROR, PLATFORM_ERROR, JOB_ERROR, and DATA_ERROR, allowing ownership to follow the likely root cause while platforms retain detailed internal diagnostics. Combined with Hugo’s diagnosis and remediation patterns, the approach is presented as reducing resolution time and feeding operational reliability back into certification.
Building Jarvis Pro: Route first, answer later
Grab designed Jarvis Pro as an AI assistant for account managers turning complex account data into actionable merchant conversations. Early prototypes generated polished but operationally unsound advice, such as pushing promotions when order drops were caused by outlet pauses and fulfillment issues. To address this, the team implemented a "route first, answer later" design that uses a prompted LLM classification step constrained by a routing guide to dictate context, tool paths, answer structure, and guardrails before generation. The pipeline also isolates narrow memory decisions, reconciles metric freshness across data sources, and caps tool calls to maintain usability. In offline evaluations across 351 realistic prompts, routing matched safe routes 99.4% of the time while answer quality scores in a portfolio subset improved from 78.5 to 91.0.
Grab Bench: Evaluating AI on Grab-shaped production work
Grab Bench is a configurable evaluation harness for assessing AI systems on production-shaped work where plausible outputs can violate metric definitions, tool contracts, evidence boundaries, or hidden code invariants. It uses YAML configuration, task plugins, provider and modality checks, row-level records, model summaries, and deterministic scorers or LLM judges according to each task. Synthetic or redacted cases preserve production-relevant difficulty while protecting live data; profile reasoning requires ontology-valid JSON claims and faithful evidence IDs, while coding tasks exercise hidden tests and anti-gaming checks. The harness also records tokens, latency, skip reasons, configurations, and failure tags so teams can diagnose whether errors reflect unsupported claims, parameter drift, hidden invariants, cost, or capability gaps. It concludes that synthetic evaluations test contract adherence under controlled pressure but do not establish production uplift.
How AI is transforming analytics at Grab
Grab describes analytics as central to business decisions and presents AI agents as a way to democratise access to trustworthy answers. Over two years, increased model capability has enabled agents to prepare data, write and run queries, analyse opportunities, design experiments, interpret results, and draft commentary in minutes rather than a week. The proposed ladder ranges from AI-assisted work through human-planned and agent-planned workflows to end-to-end autonomy, while people retain accountability for framing, definitions, causal interpretation, decisions, and stakeholder relationships. Grab describes Spartan, which routes natural-language Slack requests across more than 50 skills and 120 analysis frameworks, plus Scarlet for pipeline failure triage and recovery. The programme also maintains agent context through ContextIQ and reports lower analyst intervention, a roughly 33% reduction in cycle times, and greater self-serve resolution in its support channel.
Crowdsourced taxonomy verification: A feedback-driven framework for refining knowledge graph relationships via online search interactions
Dynamic catalogs in food delivery and e-commerce make knowledge-graph (KG) maintenance difficult: LLM- or scraper-generated relationships can be semantically wrong, manual review does not scale, and bad edges can degrade query expansion, CTR, and trust. The proposed feedback-driven verification engine treats unverified edges as hypotheses and uses the search interface as a validation environment. It separates verified and candidate edges, injects a limited number of candidates into lower-risk interface positions through an exploration-versus-exploitation policy, and records context-anchored user interactions with weighted positive and negative signals. An offline engine aggregates exposure and engagement into a confidence ratio, promoting candidates above a verification threshold and pruning those below a failure threshold. The framework is presented as a continuous human-in-the-loop method for validating parent-child and sibling relationships at scale; planned extensions add confidence tiers and defenses against spam, bots, and Sybil attacks.
Agent platform (Part 1): How we help Grab build and run AI agents at scale
Grab’s AI support bot grew from an internal GPT-powered Level-0 service into the foundation for LLM-Kit, an internal framework now used by more than 500 services, alongside over 50 registered remote MCP servers and a company-wide LLM gateway handling billions of tokens monthly. The bot used a single-agent reasoning loop and a tool plane spanning Glean, Kibana, GitLab, Slack, and HTTP plugins, but scaling exposed missing evaluations, fragmented observability, provider-switching friction, and costly production plumbing. LLM-Kit addresses those problems with generated FastAPI services, LangGraph agent templates, OpenTelemetry tracing, configuration and secret-management integrations, evaluation routes, remote MCP tool discovery, and gRPC contracts, clients, health checks, and channel selection. The post concludes that framework concerns became platform concerns at 500 agents, leading to a gateway, remote MCP framework, and evals platform described as the series continues.
Scaling Grab's Data Lake: Our journey to Apache Iceberg adoption
Grab is transitioning its petabyte-scale data lake from Hive Parquet tables managed through the Hive Metastore to a table-centric architecture centered on Apache Iceberg, while retaining storage-compute separation on S3. The move addresses catalog listing latency, severe small-file fragmentation, manual partition registration, absent native ACID operations, and catalog state becoming stale after direct S3 changes. Rather than converting the entire lake at once, Grab prioritizes high-value tables and uses features such as Z-ordering; representative workloads cut one query from 70 seconds to 6, reduced daily S3 API costs by up to 95%, and halved cluster resource usage. Its open-sourced UnifiedSparkCatalog detects table formats through metastore metadata or path inference and routes operations to the appropriate Spark catalog without format-specific prefixes. Deployment also required resolving Hive lock contention, timestamp incompatibilities, and storage-tier cost spikes.
Migrating Counter Service storage: Design choices and learnings
Grab’s Counter Service supports time-windowed fraud queries at tens of thousands of QPS and about a billion requests per day, but an infrastructure review prompted migration from a wide-column database to Aerospike. The team first separated Rust business logic from storage, then added an enum-dispatched facade with Single, WithShadow, and WithSplit modes so traffic could be compared and shifted without downtime. They also redesigned the writer path around Aerospike, including a map-based schema and a single atomic increment, while testing index placement and reverting from an NVMe-backed primary index after hot-key p99 spikes. Production p99 read latency improved by roughly 50%, disk usage fell from about 3 TB to 1 TB, and per-node cost dropped 45–50%; the rollout reported zero downtime and no data-integrity issues.
Scaling out Distroless adoption With AI
Grab is migrating from heavy base images to Distroless images to reduce security risks, despite runtime failures caused by missing shared objects, utilities, or expected directory structures. Its medium tests run services in Docker, leave internal dependencies unmocked through Testcontainers, mock external dependencies with a network proxy, and execute in CI to catch Dockerfile regressions before deployment. For services without this setup, an agentic workflow detects candidates, scaffolds tests, fixes repository-specific failures, raises GitLab merge requests, and monitors CI while processing batches in parallel. Claude Code uses MCP integrations for GitLab, Glean, and Sourcegraph, with guardrails limiting changes to test files and CI configuration and humans reviewing every draft merge request. In roughly 1.5 months, the agent raised more than 100 medium-test merge requests and reduced work for 400 services from 400–1,200 engineer-days to approximately 0.1 days per service; Distroless adoption also grew substantially.
Palana (Part 2): Architecting isolation, identity, and auditability for AI agents
Palana is Grab’s Kubernetes-native secure execution platform for autonomous AI agents, designed to provide isolated, attributable, and auditable environments. It provisions per-agent namespaces, service accounts, EFS-backed storage, ingress, policies, and proxy-mediated egress, while admission webhooks inject proxy settings and enforce pod restrictions. Human identity remains authoritative for RBAC, while sanitized identifiers are reserved for object names and Vault paths; secrets are split between agent-readable values and proxy-only credentials, and the LLM wrapper derives agent identity from Kubernetes context. Layer 3/4 controls provide containment, Layer 7 OPA-backed proxy policies govern host and method access, and structured signals support audit and idle shutdown that preserves /data and platform state. The production lessons emphasize platform-level controls, a safe self-service path, namespace boundaries, proxy-mediated authentication, and lifecycle management as prerequisites for useful autonomy.
Palana (Part 1): Why Grab built a secure platform for autonomous AI Agents
Palana is Grab’s Kubernetes-native platform for running autonomous and semi-autonomous agents with isolation, controlled access, and operational oversight. The post describes why laptop-based tools and simply running agents in containers do not adequately address persistent state, identity, credentials, network access, auditability, and emergency control. Its architecture gives each agent a namespace, service account, storage, network policy, and Vault scope, while Envoy, ext-authz, and OPA mediate and log HTTP(S) egress; proxy-only secrets keep underlying credentials out of agent processes. A portal and pcli manage lifecycle, and external kill switches and idle shutdown provide controls outside the agent. Palana is used for development environments, Slack automation, framework testing, and long-running internal workloads, with deeper architecture details reserved for Part 2.
From decentralized Docs-as-Code to a centralized repository: Evolving Grab's documentation strategy
Grab adopted Docs-as-Code in early 2021 to bring technical documentation into engineers’ code workflows, addressing scattered sources, version confusion, discoverability, and quality gaps. Documentation was written in Markdown, stored in version-controlled repositories, reviewed through merge requests, checked in CI/CD, and surfaced through an internal developer portal. As engineering scaled, decentralized repositories produced inconsistent structures and terminology, unreliable organization-wide quality automation, aging content, and tracking problems when source locations changed. Grab therefore moved to a centralized repository while retaining Docs-as-Code, adding shared templates and linters, unified search through fuzzy title lookup and Glean, automated synchronization during migration, and training and feedback programs. The post concludes that decentralized, centralized, or hybrid models fit different contexts, with centralization emphasizing discoverability, governance, consistency, ownership metadata, and analytics.
The Hugo evolution: Engineering Grab's unified, one-click data ingestion platform with Apache Flink
Hugo evolved from a batch-oriented Spark platform into Grab’s unified, self-service data ingestion system for near real-time pipelines. The earlier expansion across Kafka Connect, Sprinkler, and Hugo fragmented onboarding, forcing users to translate configurations and manage manual schema changes across systems. A custom automation layer and Apache Flink now orchestrate one-click MySQL CDC and Kafka ingestion, retiring Kafka Connect and Sprinkler for the data lake. For CDC, Flink reads the binlog directly, uses automated schema detection and dynamic validation, and writes to queryable Hive tables through Spark compaction; for Kafka, it fetches Protobuf schemas from Confluent Schema Registry at runtime and resumes from the latest checkpoint after restart. Onboarding now takes approximately three minutes for MySQL CDC and six for Kafka, although schema updates still require manual restarts; new pipeline adoption in the last year also exceeded the previous five years combined.
Scaling developer experience: How we improved Android Studio in a large monorepo
Grab’s passenger Android monorepo contains roughly 2,000 modules and 11 million lines of code, making Gradle-based Android Studio syncs increasingly slow and memory-intensive even though Bazel handles builds. A cold full sync could exceed 35 minutes, and a survey of 55 developers found that 82% wanted an option to exclude modules from syncing. The team built a custom Focus plugin that uses a dependency graph generated during migrateToBazel, avoids repeating Gradle’s configuration phase, and integrates with Android Studio through a one-click Select → Focus → Sync flow; a Groovy include-shadow technique avoids requiring teams to reorganize settings files. Typical focused syncs fell below two minutes, while reported results show reductions from 35 minutes to under one minute depending on module size, memory usage from 10 GB to 2 GB, and improved Compose preview updates, with broader IDE operations requiring expanded focus or full sync.
Enhancing Flink deployment with shadow testing
Grab’s Coban data streaming team addresses production-only Apache Flink deployment failures, which can leave an application unavailable for about 10 minutes while the system observes it and rolls it back. Its Shadow Testing stage runs a new version in parallel with the current Main version, replaying production data without affecting Main outputs and allowing behavior and regressions to be assessed before promotion. The Shadow deployment uses a shadow Kubernetes namespace, a shadow-prefixed application name, isShadow=true, a distinct Job ID, isolated sinks, and connector-specific separation such as suffixed Kafka consumer groups and shifted Debezium Server ID ranges. By default, Shadow runs for one hour while its job-manager status is monitored; users then continue to Main deployment, which receives a 10-minute health check and automatic rollback if unhealthy. The framework isolates Kafka and S3 outputs, prefixes metrics and logs for observability, and plans more connector support.
Data Mesh at Grab (Part II): The foundational tools behind certification
Grab’s Signals Marketplace uses three foundational platforms to make data certification operational across its data mesh: Hubble, Genchi, and the Data Contract Registry. Hubble, built on DataHub, catalogs assets, ownership, documentation, lineage, contracts, and certification status, while its event-driven engine recalculates certification as metadata and upstream health change. Genchi provides self-service observability and tests for freshness, volume, schema, completeness, and business checks; the registry manages explicit expectations between producers and consumers. Together, these signals let Hubble classify assets as Uncertified, Certified, CertifiedPlus, or Revoked, giving consumers a workflow centered on certified data rather than hearsay. The post reports that P80 datasets, the tables accounting for 80% of queries, fell by over 58% in one year after the Signals Marketplace campaign began in 2024, and positions the foundation as support for AI agents and automated analytics.
Topics they write about
All topics →Weekly digest
The best engineering reads, once a week.