Posts

Featured Projects: Automation and AI Systems I Built and Run

This is a living index of the systems I'm most proud of — each one is in daily production use, and each links to a deeper technical write-up. If you're a recruiter or hiring manager, this page is the fastest way to see what I actually build. 1. AI Email-Triage Pipeline (LLM classification in production) A pipeline that classifies hundreds of ticketing emails per day (presales, releases, cancellations) using multimodal LLMs, then distributes summarized reports automatically to the relevant business departments. I fine-tuned GPT-4o-mini on a labelled dataset I built from PDF archives, put OpenAI and Gemini behind a single interchangeable JSON contract for cost/performance trade-offs, and wrote a defensive C# parsing layer — balanced-brace JSON extraction, tolerant custom JsonConverters, code-enforced business invariants — so a single malformed model response never breaks the batch. Stack: C#/.NET, OpenAI API (fine-tuning), Gemini, IMAP, SQL Server Read more: Classifying E...

Classifying Event-Ticket Emails with AI: From Prompt Engineering to Fine-Tuning GPT-4o-mini

Image
  Post 2 in my series on an automation hub for a ticket-resale business. This one covers the AI pipeline that reads and classifies event-ticket emails — from prompt engineering and multimodal handling (emails with images) to building my own dataset and fine-tuning GPT-4o-mini. The problem The purchasing team's inbox receives hundreds of emails a day: Ticketmaster presale announcements, venues releasing new ticket blocks, artists sending promo codes, cancelled orders that need refunds... Missing a "tickets released" email can mean losing a chance to buy at face value; missing a cancellation email means losing refund money. But nobody can read hundreds of emails a day by hand. The requirement: classify emails into categories ( PRESALES , TICKETS_RELEASED , TICKETS_ON_SALE , ALMOST_SOLD_OUT , PROMOTION_DISCOUNT , Cancelled ...) and extract structured data : performer, venue, event date, purchase link, promo code — and for cancellation emails, the order number, vendor, quanti...

Building an Automation Hub for a Ticket-Resale Business in .NET

  This is the first post in a series about a project I built for a US-based ticket-resale company: a .NET "automation hub" that connects more than 10 different systems — from POS and marketplaces to banking APIs and an AI that reads email. The problem The event-ticket resale business in the US runs on a patchwork of disconnected platforms: SkyBox (VividSeats' POS for inventory/invoices), Lysted (a resale marketplace), Ticket Evolution, TicketUtils, SeatScouts/AutoQ (purchasing-account management), plus banking (Taekus), Slack, Gmail, and Google Sheets. Every day the operations team had to: Reconcile Lysted sales against inventory in SkyBox Record settlement payments from remit CSV files onto individual invoices Read hundreds of marketing/presale emails so no new ticket drop was missed Monitor balances and sweep cash-back into the main account Bulk-configure a fleet of purchasing accounts All of it repetitive, all of it error-prone when done by hand. My goal: fold everythi...

Four Months Building a Domain Research Platform: What I Learned

Earlier this year I set out to build a SaaS platform for domain name research — a tool that helps investors find newly registered domains and expiring auctions worth buying, backed by real business signals instead of gut feeling. Four months and a hundred-plus commits later, it's live. Here's what the journey actually looked like. What the platform does The core idea: a domain name is more valuable if real companies are already using that name. So the platform cross-references millions of domain candidates against company datasets — LinkedIn company data, Crunchbase, funding records — and surfaces metrics like "how many companies use this keyword" and "does the .com resolve to a funded startup." Users can filter new registrations and live auctions by dozens of these signals, save filter sets, and even schedule automatic bids on auctions. Tech stack: React 19 + Vite on the frontend (deployed to Azure Static Web Apps), ASP.NET Core 8 API on the backend, SQL Se...

Implemented a Service to receive real time message from an API Webhook

Image
 What is the webhook?  Ask Google :) 😅  This is my experience to build a Azure Function HTTP trigger to receive an event from SkyBox API Webhook.  Business requirement: Real time integration INVOICE with SkyBox API Webhook. Means whenever SkyBox has a new or Update invoice. Their service would send the json message to my API. Solution:  Step 1: Built C# HTTP trigger function and then deploy it to Azure Function Depends on the business requirement, you can add more in your own code.  Step 2:  Added a subscription sending a POST to https://skybox.vividseats.com/services/webhooks {   "topic" :  "INVOICE" ,   "url" :  "https://xxxxxxxxinvoice.azurewebsites.net/api/SkyboxReceiveInvoice?code=xxxxxxxxxx" ,   "headers" :  "Bearer: xxxxxxxx" ,   "secret" :  "yoursecretkey" } Navigate to Azure Function Monitor to see the message coming. Note: The "secret": "yoursecretkey" is using for Encrypted...

Gitlab - CICD to Azure App Service with an application .NET Framework

Image
Every development team has unique requirements that can make implementing an efficient deployment pipeline difficult on any cloud service. This is a process to prevents downtime:  Here is CICD script: variables: MSBUILD: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\MSBuild\\Current\\Bin\\msbuild.exe" SOLUTION: IProcessorSolution.sln WEBJOB_PROJECT: ".\\IProcessorPdfParser\\IProcessorPdfParser.csproj" DEV_PUBLISH_PROFILE: "IProcessorWebsiteStaging - Web Deploy" DEV_PUBLISH_PROFILE_WEBJOB_PROJECT: "IProcessorWebsiteStaging - Web Deploy.pubxml" DEV_DR_PUBLISH_PROFILE: "iprocessorwebsitestaging-dr - Web Deploy" DEV_DR_PUBLISH_PROFILE_WEBJOB_PROJECT: "iprocessorwebsitestaging-dr - Web Deploy.pubxml" PROD_DR_PUBLISH_PROFILE: "iprocessorwebsite-dr - Web Deploy" PROD_DR_PUBLISH_PROFILE_WEBJOB_PROJECT: "iprocessorwebsite-dr - Web Deploy.pubxml" stages: - build - deploy d...

How to setup P2S VPN to connect Azure SQL

Image
After successful building the VPN connection to Azure Environment by applying P2S VPN. This is a note what I did so that I can use it in the future.   Script Powersell to create SelfRoot & Client $cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature -Subject "CN=VNETROOT" -KeyExportPolicy Exportable -HashAlgorithm sha256 -KeyLength 2048 -CertStoreLocation "Cert:\CurrentUser\My" -KeyUsageProperty Sign -KeyUsage CertSign New-SelfSignedCertificate -Type Custom -DnsName TANLECLIENT -KeySpec Signature -Subject "CN=VNETCLIENT" -KeyExportPolicy Exportable -HashAlgorithm sha256 -KeyLength 2048 -CertStoreLocation "Cert:\CurrentUser\My" -Signer $cert -TextExtension @( "2.5.29.37={text}1.3.6.1.5.5.7.3.2" )   Generate and export certificates for P2S: PowerShell - Azure VPN Gateway | Microsoft Docs   Step-by-Step guide to Azure Point-to-Site VPN - Technical Blog | REBELADMIN ...