Data
A local Python pipeline that collects publicly visible Instagram job-vacancy posts across Indonesia's 38 provinces, reads the flyer images with OCR, extracts and normalises the vacancy fields, deduplicates within and across runs, and stores structured output as JSON, JSON Lines, CSV, and SQLite.
Fullstack
A FastAPI and React dashboard over the scraped job corpus. The API serves the corpus read-only with a per-user layer for saved jobs, an admin operations page queues scraper runs for a worker process that reports progress back through the database, and an optional AI layer answers questions over the same filtered data.
DevOps
A CI/CD platform for four containerised Lambda microservices, built inside a private VPC because managed CI/CD services are unavailable in the lab. GitHub Actions run on self-hosted EC2 runners in private subnets, images go to ECR, REST and WebSocket API Gateways expose the functions, and CloudWatch, VPC Flow Logs, Secrets Manager, and Cognito cover observability and security.
Data
A five-layer data platform: CSV batches land in S3 and user events stream through Kinesis; Glue, EMR, Step Functions, and EventBridge transform and orchestrate; Redshift, DynamoDB, and S3 store history, real-time metrics, and the lake; Lambda behind API Gateway serves five endpoints protected by WAF and API keys; a dashboard on Amplify shows GMV, sales, funnel, and ML segments.
Cloud
A multi-tenant SaaS platform on Amazon EKS across two regions: a dual-VPC design in Virginia separating application and data, namespace-isolated tenants with restricted Pod Security Standards and NetworkPolicy, an event-driven audit pipeline, Grafana on ECS Fargate, blue/green canary releases through CodeDeploy, and an Oregon standby with Aurora Global Database and S3 cross-region replication.
IoT
An ESP32 reads temperature and humidity from a DHT22 and publishes JSON over MQTT to AWS IoT Core, authenticated with an X.509 device certificate over TLS. Node-RED subscribes to the topic, applies the data logic, and renders gauges, a 24-hour trend, and threshold alerts on a dashboard that is reachable from anywhere.