Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/davidmpizarro/QuipuEco-Hackaton/llms.txt

Use this file to discover all available pages before exploring further.

The Lima Este pilot activates 6 Tambo+ convenience stores as no-appointment recycling drop-off points for plastic, paper, and metal waste. These stores were selected to provide geographic spread across the Lima Este corridor — from El Agustino in the west through Ate, Santa Anita, and La Molina in the centre, out to Chaclacayo and Lurigancho-Chosica in the east along the Carretera Central. Every location accepts all three Tambo-eligible material categories equally, and all are open during standard Tambo+ operating hours with no additional registration or prior arrangement required.

All 6 Active Locations

All locations accept plástico, papel / cartón, and metal. Materials must be clean and dry before drop-off.

Tambo Corregidor — La Molina

Address: Alameda del Corregidor 1684, La Molina
District: La Molina
GPS: -12.0815, -76.9398

Tambo Alondras — Santa Anita

Address: Av. Las Alondras 297, Santa Anita
District: Santa Anita
GPS: -12.0445, -76.9678

Tambo Paracas — Ate

Address: Paracas 892, Ate
District: Ate
GPS: -12.0398, -76.9156

Tambo Ayllón — Chaclacayo

Address: Av. Nicolás Ayllón 421, Chaclacayo
District: Chaclacayo
GPS: -11.9821, -76.7701

Tambo Riva Agüero — El Agustino

Address: Av. Riva Agüero 684, El Agustino
District: El Agustino
GPS: -12.0478, -76.9967

Tambo 28 de Julio — Chosica

Address: Prolongación 28 de Julio 384, Lurigancho-Chosica
District: Chosica
GPS: -11.9356, -76.6945
GPS coordinates are approximate, derived from address geocoding rather than on-site survey. They are accurate enough for map display and Haversine distance sorting, but should be verified against tambo.pe/locales before using in turn-by-turn navigation integrations.

Location Reference Table

Store NameAddressDistrictLatitudeLongitude
Tambo CorregidorAlameda del Corregidor 1684La Molina-12.0815-76.9398
Tambo AlondrasAv. Las Alondras 297Santa Anita-12.0445-76.9678
Tambo ParacasParacas 892Ate-12.0398-76.9156
Tambo AyllónAv. Nicolás Ayllón 421Chaclacayo-11.9821-76.7701
Tambo Riva AgüeroAv. Riva Agüero 684El Agustino-12.0478-76.9967
Tambo 28 de JulioProlongación 28 de Julio 384Chosica-11.9356-76.6945

Source Data Structure

Location data is stored as a plain JavaScript array in src/components/VistaMapaPuntos.jsx. Each entry follows this object shape:
// src/components/VistaMapaPuntos.jsx
const TAMBO_REAL_LIMA_ESTE = [
  {
    nombre:   "Tambo Corregidor - La Molina",
    direccion: "Alameda del Corregidor 1684, La Molina",
    lat:      -12.0815,
    lng:      -76.9398,
    distrito: "La Molina",
  },
  {
    nombre:   "Tambo Alondras - Santa Anita",
    direccion: "Av. Las Alondras 297, Santa Anita",
    lat:      -12.0445,
    lng:      -76.9678,
    distrito: "Santa Anita",
  },
  {
    nombre:   "Tambo Paracas - Ate",
    direccion: "Paracas 892, Ate",
    lat:      -12.0398,
    lng:      -76.9156,
    distrito: "Ate",
  },
  {
    nombre:   "Tambo Ayllón - Chaclacayo",
    direccion: "Av. Nicolás Ayllón 421, Chaclacayo",
    lat:      -11.9821,
    lng:      -76.7701,
    distrito: "Chaclacayo",
  },
  {
    nombre:   "Tambo Riva Agüero - El Agustino",
    direccion: "Av. Riva Agüero 684, El Agustino",
    lat:      -12.0478,
    lng:      -76.9967,
    distrito: "El Agustino",
  },
  {
    nombre:   "Tambo 28 de Julio - Chosica",
    direccion: "Prolongación 28 de Julio 384, Lurigancho-Chosica",
    lat:      -11.9356,
    lng:      -76.6945,
    distrito: "Chosica",
  },
];
All five required fields (nombre, direccion, lat, lng, distrito) must be present for a location to render correctly on the map and in the bottom card rail.

How the Map Uses This Data

