Hi, I'm

Muhamad Ravi Wicaksono

Software Engineer

Software Engineer with 6 years of experience in large-scale web scraping, data engineering and backend development. At Hubexo I run 3,000+ production scrapers across the UK, DACH, ANZ, US and Asia on Apache Airflow and AWS, and built the GraphQL API that serves those records to customers. Outside Hubexo I build my own products and client projects, from on-chain trading tools on EVM networks (US$5M+ monthly volume) to AI content pipelines and full-stack web apps.

01Selected work

HubexoPresent

Harvester

3,000+ production scrapers across the UK, DACH, ANZ, US and Asia

An Apache Airflow platform on AWS MWAA that harvests planning, construction and tender data from UK councils, Swiss cantons, Sweden, Australia, New Zealand and Singapore, turning raw portal data into customer-ready datasets.

  • Dynamically generated DAGs for daily, scheduled and historical runs
  • Rotating proxy downloader with Zyte / Bright Data failover
  • CloudWatch metrics and SNS alarms per region and source
PythonAirflowAWS MWAAS3SQSSeleniumcurl_cffi
HubexoPresent

Mandor

AI agent that turns a portal URL into a production-ready scraper

A multi-agent pipeline on Claude (scout, analyser, mapper, config and code generators) whose QA agent runs, validates and self-fixes every scraper it generates. Output plugs straight into the Airflow Source / Crawl / Parse pattern.

  • Around 30x faster scraper development
  • MCP browser server with SeleniumBase and Camoufox stealth backends
  • PDF portal support with pdfplumber; hosted on AWS EC2 for the team
PythonClaude APIMCPSeleniumBaseDockerAWS EC2
HubexoPresent

HarvesterAPI

GraphQL API serving millions of planning records to customers

A Nest.js + TypeScript GraphQL API (Apollo Server) over Oracle that gives customers and ETL teams a single source for planning applications, decisions, appeals and document metadata.

  • Normalised schema of 18 types and 100+ fields
  • Idempotent SQS FIFO consumer loading S3 events into Oracle
  • Profile-based multi-tenant access per customer and region
NestJSGraphQLApolloOracleAWS SQSElastic BeanstalkSentry
Web32026

Invictus

Concentrated-liquidity platform on EVM networks — US$5M+ monthly volume

A Telegram bot and a web dashboard over one Postgres database. Paste a contract address, pick a pool, amount and range, and the mint runs itself: approvals, funding swap, mint, receipt. Positions are priced live and every close is recorded, so PnL is real rather than reconstructed.

  • Append-only PostgreSQL ledger with in-transaction rollups
  • AES-256-GCM / HKDF encrypted custodial wallets
  • Redis cache and single-flight lock to cut RPC load
TypeScriptviemExpressPostgreSQLRedisNext.jsshadcn/ui
Web32022

Poinswap

Web3 ecosystem site with on-chain backer subscriptions on Polygon

Marketing site and dApp for a DeFi ecosystem that bridges crypto into real-world retail utilities. Visitors connect a wallet, sign in with Ethereum, and back the project by subscribing to on-chain packages, with referral tracking and an embedded swap.

  • Sign-In with Ethereum (SIWE) against a backend nonce
  • Subscription contract calls via useDApp and ethers on Polygon / Mumbai
  • MetaMask and WalletConnect support, network switching and referral links
ReactViteethersuseDAppSIWEWalletConnectRedux ToolkitTailwind CSS
AI2026

Video Maker

From a short written idea to a finished narrated video

Started as a local CLI (scene plan, stills, narration, motion, assembled MP4) and grew into a hosted, multi-tenant service: an API tier, background workers and a web app with live progress.

  • Schema-validated scene scripts from xAI (Grok)
  • Polyglot split: NestJS API tier, Python workers, sharing only Postgres, SQS and S3
  • Next.js frontend behind a same-origin proxy with httpOnly session cookies
PythonNestJSNext.jsPostgreSQLAWS SQSAWS S3xAI
AI2026

X Content Automation

AI-generated text and image posts for X, on a schedule

