Ade Desfrianto

Business Analyst

I bridge business problems and data solutions — from KPI definition and IDP architecture to building and shipping production systems. Currently serving Major State-Owned Energy Enterprise as Technical BA on an enterprise IDP project.

Jakarta, ID3 yrs exp

Featured work

Major State-Owned Energy Enterprise

Enterprise Integrated Data Platform (IDP)

Problem

The client needed a unified data platform - multiple analytical use cases to be scoped, architected, and delivered from scratch across Dev, QA, and Prod environments.

Action

Supporting end-to-end discovery: BRD authoring, Bronze-Silver-Gold architecture design, SQL-based KPI validation, and Power BI model delivery. Coordinating across business, dev, and QA stakeholders.

Result

Discovery and architecture phase underway - Bronze-Silver-Gold data layers designed, SQL validation framework established across an active delivery pipeline.

SQL ServerPower BIData VaultBronze-Silver-GoldBRDKPI Validation

Capabilities

Requirements & BRD

Translating business objectives into structured BRDs, use case documentation, and data specifications that development teams can actually execute.

Data modeling & KPI

Dimensional modeling, Bronze–Silver–Gold architecture, KPI definition and reconciliation via SQL validation before UAT and production release.

SQL-driven analysis

SQL-based data source analysis, validation queries, and data integrity checks across SQL Server, with Python for automation and reconciliation.

Dashboards & reporting

Power BI, Looker, and BMC dashboard delivery — from data lineage design to stakeholder-ready visuals aligned across Dev, QA, and Prod.

Current role

Technical Business Analyst @ Major State-Owned Energy Enterprise

Migrating Dashboard to IDP architecture. Scope: SQL Server, SSIS, Data Vault, DWH, SSAS, Power Bl.

Experience

Bank Syariah Indonesia

IT Vendor Management Analyst

Built BMC dashboards with query-driven visuals. Automated validation workflows using Python and Excel for contract lifecycle management.

PT. Pegadaian

IT Business Analyst — BI & MIS Squad

Handled 13 MIS projects in H2 2023. Led BI squad independently in 2024, completing 11 projects in Q1 — squad with highest delivery rate.

DHL Supply Chain Indonesia

Operations Supervisor

Managed design and implementation of 3 additional staging checking areas outbound. Reduced work imbalances in picking process by breaking down 3 picking types and measuring standard time. Supervised warehouse 5S & K3 compliance.

Other experience

Binar Academy (Bootcamp)

Business Intelligence Analyst Bootcamp

Graduated as Most Progressive Student. Covered ML, classification, A/B testing, EDA, Looker, and Excel.

Batik Nakula Sadewa

Process Improvement Analyst (Thesis Research)

Applied Lean tools (Process Activity Mapping, VSM) resulting in 3.31% increase in process cycle efficiency, 4.17% reduction in lead times, and 9.47% reduction in cycle time via 5S and SOP implementation.

PT. Suntory Garuda Beverage

Quality Control & QA Staff (Intern)

Utilized Six Sigma to identify and reduce dominant defects, resulting in 20–33% defect decrease. Conducted organoleptic competency tests and participated in production equipment calibration.

Stack & approach

SQL Server
Power BI
Python
Looker
Excel
SQL
Jira
Microsoft 365

How this was built

From scratch, no templates. Shipped to production, self-audited, and patched 7+ security vulnerabilities. Then added a full analytics pipeline, Supabase SQL schema with RLS, and iterated like a real product.

Security-first

CSRF, IDOR mitigation, magic-byte file validation, RLS on every table — found and fixed post-ship. Including a cross-user data leak in analytics.

Supabase & SQL schema

Wrote production SQL — RLS policies per table, storage policies for avatars, owner index, and startup env guards via instrumentation.ts.

Analytics pipeline

Session fingerprinting, SHA-256 IP hashing, device & referrer breakdown, bot detection, event markers — no third-party SaaS.

Built & iterated

Shipped v1, audited, patched, added features. Same cycle as production engineering — not a static portfolio project.

Frontend

Next.js 14React 18TypeScriptTailwind CSSFramer Motion

Backend & Database

SupabasePostgreSQLRow Level SecuritySupabase StorageServer Actions

Security & Validation

ZodCSRF ProtectionIDOR MitigationMagic-byte ValidationCSP Headers

Testing & DevOps

VitestESLintVercelGitHubISR + Edge Runtime

Key features

Analytics Engine Built From Scratch

No Google Analytics, no Mixpanel. Custom pipeline: visit/click tracking, device & browser parsing, traffic source classification, bot filtering, and owner-visit muting — all server-side, all first-party.

Security Self-Audit

Identified and patched 7+ real vulnerabilities post-launch through systematic code review: IDOR on server actions, cross-user data leaks in analytics queries, file-upload MIME spoofing, and IP-hashing salt drift.

