Alejandro Frank

AI Data Engineer based in Madrid

About me

A little more about me.

AI Data Engineer. I take ambiguous problems and ship the ambitious version: live systems other people can depend on.

7 yrsshipping production systems
8+enterprise clients
1h agolast shipped
2now building
Explore my experience →
Projects

Things I’m building.

Bakiano

Bakiano

001
Market intelligence platform · Venezuela

The price of everything in Venezuela.

Live market data across supermarkets, retail, real estate and telecom — connected by an AI analyst that brings all sources together to build a clearer picture of Venezuela’s economy. Over 200,000 rows tracked daily, normalized to USD at the official BCV rate, with every movement recorded.

4data domains
200K+rows daily
Dailyrefresh
Datasets
Supermarketlive
8 chains · 200K+ rows daily
Retaillive
9 retailers · 40K+ rows daily
Real estatelive
5 platforms, sale + rental
Telecomlive
mobile plans, monthly
Inside the workspace None of this is a roadmap: it's all live in the product right now, running on this morning's prices.
  • AI analystA connected view of the economy
    Cross-references data from all sources and sectors to connect market signals and help explain what is happening across Venezuela’s economy.
  • ChatAI analyst over live data
    Ask in plain language and get real prices, never invented ones. Quotes your whole shopping list in one pass and shows its work while it searches.
  • Shopping listThe basket, optimized
    Every item priced at every chain, stores ranked by coverage and total, and a two-stop split suggested only when it genuinely saves money.
  • AlertsWhat changed today
    Real price moves, net of currency noise. Follow products, filter by chain and magnitude, compare against yesterday or the fortnight.
  • DashboardSeries, minimums and candles
    Per-product charts: median, daily minimum, bands and distribution candles — every point traceable to the exact products inside it.
  • MenuThe week, costed
    Plan the week's meals and price them against one chain's real catalog. What the cooking consumes and what you pay at the register are two numbers — you see both.
  • Real estateSearch with history
    Search listings by zone, price and surface across more than a million historical records from the major networks.
Technical pipeline

From infrastructure to the product. Open a stage to go deeper.

  1. InfrastructureGCP · Terraform · Docker · GitHub Actions

    Terraform defines the jobs, schedules, storage, warehouse, IAM, and networking. Changes ship through pull requests; the deployment workflow builds the changed Docker images and applies infrastructure changes after merge. Cloud Run hosts the collection jobs and the product.

  2. Network accessTailscale · gateway VMs

    Tailscale gateways support the collectors that need Venezuelan network access. The gateway VMs start and stop on a schedule around the collection window. This is supporting infrastructure for scraping, not a stage that transforms the data.

  3. Scraping & orchestrationCloud Scheduler · Cloud Run Jobs · Scrapy / nodriver

    Collectors are organized by vendor and domain. Cloud Scheduler triggers the Cloud Run jobs, and each run produces a CSV snapshot. Scrapy or browser automation handles collection depending on the source; refresh cadence varies by domain.

  4. Archive & ingestionGoogle Cloud Storage · Cloud Functions

    CSV snapshots land in GCS, organized by domain, vendor, and date. An object-finalize event triggers the loader, which appends records to BigQuery and records the run’s health. The archive retains the source snapshots for reprocessing and backfills.

  5. Data warehouseBigQuery · raw / staging / product layers

    Raw tables preserve the collected values and history. Staging holds cleaned, deduplicated data; product tables and serving views support analysis and the application. Operational tables track vendors, collection runs, and exchange rates. Supermarket and retail raw data is partitioned by ingestion date.

  6. Transformations & currencyScheduled SQL · idempotent MERGE · BCV rates

    Scheduled queries process a rolling three-day window, allowing recent missed runs to recover on the next execution. They clean the data and produce daily summaries. Raw prices stay unchanged: serving views derive USD values from vendor currency rules and the BCV rate associated with the ingestion date.

  7. AI enrichmentGemini batch · Vertex AI · BigQuery

    A separate branch from raw data classifies new supermarket products: product type, brand, units, weight, and other catalog attributes. Classification is stored separately from prices. Current prices are joined from the latest raw partition, so enrichment does not freeze yesterday’s price into the catalog.

  8. Serving & analystNext.js · Cloud Run · Gemini on Vertex AI

    The product combines warehouse views and catalog enrichment for chat, dashboards, and a scoped data API. The AI analyst uses a defined set of tools rather than unrestricted SQL. Metered, byte-capped queries and a shared result cache control warehouse usage; run-health monitoring closes the operational loop.

Visit bakiano.com ↗·bakiano.com·● shipped
GCP Ingestion Lab

GCP Ingestion Lab

002

Runnable locally

What happens when the same event arrives twice?

Break a file-ingestion pipeline, replay events, and inspect the rows and operations that survive.

JavaScript · GCS · Eventarc · BigQuery
Catalog Match Lab

Catalog Match Lab

003

Runnable locally

Are these actually the same product?

Compare messy product names using explicit checks for brand, variant, size and pack count.

JavaScript · Identity rules · CSV · Optional Jev
BigQuery Query Guard

BigQuery Query Guard

004

Runnable locally

Can you explain a query’s cost before running it?

Read recorded SQL comparisons, then inspect authorization, scoped caching and query byte limits.

JavaScript · BigQuery · Query plans · Scoped caching
Image to Pixels
Vesti

Vesti · with Jev & SAM 3.1

002
Building with Jev · Side project

Find the outfit. Make it yours.

AI-powered outfit search. Discover a look, find similar pieces, and swap individual items for alternatives that fit together.

How we're building it
  • 01 / SegmentSAM 3.1

    Separate an outfit into individual pieces of clothing.

  • 02 / CompareMarqo FashionSigLIP

    Compare clothing visually to find similar pieces.

  • 03 / MatchWith Jev

    Match the look with available options and suggest alternatives.

Technical pipeline

The pipeline we’re building. Open a stage to go deeper.

  1. Outfit inputReference image · piece selection

    The planned experience starts with an outfit image. A person chooses the piece they want to replace while keeping the rest of the outfit as context.

  2. Garment segmentationSAM 3.1

    The first model stage separates the clothing items in the image. Isolating a garment gives the comparison stage a focused reference instead of asking it to compare the entire outfit.

  3. Visual comparisonMarqo FashionSigLIP

    Marqo FashionSigLIP compares clothing visually to find similar pieces. This stage identifies resemblance to the selected garment; it is separate from deciding which available alternative works for the look.

  4. Candidate matchingBuilding with Jev

    We’re building the matching stage with Jev to connect the reference piece to available options. The intended result is a set of replacements someone can explore without restarting the outfit search.

● In development·Alejandro + Jev
Experience
Say hello

Let’s talk.

GitHub · alejandrofrank1,324 contributions in the last year ↗