Connect an X account, choose a topic and language, generate content with an AI provider, manage drafts and set up automations. Includes premium membership logic.

  • Contract-compatible NestJS backend that replaced a temporary in-app API
  • Multiple AI providers: Google AI Studio, xAI, OpenAI
  • Typed API client, TanStack Query and Form on the frontend
Next.jsNestJSTypeORMPostgreSQLCloudinaryZod
Data2026

Interactive Web Scraper

Point-and-click scraping recipes, executed by distributed workers

A Next.js recipe builder where you pick elements on a page to define steps, and a FastAPI backend that plans each job, splits it into chunks and runs them on Arq workers with plain HTTP or headless Playwright.

  • Visual element picker with drag-and-drop step ordering
  • Live job status and tabular results preview
  • NDJSON output, Redis queue, Postgres state, Alembic migrations
FastAPIArqPlaywrightRedisPostgreSQLNext.jsdnd-kit
Data2024

Drilling Report OCR

Turns daily drilling report PDFs into a queryable database and live dashboard

A university team project (DTEDI UGM, PDU) that extracts tables from oil and gas daily drilling report PDFs, cleans them into structured records and visualises well progress over time.

  • Camelot table extraction and regex cleaning into profile, drilling parameter, AFE cost and time-breakdown tables
  • Flask API over PostgreSQL with hash-based dedup of re-uploaded reports
  • Streamlit + Plotly dashboard; Docker image deployed to a VPS via GitHub Actions
PythonFlaskCamelotSQLAlchemyPostgreSQLStreamlitPlotlyDockerGitHub Actions
Full-stack2026

Marketplace Rewards

Seller app that turns Tokopedia and Shopee purchases into reward points

See who buys your products across marketplaces, inspect transactions, watch amounts convert to points through a configurable rule, and redeem points for QR vouchers. Built spec-first against a swappable data provider.

  • Swappable mock/real data provider
  • TanStack Table views
  • Vitest coverage
Next.jsTanStack QueryTanStack TableZodVitest
Full-stack2025

Desa Digital

Official website for an Indonesian village

Village profile, news, agenda, demographics, development projects, public service forms and a marketplace for local products, with dark mode.

  • Prisma-backed content
  • Village marketplace (Lapak Desa)
  • Kanban-style admin tools
Next.jsTypeScriptPrismaRedux ToolkitChart.js
Client work2026

Medikpro

Clinic website and CMS with a dynamic page → section → item model

Public site plus admin CMS for a clinic network: doctors and schedules, treatments, branches, appointments, products, articles with tags, and fully dynamic page sections.

  • Reusable page/section/item content structure
  • SEO and PageSpeed audit fixes
  • Breadcrumbs, tables and tag system
LaravelLivewireTailwindFlowbiteGSAPMySQL
Client work2026

TACO Membership

Events, workshops and certificates for a professional community

Member registration with OTP, event and workshop management, QR check-in, surveys, points and downloadable certificates.

  • QR attendance with html5-qrcode
  • Certificate generation
  • Points and member dashboards
LaravelTailwindChart.jsRedisMySQL
Client work2026

Duara Sound

Bilingual lead-generation site for a sound-system rental business

Single-page marketing site in Indonesian and English with a small CMS for packages, services, portfolio, FAQ and static pages. Every call to action goes to WhatsApp.

  • ID / EN localisation
  • CMS-driven packages and portfolio
  • Mobile-first layout
Laravel 12ViteTailwindMySQL
Client work2026

Nippon

Corporate site performance work

Maintenance and PageSpeed work on a PHP corporate website: bundling, layout-shift fixes and log hygiene.

  • Reduced layout shift
  • Asset bundling for PageSpeed
PHPCodeIgniterJavaScript
Frontend2023

MoFE

Listing platform with AI-powered price prediction

Launched the frontend from scratch, turning Figma designs into a fully responsive UI and email templates, and integrated an AI price prediction feature with the backend services to give users real-time insights.

  • Listing previews and a content dashboard for publishing
  • Role-based user management
  • Per-page metadata for strong PageSpeed scores and search indexing
Next.jsTypeScriptReduxRTK QueryTailwind CSS
Frontend2023–2024

Tawar Cepat

Live auction flow for used motorcycles on MoFE