Self-Managed Admin Dashboard

Every piece of content — profile copy, links, career highlights, featured work — is editable through a secured admin panel. No redeploy needed to update copy.

Row-Level Security by Default

Database-layer access control (Supabase RLS) on every table, so even a bug in application logic can't leak data across users — the database itself enforces the boundary.

Dynamic OG Image Generation

Auto-generated Open Graph preview images at the edge, per profile — no manual asset creation, CDN-cached for near-zero latency when shared on LinkedIn or Twitter.

Bulk Upsert Optimization

Refactored a reordering feature from N individual database calls to a single bulk upsert — an obvious-in-hindsight fix that came from actually measuring query cost, not guessing.

Technical SEO Hardening

Fixed real indexing gaps beyond meta tags: duplicate H1s confusing crawlers, private routes exposed to indexing because robots.txt disallow only blocks crawling — not indexing. Title/description copy rewritten and iterated against SERP truncation limits, not guessed.

Custom Tooling, Built On Demand

When manual workflows got too slow, built the tooling instead of tolerating it: a Google Docs API integration (OAuth, automated document edits) and a raster-to-vector image pipeline (ImageMagick + vtracer + SVGO) for logo/brand asset production.

Let's connect

Open to new opportunities

Data & IT Business Analyst — Jakarta-based, open to remote.

View my work
Live2026

Portfolio Hub — This Site

A self-hosted portfolio platform with a custom-built visitor analytics engine and a self-run security audit — built, shipped, and iterated on like a real product, not a static page.

Problem → Solution

Problem

Generic portfolio tools (Linktree, Notion pages, static templates) can't be customized, don't show who's actually visiting, and put visitor data in a third party's hands. I wanted a portfolio that doubled as proof of full-stack ability — not just a page listing projects.

Solution

Built the entire platform from scratch: public profile, self-managed admin dashboard, and a visitor analytics engine with no third-party trackers — session fingerprinting, bot detection, traffic source classification, and SHA-256 IP hashing, all server-side. After shipping v1, ran a self-audit and patched 7+ real security vulnerabilities (IDOR, CSRF, RLS gaps).

Outcome

A production site handling its own content management, analytics, and security — with every architectural decision (Server Actions over REST, RLS at the database layer, edge-rendered OG images) made for a specific reason, not by default.


Key features

Analytics Engine Built From Scratch

No Google Analytics, no Mixpanel. Custom pipeline: visit/click tracking, device & browser parsing, traffic source classification, bot filtering, and owner-visit muting — all server-side, all first-party.

Security Self-Audit

Identified and patched 7+ real vulnerabilities post-launch through systematic code review: IDOR on server actions, cross-user data leaks in analytics queries, file-upload MIME spoofing, and IP-hashing salt drift.

Self-Managed Admin Dashboard

Every piece of content — profile copy, links, career highlights, featured work — is editable through a secured admin panel. No redeploy needed to update copy.

Row-Level Security by Default

Database-layer access control (Supabase RLS) on every table, so even a bug in application logic can't leak data across users — the database itself enforces the boundary.

Dynamic OG Image Generation

Auto-generated Open Graph preview images at the edge, per profile — no manual asset creation, CDN-cached for near-zero latency when shared on LinkedIn or Twitter.

Bulk Upsert Optimization

Refactored a reordering feature from N individual database calls to a single bulk upsert — an obvious-in-hindsight fix that came from actually measuring query cost, not guessing.

Technical SEO Hardening

Fixed real indexing gaps beyond meta tags: duplicate H1s confusing crawlers, private routes exposed to indexing because robots.txt disallow only blocks crawling — not indexing. Title/description copy rewritten and iterated against SERP truncation limits, not guessed.

Custom Tooling, Built On Demand

When manual workflows got too slow, built the tooling instead of tolerating it: a Google Docs API integration (OAuth, automated document edits) and a raster-to-vector image pipeline (ImageMagick + vtracer + SVGO) for logo/brand asset production.


Technical architecture

Technical Architecture

Frontend

Next.js 14 (App Router)React 18TypeScript (strict)Tailwind CSSFramer Motion

Server Layer

Server Actions (CSRF-safe by design)Edge Runtime (OG images)Zod validation

Data & Auth

Supabase (PostgreSQL)Row-Level SecuritySupabase AuthSupabase Storage

Security & Infra

SHA-256 IP hashingMagic-bytes file validationCSP + HSTS headersUpstash rate limitingVercel Edge/CDN

Tech stack

Frontend

Next.js 14TypeScriptTailwind CSSFramer Motion

Backend / Data

Supabase (PostgreSQL)Row-Level SecurityServer ActionsZod

Security

SHA-256 IP HashingCSRF TokensContent Security Policy

