Reflex Logo

World Bank

Replacing the Streamlit-to-React Production Rebuild Cycle: How the World Bank Ships Production Internal Tools in Pure Python

Grid
Gradient Reflex Logo
World Bank logo
8Hours to rebuild an internal app that originally took two weeks in Streamlit
100+Internal World Bank staff using the deployed chatbot-style interface
100,000+Rows handled per dashboard via Reflex Enterprise's AG Grid
FoundedWashington D.C., 1944
Websiteworldbank.org

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:

"Reflex gave us the flexibility of React without having to actually write React. That's huge for teams like ours."

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.

"Our work doesn't fit cleanly into any off-the-shelf product. Our users pull data from too many systems, with workflows too specific to buy. So we build the platform ourselves with a lot of custom development to fit how they actually work."
Thad Desmond KeroskyEngineer at the World Bank

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.

"Right now the traditional path for someone like that is to try a Streamlit app and learn how to do that and get good enough at that. Then once they get to the limit of Streamlit, then they would use something like React."
Thad Desmond KeroskyEngineer at the World Bank

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.

"You wouldn't want to use Dash or Streamlit to build a real production-grade app. Eventually you hit a ceiling and need to re-implement everything from scratch."
Thad Desmond KeroskyEngineer at the World Bank

Instead of continuing to prototype-and-escalate, Thad Desmond Kerosky, an engineer at the World Bank, advocated a different default for the team:

"We should have them go straight into Reflex and deliver their initial product with it."
Thad Desmond KeroskyEngineer at the World Bank

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.

"We give the AI access to a variety of different types of internal documents, and it answers users' questions directly from them."
Pooja ChandrashekaraEngineer at the World Bank

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:

"With the AI App Builder, I converted our entire Streamlit app to Reflex in 8 to 9 hours, every feature ready for production, in a single working day."

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.

"We have a chat app that allows us to query and view results in AG grid."
Thad Desmond KeroskyEngineer at the World Bank

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.
"Pooja has a ton of experience with ML models and Python, but no experience with JavaScript. And so it just really flattens the possibility space so that she doesn't have to worry about the front-end."
Thad Desmond KeroskyEngineer at the World Bank
  • 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.
"Reflex gave us the flexibility of React without having to actually write React. That's huge for teams like ours."
Pooja ChandrashekaraEngineer at the World Bank
  • 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.

"She was able to get two additional apps up into production, so into usage. So it's going very well."
Thad Desmond KeroskyEngineer at the World Bank

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.

"We should have them go straight into Reflex and deliver their initial product with something like Reflex."

Squares Large
Contact Us

Book a demo

Book a demo to see how you can build powerful Python web apps
for your team with Reflex AI.


Built with Reflex