World Bank
Replacing the Streamlit-to-React Production Rebuild Cycle: How the World Bank Ships Production Internal Tools in Pure Python
Chat-driven internal data review tool with renders live AG Grid tables
Here's how Pooja Chandrashekara, an engineer at the World Bank, describes Reflex after using it to ship production-grade internal apps:
Meet the World Bank, a global development institution founded in Washington D.C. in 1944, supporting projects across 189 member countries and managing some of the most extensive development data in the world.
Inside the Bank, an internal engineering team uses Reflex to build the kinds of tools staff rely on every day: chatbot-style interfaces that let internal audiences query institutional knowledge, profiling tools that help review suppliers involved in World Bank–financed projects, and data-review dashboards that pull from many internal systems. Because the team works with strictly confidential data, those tools don't fit cleanly into off-the-shelf SaaS, which is what pushed them toward Reflex.
Historically, analysts and researchers across the World Bank relied on tools like Tableau, Streamlit, and manually built JavaScript dashboards to communicate insights. Each had real limits at the scale the team operated at.
Streamlit worked for quick prototypes but struggled to support the interactive, multi-user dashboards the team actually needed. Tableau handled static reporting but locked analysts into a fragmented loop: prepare datasets offline, upload them, manually share dashboards. Anything genuinely interactive required escalation to specialized engineering teams, creating multi-month delays for tools that the team's own engineers could have written if the front-end gap hadn't been there.
The default escalation path was the same one many data-heavy organizations follow: prototype in Streamlit, hit the ceiling, then rebuild from scratch in React. That cycle was the real bottleneck.
The team's entire backend already ran on Python: FastAPI services, SQLModel-backed data layers, Databricks for the heavy data work, and an Azure-hosted stack tied into the team's existing security model. Moving to React would have meant maintaining a parallel JavaScript stack, taking new dependencies through internal procurement, and adding a skill set the team didn't already have.
That calculus didn't fit a team built around Python-first engineers like Pooja Chandrashekara, who has deep ML and Python experience but no JavaScript background. Continuing to escalate prototypes into React rebuilds was a structural tax on the team.
Instead of continuing to prototype-and-escalate, Thad Desmond Kerosky, an engineer at the World Bank, advocated a different default for the team:
The team adopted Reflex for two distinct workloads. In both cases, they shipped production-grade apps from the first version, in pure Python, on top of their existing infrastructure.
Pooja built an internal chatbot-style interface that lets World Bank staff query a repository of internal documents in natural language.
The app is deployed in the World Bank's Azure environment with a split front-end and back-end architecture to fit the team's security model. Over 100+ internal World Bank staff use the deployed tool.
The first version of the chat assistant, a Streamlit prototype the team had built earlier, was rebuilt in Reflex in a single working day using the Reflex AI App Builder:
The Reflex app connects to a FastAPI service and a multi-million-row SQL backend, generates AI-written summaries, exports to PDF and Excel, and renders relationship graphs inside the PDF reports themselves.
In parallel, Thad has been building a chat-driven data-review interface where users ask natural-language questions and the answer renders live as an AG Grid view. It runs on the team's existing FastAPI + SQLModel + Databricks stack via the Reflex Enterprise Package. The interface handles rendering datasets with more than 100,000 rows using server-side row models, supports advanced multi-AND/multi-OR filtering the team's prior MUI-based tooling did not, and connects live to existing FastAPI endpoints via Reflex's api_transformer.
Across both workloads, the team was able to:
- Reuse their existing Python backend services (FastAPI, SQLModel, Databricks) without modification
- Build full browser UIs for chat, AG Grid, document search, and report generation in pure Python
- Deploy directly into the team's Azure App Service Environment with split front-end and back-end services to fit existing security requirements
- Generate AI summaries, PDF and Excel exports, and embedded relationship graphs from inside the Reflex app
- Serve multi-million-row datasets in the browser via AG Grid's server-side row model
Thad and Pooja evaluated multiple paths to a production browser-based tool and chose Reflex because it allowed the team to:
- Build full-stack in Python, the language the entire backend already runs in. ML and data engineers ship end-to-end without ever touching JavaScript.
- Skip the prototype-to-rebuild cycle. Reflex output is production-grade from day one, removing the structural delay of building in Streamlit and then rebuilding in React.
- Ship polished, production-grade UIs without staffing a front-end specialist. Chat interfaces, AG Grid dashboards, document search, file uploads, and report generation, all in Python.
- Reuse existing Python infrastructure. Reflex apps drop into the team's Azure App Service Environment and read from their existing FastAPI services, SQLModel layer, and Databricks data. No parallel stack to maintain.
Pooja's chatbot-style interface is deployed in the World Bank's Azure environment with a 100+ internal staff actively using it. Thad's AG Grid dashboards are running on real internal data and are being expanded to replace MUI-based reporting tools across the team.
What started as one Python team's attempt to skip the Streamlit-to-React rebuild cycle is becoming the standard way the team ships internal tools at the World Bank.
See what other teams built
Book a demo
Book a demo to see how you can build powerful Python web apps
for your team with Reflex AI.




