ROEN
Case study: Când Reciclăm? — the anatomy of an app published in the OpenAI catalog

Case study

Case study: Când Reciclăm? — the anatomy of an app published in the OpenAI catalog

By Marian Matinca · · 7 min read

On July 9, 2026, OpenAI launched the new ChatGPT app catalog. On July 21 — just 12 days later — "Când Reciclăm?" (When Do We Recycle?) became my first application evaluated, approved and published in it. This is the first case study in a series about the four applications I built for the OpenAI ecosystem. I'm starting with this one because it's the easiest to understand: a city problem, official data that's hard to use, and an assistant that answers a question every Bucharest resident asks — "when is the garbage collected on my street?"

At a glance

The problem

In Bucharest, only 2 of 6 districts publish per-address waste-collection schedules. Where the information exists, it's buried in the sanitation operators' websites: hard-to-navigate pages, documents split by street segments, different formats from one district to another. And separate collection means different days for different waste types — household, recyclables, bio, glass, bulky items. In practice, a resident who wants to recycle correctly has to do detective work.

Why existing solutions weren't enough

The information existed, but not in a usable form. Operator websites are designed as publications, not services: you find a schedule if you already know where to look and have the patience to go through the documents. There is no single place where you type your address and get the answer. And for the districts that publish nothing per address, even detective work doesn't help — and nobody honestly tells you the data is missing and where you can call instead.

Objectives

I started with four clear objectives:

  1. Per-address answers: type your street and number, get the exact collection days per waste type.
  2. Official sources only: every claim citing its source — nothing invented, nothing "from hearsay".
  3. Honesty where data is missing: for districts that don't publish, the app explicitly says what each operator publishes, what it doesn't, and how you can actually find out (dispatch numbers, collection points).
  4. Frictionless distribution: free, no account, no ads — on the web, as an installable PWA and, since July, directly in ChatGPT.

The architecture

Când Reciclăm architecture: the user asks in ChatGPT, the MCP server exposes 5 tools over the app's API, data flows in automatically from official sources
Când Reciclăm architecture: the user asks in ChatGPT, the MCP server exposes 5 tools over the app's API, data flows in automatically from official sources

The application has three layers, all built on the same data source:

The important detail: the MCP server has no database of its own. It uses exactly the same API as the web app. One source of truth, whether you ask the website or ChatGPT.

Why MCP and not a classic chatbot?

A classic chatbot would have meant building and maintaining yet another conversational interface, convincing users to come to it, and paying for model infrastructure. MCP (Model Context Protocol) inverts the logic: the application goes where users already are. ChatGPT brings the conversation and natural-language understanding; my application brings verifiable data, through tools the model calls when it needs them.

The essential difference is trust: a model asked directly "when is the garbage collected on street X" will answer plausibly — but it will make it up. With MCP, the model doesn't guess — it calls the tool, and the tool answers from official data, with the source attached. And if data is missing for your district, the answer says exactly that instead of improvising.

The complete flow

User
    │  "When is the garbage collected at Strada Aviatorilor 20?"
    ▼
ChatGPT
    │  picks the right tool and extracts the address
    ▼
MCP server — 5 public tools
    │  recycling_search_street → recycling_collection_schedule
    ▼
The app's API
    │  same data as the website
    ▼
Database
    │  recurrence rules per street segment
    ▲
    │  automatic refresh
Official sources
    (sanitation operators; 30+ cited domains)

The user types a normal question. ChatGPT identifies the intent, first calls the street search (which tolerates diacritics and name variations), then requests the schedule for the matched segment. The answer comes back with days per waste type and the official source — and the model phrases it conversationally. The whole flow takes a few seconds.

"Când Reciclăm" answering in ChatGPT: the real schedule for Strada Aviatorilor 20, per waste type, with the source operator mentioned

The challenges

The key technical decisions

  1. One source of truth — the MCP consumes the app's API, not a copy of the data.
  2. Recurrence rules, not static calendars — schedules are expressed as rules per street segment, so they stay valid without manual regeneration.
  3. Read-only tools, no account — nothing to install, nothing to configure, zero personal data requested.
  4. Honesty as architecture — "we don't know" is a first-class answer, with practical guidance, not an error.
  5. Open standard — MCP is not ChatGPT-specific; the same integration can work with any compatible client.
  6. Open source — the code is public on GitHub (marian5070/cand-reciclam), available for audit and for adaptation to other cities.

The result

The application lives today in three forms, all from the same data: cand-reciclam.madeinro.eu, an installable PWA with push notifications, and an app in ChatGPT — evaluated, approved and published by OpenAI in the app catalog on July 21, 2026, 12 days after the catalog launched (July 9). Free, no account, no ads. Launched in April 2026, with the state of the data documented transparently, district by district.

Try the app in ChatGPT or see the project page.

What would I improve in the next version?

---

This case study is part of a series on building AI applications for the OpenAI ecosystem. Coming up: RoTV Guide, Digital Compass and Travel Trends — each with a different architecture lesson. The context for the whole story: AI adoption is a delivery discipline.