/Projects /About /Contact /Résumé
← Home

Projects

Work, side projects, and things I built to learn something new.

Lagos Ferry Map
The backend and data pipeline behind Lagos's first GTFS-compliant ferry dataset, submitted to Google Maps, OpenStreetMap and the Mobility Database. A Node/Express/Drizzle API on PostgreSQL powers public-facing crowdsourced submission forms for jetties and routes. A parallel Python toolchain, containerised with Docker on Cloud Run, publishes the GTFS feed, syncs route geometry from OSM/GeoJSON sources, and runs automated data-quality checks against the live database.
Node.js · Express · TypeScript · Drizzle ORM · PostgreSQL · Python · Docker · Cloud Run · GTFS · OpenStreetMap
Sports Analytics Automation Pipeline
Built for a client, in production since June 2026. A production data pipeline that automates a full sports-analytics workflow. It scrapes live stats from five bot-protected sources, joins them with fuzzy name-matching, and runs a 150-point scoring model, writing ranked results back to Google Sheets. A non-technical client triggers the whole run from a spreadsheet button, turning a multi-hour daily process into a 5-minute one-click run. Click through to request a live demo.
Python · Playwright · pandas · Google Sheets API · GitHub Actions
Sports Bet Automation
Reverse-engineered an undocumented REST API to place single and combo bets programmatically on bc.game. Implemented JWT auth, input validation, and robust error handling, reducing manual execution to a single function call.
Python · REST APIs · Chrome DevTools
Exchange Rate Telegram Bot
A live Telegram bot that fetches currency exchange rates on demand and sends a daily rate broadcast via an in-process scheduler. Storage swaps automatically between PostgreSQL in production and a local JSON file in development, behind one shared interface.
Python · aiogram · PostgreSQL (Neon) · APScheduler · Fly.io
Baseline In progress
A personal finance tool I built to replace the manual work behind my investing in the Nigerian stock market, so I can analyse and make decisions faster. A public price-trend scanner for about 130 NGX-listed stocks and ETFs turns NGX's daily closing prices into daily moves, streaks and 5-day moving-average signals. A private, multi-user portfolio tracker on Supabase, with magic-link sign-in and row-level security, replaces my investing spreadsheet and applies my investing rules to live prices, flagging what needs attention. Prices sourced from NGX. Informational only, not investment advice.
Python · JavaScript · Supabase (Postgres, Auth, RLS)
Stears African Elections & Democracy Data
Data work behind Stears' African elections open-data hub, a 54-country platform covering upcoming and recent elections, election integrity, democracy levels, term-limit compliance, coups and conflict, and country context pages. Handled data sourcing, cleaning and pipelines, and automated election data workflows from collection to processing in Python, cutting manual data entry by over 80%. Also built a GPT-based pipeline that pulls content from RSS feeds and web searches, summarises it, and writes it to Google Docs, cutting content processing time by 85%.
Python · OpenAI API · Google Docs API · Flourish · Data Pipelines
Web Scraping & Data Pipeline
Automated web scraping from a login-protected site using Selenium. Processed data with Pandas and stored to AWS S3 via boto3, fully hands-off, cloud-synced output.
Python · Selenium · Pandas · AWS S3
Weather Fetcher API
Flask backend that chains multiple third-party API calls to convert city names into real-time weather insights. Securely manages API keys with env vars and deployed to Render.
Python · Flask · REST APIs · Render