Use Cases
Home Blogs Use Cases Realities Resources About Subscribe →
01
End-to-End Project Build

Forex Rate Intelligence: Scraping, NLP & Real-Time App Delivery

A complete engineering story — from blank page to production app. Fourteen financial service providers. No public API. Geo-restrictions blocking cloud access. Built a multi-strategy scraping pipeline with NLP-driven rate extraction, automated every 3 hours via GitHub Actions, stored in Google Sheets, and surfaced through a live React Native mobile app and web dashboard. Here's exactly how it was built.

Stage 01 · Extraction
Multi-Strategy Web Scraping Pipeline
No exchange offers a public API. Built a hybrid pipeline covering static HTML parsers, JavaScript-rendered pages via Selenium/Playwright, custom SharePoint portal scrapers, and WordPress plugin reverse-engineering — each with its own extraction strategy and regex-driven rate normalisation across 135 currency pairs.
Python Selenium Regex NLP BeautifulSoup Playwright
Stage 02 · Automation
GitHub Actions + Geofencing Bypass
Deployed as a fully automated pipeline running 8× per day on GitHub Actions. Regional geo-restrictions blocked the scraper from cloud IPs — solved with a residential proxy injected via GitHub Secrets. Live data lands in Google Sheets within seconds of each run, overwriting the "Latest" tab and appending to a full history log.
GitHub Actions Residential Proxy Google Sheets API CI/CD
Stage 03 · Delivery
React Native App & Live Dashboard
Rates served to a React Native (Expo) Android app and a hosted web dashboard via Google Sheets' public CSV endpoint. The app ranks all exchanges by best transfer rate, highlights the top pick with a badge, and supports 10 currencies with pull-to-refresh — zero backend cost, zero infrastructure maintenance.
React Native Expo Live CSV Android TypeScript
14
Active Financial Service Providers Tracked
452
Rate Records Per Automated Refresh Cycle
Daily Pipeline Runs · Zero Manual Effort
Python · Rate Normalisation Factory · scrapers.py
def _make(source, code, buy, sell, mid=None, unit=1) -> dict:
    """Canonical rate record factory. mid = transfer rate proxy."""
    if mid is None:
        # sell_rate: exchange sells foreign to customer = transfer rate
        mid = sell if sell is not None else buy
    return {
        'source': source,        'currency_code': code,
        'buy_rate':  buy  / unit if buy  else None,
        'sell_rate': sell / unit if sell else None,
        'mid_rate':  mid  / unit if mid  else None,  # canonical transfer rate
    }
Read Full Technical Paper → 25 min · 12 sections · Python, YAML, TypeScript
More Use Cases

Recommendation Engines, RFM & RFMC, NLP in the Enterprise — coming next.