Deployment

VercelUpstash Redis

What I learned

Self-audits find real bugs

All 7+ vulnerabilities were found by methodically reviewing my own code after shipping — not from an external audit. Ownership-check gaps and cross-user query leaks don't announce themselves; you have to go looking.

Database-layer security beats application-layer hope

RLS policies mean that even if application logic has a bug, the database itself refuses to leak another user's row. Defense-in-depth isn't a buzzword when you've seen the alternative fail.

robots.txt disallow isn't indexing protection

Learned the hard way that blocking a route in robots.txt only stops crawling — it doesn't stop Google from indexing the URL if it's linked elsewhere. Private routes need an actual noindex meta tag.

Measure before optimizing

The N-call-to-1-call bulk upsert fix only happened because I measured what reordering actually cost in database round-trips — not because it looked slow.

Caught my own overclaim before shipping it

Drafted a marketing stat that sounded better than it was — recomputed it against actual dates, found the number didn't hold up, and rewrote it before it went live. Easier to catch than to explain away later.


Live2026

Truf — AI Card Game

A full-stack implementation of the Truf / Oh Hell trick-taking card game with a rule-based AI opponent, real-time game state management, and an in-game tutorial system.

Live demo

https://truf-game.vercel.app
AA
AA
AA
AA

Add your deployed URL to enable the live demo link

Play the Game

Problem → Solution

Problem

Card games like Truf (an Indonesian Oh Hell variant) have deep strategic depth — bidding, trump management, hand reading — but no accessible digital implementation existed that preserved the authentic rules and offered a solo practice mode against a smart opponent.

Solution

Built a complete browser-based implementation from scratch: authentic rule engine, multi-phase game loop (bidding → play → scoring), a rule-based AI opponent that evaluates hand strength and adapts bids, and a step-by-step tutorial for new players.

Outcome

A fully playable single-player experience that accurately models the game rules, provides an AI opponent that makes realistic decisions, and onboards new players through an interactive tutorial — shipped and deployed end-to-end.


Key features

Rule-based AI Opponent

The AI evaluates hand strength, tracks played cards, and adjusts its bids and play strategy based on trump suit, remaining tricks, and round context — no ML required, pure deterministic logic.

Complete Game Engine

Full implementation of Truf rules: trump selection, trick-taking resolution, bid validation, penalty/bonus scoring, and multi-round progression with persistent score tracking.

Interactive Tutorial System

Step-by-step guided mode that walks new players through bidding, trump mechanics, and trick-taking with contextual hints and highlighted valid moves.

Real-time Game State

Reactive UI that reflects game state changes instantly — card animations, trick resolution, score updates — with no page reloads, driven by a clean state machine.

Mobile-first Responsive

Designed for touch interaction: tap-to-play card selection, legible card faces on small screens, and layout that adapts from mobile to desktop without losing game clarity.

Game Flow UX

Clear visual feedback for whose turn it is, which cards are valid plays, trick winner announcement, and round transition — reducing cognitive load during play.


Screenshots

K♠
A♥
Q♦
J♣
10♠
9♥

Bidding Phase

Players select their bid count; AI evaluates hand strength and places its bid before play begins.

K♠
A♥
Q♦
J♣
10♠
9♥

Trick-taking Play

Active round with trump indicator, played cards per trick, and highlighted valid cards in hand.

K♠
A♥
Q♦
J♣
10♠
9♥

Scoreboard & History

Per-round scoring summary with bid vs. actual tricks, penalties, and cumulative scores across rounds.


Technical architecture

Technical Architecture

UI Layer

ReactTailwind CSSFramer Motion

Game Engine (Core Logic)

TypeScriptState MachineCard EvaluatorTrick Resolver

AI Module

Hand Strength ScorerBid StrategyPlay HeuristicsCard Memory

Persistence

LocalStorage (session)Score History

Tech stack

Frontend

ReactTypeScriptTailwind CSSFramer MotionVite

AI / Game Logic

Custom State MachineRule-based AIHand Evaluator

Deployment

Vercel

What I learned

Modeling complex game state

Representing a multi-phase card game (deal → bid → play → score → next round) as a finite state machine made transitions explicit and bugs dramatically easier to isolate.

AI without ML is still AI

Building a rule-based opponent taught me to think adversarially — what information does the AI have, what's the optimal move given incomplete information, and how to make it feel 'smart' without being unfair.

Card game UX is deceptively hard

Communicating valid moves, trump context, and trick results clearly — without overwhelming the player — required several iterations. Constraint: every pixel competes with the actual cards.

Pure TypeScript logic is testable

Isolating the game engine from the UI meant I could write unit tests for edge cases (bid ties, last trick scoring, trump exhaustion) without spinning up a browser.


Documentation


Want to see it in action?