Eyisto Aguilar Trejo
Back to portfolio
Published product

Capital Party

A mobile app published on iOS and Android, with its own pipeline that turns Instagram flyers into structured events.

Platforms

iOS + Android

Published on the App Store and Google Play

Languages

3

Spanish, English and Portuguese

Analytics events

11

Sessions, searches, shares, ads and purchases

Event extraction

Gemini

Multimodal model over flyer images

The product

Capital Party helps people discover salsa, bachata and nightclub events in the city. It's a real product that I designed, built and maintain end to end: the mobile app, the backend and the pipelines that keep the content up to date.

What the app includes

  • Salsa and bachata events, nightclubs, dinner shows, classes and tourist spots, with details for each one.
  • Calendar, maps by category, favorites, reviews and comments.
  • Giveaways and notifications.
  • Deep links to open an event or a nightclub from a shared link.
  • Interface in Spanish, English and Portuguese.
  • A premium subscription plan and ads with AdMob, plus a forced-update mechanism for old versions.

Data pipeline: from a flyer to an event

The content isn't loaded by hand: a set of services turns images into structured records.

  1. 1

    Capture

    A Puppeteer scraper goes through event accounts on Instagram and downloads the new flyers.

  2. 2

    Extraction with Gemini

    A multimodal model (Gemini 2.5 Flash) reads each image and returns the event in a structured format: title, date as dd/mm/yyyy, dance style (salsa, bachata, kizomba, zouk), venue and contact or ticket details. If it can't extract a valid title, the flyer is discarded.

  3. 3

    Deduplication

    I built a separate tool, based on text similarity (TF-IDF and embeddings), to detect repeated events. On a sample of 75 events it flagged ~21% with high similarity (15 pairs above 0.6).

  4. 4

    Translation

    A Gemini service generates the English and Portuguese versions of the content.

  5. 5

    Loading and distribution

    Events are stored in Firestore and serve the app. An additional service automatically generates and publishes Instagram stories (1080×1920 format).

Stack

  • Mobile: React Native (TypeScript and JavaScript), drawer and tab navigation, i18n.
  • Backend and data: Firebase (Firestore, Analytics, Functions), Node.js services on Google Cloud Run with Docker.
  • AI: Gemini API for extracting events from images.
  • Monetization: AdMob and premium subscriptions.