The "quick bid" auction section of MoFE: browse motorcycles up for auction, follow a live countdown, and place bids or submit your own bike with owner and vehicle details. Built on the Next.js App Router with RTK Query services.

  • Countdown-driven auction states (upcoming, live, ended, complete)
  • Multi-step bid and vehicle data forms with react-hook-form validation
  • Google / Facebook sign-in, blurhash image placeholders and CloudFront image loader
Next.jsRedux ToolkitRTK Queryreact-hook-formTailwind CSSSentry
Frontend2022–2023

Questeon

Quest-building platform with interactive modules synced to a mobile app

Launched the quest-building platform frontend from scratch and delivered a seamless cross-device experience and email templates from Figma designs.

  • Image puzzles synced with the mobile app and a live mobile preview
  • Time tracker, polling, image cropping, multiple-choice image tasks, Spot-it and QR scanning
  • Role-based user management
ReactTypeScriptReduxRTK QueryTailwind CSSBootstrap
Frontend2023–2024

Oh Circle

Community circles with posts, members and admin tools

A responsive React app where people create or join circles, publish and read posts, and search for communities. Circle admins get pages to manage members, posts, circle details and user settings.

  • Rich-text post editor with Draft.js
  • Paginated member and post tables with bulk selection
  • Separate desktop sidebar and mobile layouts
ReactViteReact RouterRedux ToolkitDraft.jsTailwind CSS

02Experience

  1. Web Scraping, Data & Backend Engineer @ Hubexo

    Oct 2025 — Present · Jakarta

    Web Scraping & Airflow Orchestration

    • Scaled data collection to 3,000+ production scrapers covering planning, construction and tender data across the UK, DACH, ANZ, US and Asia, all orchestrated with Apache Airflow on AWS MWAA.
    • Shipped 300+ production fixes across every region (proxy, SSL, CAPTCHA, rate limiting and site changes) to keep daily delivery reliable.
    • Cut proxy-related failures on 100+ council scrapers with a rotating proxy downloader that fails over between Zyte and Bright Data.
    • Unlocked Cloudflare / Turnstile-protected sources using cloudscraper, curl_cffi and CAPTCHA-solving services.
    • Replaced manual back-scraping with priority-based batch campaigns via the MWAA CLI, and generated Airflow DAGs dynamically per schedule, lookback window and search type.
    • Added harvest monitoring with per-region CloudWatch metrics and SNS alarms for missing output and parse errors.

    AI Scraper Agent (Mandor)

    • Sped up scraper development ~30x with Mandor, an AI agent that turns a portal URL into a production-ready scraper using Claude.
    • Multi-agent pipeline (scout, analyser, mapper, config and code generators) with a QA agent that runs, validates and self-fixes every scraper.
    • MCP browser server with SeleniumBase and Camoufox stealth backends, deployed to AWS EC2 for the whole team.

    ETL, Data Engineering & AI

    • Config-driven ETL pipelines delivering clean, enriched construction and planning datasets for customer-facing products.
    • Used LLMs (OpenAI API) to parse unstructured notices, standardise addresses and resolve geolocation.
    • Validation scripts that deduplicate, reconcile counts and produce daily reports; automated delivery to client S3 buckets via cross-account roles.

    Backend Development (HarvesterAPI)

    • Nest.js + TypeScript GraphQL API (Apollo Server) serving planning applications, decisions, appeals and document metadata.
    • Optimised raw SQL over Oracle tables with millions of records; profile-based multi-tenant access per customer and region.
    • Idempotent SQS FIFO consumer loading scraper S3 events into Oracle; deployed to Elastic Beanstalk via Bitbucket Pipelines.
    PythonAirflowAWS MWAAS3SQSSNSCloudWatchSeleniumClaude APINestJSGraphQLOracle
  2. Fullstack Engineer @ Freelance & Independent Projects

    2026 — Present · Remote
    • Invictus: concentrated-liquidity platform on EVM networks handling over US$5M in monthly trading volume through a website and a Telegram bot, with an append-only PostgreSQL ledger and encrypted custodial wallets.
    • Video Maker: multi-tenant service that turns a short written idea into a narrated video, with a NestJS API tier, Python workers and a Next.js frontend.
    • X Content Automation: AI-generated text and image posts for X on a schedule, using Google AI Studio, xAI and OpenAI.
    • Interactive Web Scraper: point-and-click scraping recipes run by distributed FastAPI / Arq workers with Playwright.
    • Client work: clinic CMS, membership and events platform, and marketing sites built with Laravel and Next.js.
    TypeScriptPythonNode.jsNestJSFastAPINext.jsLaravelPostgreSQLRedisviem
  3. Fullstack Engineer @ Freelance

    Jun 2025 — Aug 2025 · Pacitan
    • Delivered a complete community website from scratch, owning UI/UX, frontend and backend.
    • Custom content dashboard for news, agenda and marketplace; SEO work, bucket storage and WebP media.
    Next.jsTypeScriptReduxExpressPrismaPostgreSQL
  4. Frontend Engineer @ MoFE

    Jun 2023 — Nov 2023 · Jakarta
    • Launched the frontend from scratch, turning Figma designs into a responsive UI and email templates.
    • Integrated an AI-powered price prediction feature; listing previews, content dashboard and role-based user management.
    Next.jsTypeScriptReduxRTK QueryTailwind CSS
  5. Frontend Engineer @ Questeon

    Jun 2022 — Jun 2023 · Singapore
    • Launched the quest-building platform frontend from scratch.
    • Built interactive modules: image puzzles synced with the mobile app, live mobile preview, polling, image cropping, Spot-it and QR scanning.
    ReactTypeScriptReduxRTK QueryTailwind CSSBootstrap
  6. Fullstack Engineer @ University Project

    Jan 2023 — Jun 2023 · Yogyakarta
    • Real-time drilling-data monitoring website for a research team, handling high-frequency streams with Kafka and WebSocket.
    ExpressKafkaWebSocketNext.jsPrismaPostgreSQL
  7. Freelance Frontend Engineer @ Owner Digital Agency

    Apr 2022 — Jun 2022 · Jakarta
    • Launched a responsive Web3 website with Solidity smart contracts on Polygon, token staking and NFT reward minting.
    Next.jsReduxRTK QueryTailwind CSSSolidity
  8. Web Developer @ Freelance

    Jan 2020 — Jan 2022 · Semarang
    • Custom WordPress landing pages for companies and individuals, with SEO best practices.
    WordPress

