
About and contact
I started learning Android development at a vocational school in Malang and opened my GitHub account in 2016. Through school and Telkom University, I earned 20 competition placings, including seven first places, in work ranging from chatbot prototypes to data science and capture-the-flag.
I helped lead a 200-student programming club, trained an IndoBERT model for campus sentiment analysis and supported myself with part-time e-commerce backend work. At MNC, Jatis and Jenius, I built travel payments, multi-tenant SaaS and digital-banking integrations. In 2026, I joined Metrodata's Microsoft AI practice. I now write the specs, direct AI coding agents in parallel and review their work before merging. I build voice agents that callers can interrupt mid-sentence, a security platform that opens fix PRs and document AI that must not guess. Alongside that, I build Indonesian-language Terminal-Bench tasks for LILT AI that test whether frontier AI agents handle Indonesian conventions. Evaluation determines which changes I release.
I am open to freelance or part-time work in software and AI engineering.
Email: kurniadiahmadwijaya@gmail.com- Jakarta, IndonesiaGMT+7
Contact links
Working approach
I define each feature in a written spec with acceptance criteria. GitHub Copilot, Claude Code and Codex implement much of the code in parallel; I remain responsible for design, review, verification in a deployed environment and the merge. I use gold sets, A/B tests, CI gates and shadow mode to evaluate changes, and report metrics with their measurement method. Exact logic stays in deterministic code, and an LLM feature is done only when it is evaluated, guarded and observable.
Define the Spec First
Before implementation, I write a numbered spec with acceptance criteria and a constitution: the working rules every agent must follow.
Delegate Implementation, Own the Review
AI coding agents implement much of the code in parallel. I am responsible for design, review, verification in a deployed environment and the merge decision.
Evaluate Before Release
I evaluate changes with gold sets, A/B tests, CI gates and shadow mode. I record negative results and leave changes disabled when they do not help.
Design for Recovery
I plan for failures and build a recovery path rather than assume the system will always work.
Report Metrics with Context
I publish a metric only when I can explain how it was measured: in the lab, offline or live.
How I run AI in production
I treat observability as part of the feature, not an afterthought. The AI services I run on Azure are instrumented with OpenTelemetry, mostly through the Azure Monitor distro, on Python (FastAPI, Functions) and Node (Next.js), across App Service, Functions and Container Apps.
LLM telemetry with GenAI conventions. Each model call records token usage (including reasoning and cached tokens), model, provider and agent, so cost and latency can be traced per feature.
Alerts as code. Alert rules, action groups and diagnostic settings live in Bicep next to the app and ship with azd: 44 rules in production today, covering daily and month-to-date spend, reasoning-token spikes, 429 throttling per deployment, judge latency and failed evaluation gates.
Telemetry governance. Personal data is redacted before export. Noisy spans are sampled, and ingestion has a daily cap with an alert at 80 percent.
Self-hosted when it fits. For a ticketing marketplace backend I provisioned Prometheus and Grafana as code, with black-box probes on the public API every 5 seconds plus Postgres, Redis and host metrics.
This site is also monitored: an anonymous performance beacon, nightly performance runs, and public visit stats at the Visitor Observatory in the Lobby.
Proof from production
100%
of surveyed AI services
44
in production, defined in Bicep across 7 repos
3
production AI services
~1.2M
per month on one queue-based scanner
10
public endpoints every 5 s

param databaseAccountName string
param actionGroupId string
@description('429 responses per 15 minutes that fire the alert.')
param throttleThreshold int = 50
resource database 'Microsoft.DocumentDB/databaseAccounts@2025-10-15' existing = {
name: databaseAccountName
}
resource throttling 'Microsoft.Insights/metricAlerts@2026-01-01' = {
name: '${databaseAccountName}-throttling'
location: 'global'
properties: {
description: 'Cosmos DB returned 429 TooManyRequests above the threshold in 15 minutes.'
severity: 3
enabled: true
scopes: [database.id]
evaluationFrequency: 'PT5M'
windowSize: 'PT15M'
autoMitigate: true
criteria: {
'odata.type': 'Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria'
allOf: [
{
criterionType: 'StaticThresholdCriterion'
name: 'throttled'
metricNamespace: 'Microsoft.DocumentDB/databaseAccounts'
metricName: 'TotalRequests'
dimensions: [{ name: 'StatusCode', operator: 'Include', values: ['429'] }]
operator: 'GreaterThan'
threshold: throttleThreshold
timeAggregation: 'Count'
}
]
}
actions: [{ actionGroupId: actionGroupId }]
}
}One alert rule as code, masked: Cosmos DB 429 throttling from the AI code security platform. Names are placeholders.
Related case studies
- AI Code Security PlatformPris.AI, MII's AI code security platform: eight scanners per pull request, readable AI triage and a fix agent that opens PRs with validation and guardrails.
- Realtime Voice AI Contact CenterARIA, MII's voice AI contact center: ~2 s to ~0.2 s interruption latency in a controlled A/B (n=4 calls per arm), grounded answers and human handover.
- AI Fraud Document ReviewMII Fraud Detection: OCR and two-pass LLM procurement review, with offline development-set evaluation. The hybrid engine remains in shadow mode only.
- Shared Azure AI OperationsModel migration in one day, coordinated key rotation, alerts managed as code and a Node.js security patch sweep across AI apps.
- Event Ticket Marketplace BackendA live ticket marketplace backend for auctions, resale, wallet accounting and partner settlement.
Skills
AI and LLM
Microsoft Agent FrameworkLangGraph
LangChain
Azure OpenAI (incl. Realtime)
Prompt Shields
Hugging Face- RAG
- Hybrid/Vector Search
- LLM evaluation
Data science and ML
pandas
NumPy
Matplotlib
SeabornPlotly
StreamlitJupyter
scikit-learn
PyTorch
Hugging Face TransformersKeras
- Sastrawi
Azure
Azure AI Foundry
Azure AI Search
Cosmos DB
Document Intelligence
Azure Container Apps
Azure App Service
Azure Functions
Service Bus
Key Vault
Managed Identity
Microsoft Fabric
Azure Monitor
Languages
Python
TypeScript
JavaScript
Go
Java
PHP
Backend
FastAPI
Spring BootExpress.js
Gin
Echo
LaravelCodeIgniter
Flask
DjangoGraphQL
Frontend
Next.js
React
VueNuxt
Tailwind CSS
Data and messaging
PostgreSQL
MySQLMongoDB
Firebase
RedisKafka
RabbitMQ
Elasticsearch
DevOps
Docker
Bicep
GitHub Actions
Jenkins
AWSLiveKit
k6
SonarQube
Sentry
Certifications
- GH-300
- GH-600
- AI-103
- AI-901
- AZ-900
- AB-100
Visits
Visits counted by the site itself and AI question totals: today live, earlier days refreshed every hour.
Loading visit stats
CV kiosk
Read my CV here, or download the PDF.