class SandiRidwan:
def __init__(self):
self.role = "Data Analyst & Automation Architect"
self.location = "Palu, Central Sulawesi 🇮🇩"
self.languages = ["Python", "JavaScript", "SQL", "Bash"]
self.stack = ["Python", "DuckDB/SQL", "pandas", "FastAPI",
"Playwright", "Docker", "Streamlit", "AWS"]
self.specialties = [
"Large-scale web scraping (50K–500K records)",
"TLS fingerprint bypass & anti-bot evasion",
"Government & legal data extraction",
"Automation pipelines (Make.com, Zapier)",
"AI-powered data processing (Claude API, Groq)",
"Data analytics: DuckDB · SQL · statistics · geospatial",
"Document intelligence: PDF → structured data"
]
self.certifications = {
# AUTO:PYTHON_CERTS
"MongoDB ": "✅ Foundational",
"Google Cloud ": "✅ Skill Badge",
"AWS ": "✅ Credly Badge",
"Harvard ": "✅ Certified",
"Coursera ": "✅ Professional Certificate",
"TestDome ": "🥇 Top 10% Global",
"Microsoft ": "✅ Lab-Based",
"KodeKloud ": "✅ Certified",
"AWS Skill Builder ": "✅ Credly Badge",
# /AUTO:PYTHON_CERTS
}
self.availability = "OPEN — Freelance & Remote Roles"
def contact(self):
return "sandyzvoster@gmail.com"🏅 Independently verified — not just self-reported
63 verified credentials · Last updated: ** 14 Jun 2026 | Total Projects: 24
📋 View all 63 credentials in detail
🎓 Full certificate showcase — auto-updated from registry
🏆 24 verified badges · Auto-updated daily · View all on Credly →
224,000 court cases extracted from ASP.NET WebForms government portal. VIEWSTATE bypass, TLS fingerprint evasion, binary search range discovery, thread-safe parallel scraping. Delivered as 41.2MB 9-tab relational Excel.
Stack: Python · curl_cffi Chrome120 · ASP.NET VIEWSTATE · ThreadPoolExecutor · openpyxl
Production-grade FastAPI backend serving Saudi FDA drug data. Async job queue, StreamingResponse, Playwright request interceptor for hidden POST pagination. Dockerized with multi-stage build, healthcheck, Telegram progress alerts.
Stack: FastAPI · Playwright · Docker · SQLite · Telegram Bot API · curl_cffi
Playwright async response interceptor capturing room-grid API. Geo-IP currency lock workaround. Timezone-aware dynamic dates via
ZoneInfo. GitHub Actions daily CI/CD. Full README documentation.
Stack: Playwright · Docker · GitHub Actions · zoneinfo · open.er-api.com
End-to-end lead pipeline: Calendly → Monday.com CRM sync → AI two-pass processing with Claude API + Groq. EU server config, webhook orchestration, structured output parsing.
Stack: Make.com · Calendly · Monday.com · Claude API · Groq (Llama 3.1)
📊 Beyond scraping — I turn data into decisions. End-to-end analytics: ingestion → SQL warehouse → statistical validation → interactive dashboard. Every project ships with tests, honest limitations, and "so what?" insights.
Statistical experiment analysis with industrial rigor: hypothesis testing, 95% CI, power analysis, Benjamini-Hochberg FDR correction, SRM check, heterogeneous effects + CUPED. Found a −4.31% retention drop (p=0.0016) that naive averaging would miss. 🔗 Live demo →
Stack: scipy · statsmodels · DuckDB · Streamlit · 18 automated tests
270 kabupaten mapped from BPS + GADM + OpenStreetMap → DuckDB → SQL marts → interactive Folium choropleth. Reveals poverty clusters in Papua (Intan Jaya 40%). Handles
var_idmismatch across provinces. 🔗 Live demo →
Stack: GeoPandas · Folium · DuckDB · BPS WebAPI · 14 tests
1,392 indicators extracted from UN PDF reports → structured data. Honest validation: recall/consistency/noise measured, and it proves automatic PDF-table extraction fails <1% of the time on real reports. 🔗 Live demo →
Stack: pdfplumber · DuckDB · Streamlit · validation harness · 11 tests
ASEAN food security from World Bank + BPS WebAPI → DuckDB → SQL marts → dashboard + alerts. Monthly price data through 2026. Ships with a real finding: rice wholesale +21% (2020→2026). 🔗 Live demo →
Stack: DuckDB · World Bank API · BPS WebAPI · Streamlit · 20 tests
8,835 Hacker News comments → sentiment, topics, trends. Lexicon v2 + DistilBERT comparison on the same holdout — with a transparent admission that the lexicon misses sarcasm. 🔗 Live demo →
Stack: NLP · pandas · DistilBERT · Streamlit · documented limitations
Every project above: DuckDB/SQL · data-quality tests · GitHub Actions CI · "Kenapa·Tujuan·Dampak" narration · Insight + Recommendation + Risk per chart.
┌─────────────────────────────────────────────────────┐
│ BYPASS TECHNIQUES — PROVEN IN PRODUCTION │
├─────────────────────────────────────────────────────┤
│ ✓ TLS Fingerprint Bypass curl_cffi Chrome120│
│ ✓ JA3 Fingerprint Evasion custom TLS profiles│
│ ✓ ASP.NET VIEWSTATE span-ID parser │
│ ✓ Cloudflare WAF undetected-chromedriver│
│ ✓ Kasada Anti-Bot human-mimicry logic│
│ ✓ hCaptcha / reCAPTCHA 3rd party solving │
│ ✓ Dynamic JS Rendering Playwright intercept│
│ ✓ OTA Geo-IP Lock currency workaround│
│ ✓ Hidden API Discovery network intercept │
│ ✓ Pagination-less Sites binary search pattern│
│ ✓ Railway Worker Deploy Procfile + Nixpacks│
│ ✓ PostgreSQL UPSERT numpy cast + psycopg2│
└─────────────────────────────────────────────────────┘
Languages & Core
Scraping & Automation
Backend & DevOps
Cloud & Data
Deployment
Data & Scheduling
AI & LLMs
Notification & Messaging
Analytics & Statistics
Warehouse & SQL
Geospatial & Documents
Visualization & Dashboards
Quality & Ops
#!/bin/bash
echo "Looking for a scraping specialist or automation engineer?"
echo ""
echo " Upwork → https://www.upwork.com/freelancers/~011f6d0fbb4a372974"
echo " LinkedIn → https://www.linkedin.com/in/sandi-ridwan/"
echo " Email → sandyzvoster@gmail.com"
echo ""
echo "Availability : OPEN for freelance & remote roles"
echo "Timezone : WIB (UTC+8) — Asia/Makassar"
echo "Response time: < 24 hours"