Education

Bachelor of Computer Systems Networking and Telecommunications

Universitas Gadjah Mada · Aug 2021 — Aug 2025

Certifications

  • Sept 2025Data Scientist: Machine Learning Career Path, Codecademy
  • May 2023Full-Stack Engineer Career Path, Codecademy
  • Apr 2022Tools for Data Science, Coursera
  • Apr 2022Front-End Engineer Career Path, Codecademy
  • May 2021Web Development Career Path, Codecademy

03Skills

Web Scraping

Requests · BeautifulSoup · Selenium · undetected-chromedriver · cloudscraper · curl_cffi · Zyte / Bright Data · CAPTCHA solving

Data Engineering

Python · SQL · Airflow (AWS MWAA) · ETL pipelines · PyMuPDF · pdfplumber · Tesseract OCR · Geocoding

AI / LLM

Claude (Code, MCP, API) · AWS Bedrock · AI agents · OpenAI · xAI (Grok) · DeepSeek · Gemini · Ollama

Backend

Node.js · NestJS · Express · GraphQL (Apollo) · Ruby on Rails · Laravel · Prisma · Kafka · WebSocket

Databases

PostgreSQL · MySQL · Oracle · MongoDB · Redis

Frontend

React · Next.js · TypeScript · Redux · Tailwind CSS · React Native

Cloud & DevOps

AWS (EC2, S3, MWAA, Lambda, RDS, SQS, SNS, CloudWatch, Elastic Beanstalk) · Google Cloud · Docker · Bitbucket Pipelines · Sentry

Web3

viem · ethers · Uniswap v3/v4 SDK · Solidity · Telegram bots

04Get in touch

Open to freelance and full-time work on data pipelines, scrapers, web apps and on-chain tooling.

Find me on GitHub ↗