Projects
AWS Event-Driven Order Platform
Serverless order flow built with API Gateway, Lambda, DynamoDB, SNS/SQS and S3, provisioned end to end with AWS CDK. Later added a DynamoDB to Aurora PostgreSQL migration with contract tests comparing behaviour before and after the move.
github.com/nalinka1/aws-order-flow
AWS CDK · API Gateway · Lambda · DynamoDB · Aurora PostgreSQL · SNS · SQS · S3
Multi-Cloud Secure Document Platform, AWS and Azure
Cross-cloud OIDC workload identity federation, so a workload in Azure reads an encrypted S3 bucket with no AWS access key anywhere on the Azure side. Four negative tests prove the boundaries hold: a wrong identity, an expired token, an out-of-scope prefix and a missing KMS grant are each denied. Both clouds provisioned from one Terraform configuration with remote state and blob-lease locking.
github.com/nalinka1/multi-cloud-secure-document-platform
Terraform · AWS (S3, KMS, IAM, STS) · Azure (Entra ID, RBAC, Key Vault, API Management, VNet) · OIDC
Casual Services Invoice Automation
Built for my own monthly invoicing. A scheduled Lambda works out the billable days for two sites from business-day calendars, public holidays and leave, writes the amounts into my existing PDF template, and leaves a Gmail draft for me to review. It never sends - issuing the invoice stays with me. Invoice numbers are reserved in a DynamoDB transaction, and a marker written before the Gmail call means a retry looks for the existing draft instead of creating a second one.
github.com/nalinka1/casual-invoice-automation
Python · AWS (Lambda, EventBridge Scheduler, DynamoDB, S3, Secrets Manager, SNS, SQS, CloudWatch) · CloudFormation · Gmail API
Agent Failure Lab
A hand-written tool-calling agent over three-way invoice matching, run fifty times to count how it fails. Four of the fifty runs approved an invoice whose vendor lookup had returned an error - with the same tool results as the run that escalated. The idempotency key the model supplied was identical every time and protected nothing, because the payment tool never checked it. What I took from it: preconditions belong in the tool, not the prompt.
Python · OpenAI API (tool calling)
AI-Powered LEGO Sorting System
Computer vision and a CNN classifying LEGO pieces by type in real time. The interesting part wasn't the model - the first version failed on pieces with no clean training examples, and accuracy only moved once I stopped tuning the network and fixed the data pipeline.
Python · TensorFlow · OpenCV