VistaMapaPuntos does not maintain separate location arrays for each Tambo-eligible material. Instead, all three categories are assigned to the same array after it is defined:
// All three Tambo categories share one source of truth.
// Updating TAMBO_REAL_LIMA_ESTE propagates to all three automatically.
PUNTOS_LIMA.plastico = TAMBO_REAL_LIMA_ESTE;
PUNTOS_LIMA.papel    = TAMBO_REAL_LIMA_ESTE;
PUNTOS_LIMA.metal    = TAMBO_REAL_LIMA_ESTE;
At render time, the component resolves the active category from the Gemini classification result (or a voice agent filter override), looks up PUNTOS_LIMA[categoria], and uses that array to:
  1. Place mapboxgl.Marker instances at each [punto.lng, punto.lat] position, with Tambo-branded marker elements (white rounded square with the Tambo logo image).
  2. Attach mapboxgl.Popup instances to each marker showing the store name, address, district badge, and Tambo branding.
  3. Call map.fitBounds() over all 6 coordinates so the full Lima Este network is visible on initial load.
  4. After geolocation resolves, sort the array by distance and re-render the bottom card rail in proximity order.

Nearest-Point Algorithm

Once the browser’s Geolocation API returns the user’s position, VistaMapaPuntos runs the Haversine formula to compute great-circle distance from the user to each store:
function calcularDistancia(lat1, lng1, lat2, lng2) {
  const R = 6371; // Earth's radius in km
  const dLat = (lat2 - lat1) * Math.PI / 180;
  const dLng = (lng2 - lng1) * Math.PI / 180;
  const a =
    Math.sin(dLat / 2) ** 2 +
    Math.cos(lat1 * Math.PI / 180) *
    Math.cos(lat2 * Math.PI / 180) *
    Math.sin(dLng / 2) ** 2;
  const dist = R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  return dist < 1
    ? `${Math.round(dist * 1000)} m`
    : `${dist.toFixed(1)} km`;
}
The sorted result is stored in puntosOrdenados state. Each point object is enriched with a distancia string (e.g. "1.4 km" or "380 m") displayed in the card rail. The card ranked 1 is always the closest Tambo to the user’s current position.
Users can trigger the Tambo map layer directly through the voice agent without first scanning a material. Saying “¿Cuál es el Tambo más cercano?” causes the agent to return an accion_data value of "plastico" (the canonical Tambo category), which is passed as puntoDestino to VistaMapaPuntos. The map opens pre-filtered to all 6 Tambo locations, sorted by proximity — no camera scan required.

Adding New Locations

To add a Tambo+ store to the network, append one object to TAMBO_REAL_LIMA_ESTE in src/components/VistaMapaPuntos.jsx:
// Example: adding a new store in San Juan de Lurigancho
{
  nombre:    "Tambo Próceres - SJL",
  direccion: "Av. Próceres de la Independencia 1540, SJL",
  lat:       -12.0201,
  lng:       -77.0045,
  distrito:  "San Juan de Lurigancho",
},
No other code changes are required. Because PUNTOS_LIMA.plastico, .papel, and .metal all reference the same array by value, the new location will immediately appear across all three material categories on the next build.
Use accurate coordinates. A misplaced marker — even by a few hundred metres — can send a user to the wrong block. Cross-check lat/lng values against Google Maps or the official tambo.pe/locales store finder before merging.

Materials Accepted at Each Location

Every Tambo+ location in the Lima Este pilot accepts the same set of materials. There is no per-store variation in the current data model.
MaterialAcceptedPreparation Required
Plástico (plastic bottles, containers)✅ YesRinse and dry; remove caps if possible
Papel / Cartón (paper, cardboard)✅ YesFlatten boxes; keep dry
Metal (aluminium/tin cans)✅ YesRinse and dry
Vidrio (glass)❌ NoGo to Centro Verde municipal
Orgánico (organic waste)❌ NoGo to Centro Verde municipal
Electrónico / RAEE (e-waste)❌ NoGo to Centro Verde RAEE point
Peligroso (hazardous waste)❌ NoGo to Centro Verde peligrosos point

Centro Verde Locations for Other Materials

For glass, organic waste, e-waste, and hazardous materials, QuipuEco routes users to the Centro Verde municipal network instead of Tambo+. The full list of Centro Verde locations — organised by material category — is available on the recycling map page.

Recycling Map

All Centro Verde locations for vidrio, orgánico, electrónico, and peligroso, with the same distance-sorting and route-tracing features.

Tambo Partnership Overview

Why Tambo+ was chosen, the operational model, material restrictions, and the path to national scale.

Build docs developers (and LLMs) love