Inbox Agent
Triage & extractionClassifies hundreds of emails a day; pulls out event, venue, date, promo codes and refund details.
- Reads
- IMAP mailboxes — body, PDFs, inline images
- Hands off
- Digests to each department · refund rows to finance
Backend and automation developer. I build the jobs that run every morning before anyone logs in — email triage, invoice parsing, bank reconciliation, LLM pipelines — and I make them boring enough to trust.
A team of agents, each owning one bounded job: they run on a schedule, read your real systems through read-only connectors, and hand a person something to approve. Every agent below is running in production today.
Classifies hundreds of emails a day; pulls out event, venue, date, promo codes and refund details.
Looks up every order mentioned in ~50 morning emails and drafts the reply.
Extracts line items, reconciles them against purchase orders, quarantines anything that does not match.
Matches settlements to sales and runs bank sweeps — idempotent, every transaction audit-logged.
Splits and labels thousands of keyword roots a night; output is validated in code before it is written back.
Collects what ran, what changed and what needs a decision.
Agents reach data through connectors with writes disabled in configuration, behind IP allowlists. Anything that changes money or customers goes through a person.
Agents draft, flag and quarantine. Uncertain fields are left blank for people, not guessed. Every run ends in a summary someone reads.
OpenAI, Gemini and Claude sit behind the same JSON contract, so providers can be swapped or compared on cost and accuracy without touching the jobs.
.NET, SQL Server, Azure or AWS, Gmail and IMAP, Slack, Google Sheets, POS and banking APIs. Agents are added beside legacy systems, not instead of them.
Two agents hand work to each other, and a person makes the only decision that matters. The same pattern fits HR requests, vendor questions or anything else that starts in an inbox and ends in a database look-up.
Each one runs today, unattended, for a real business. Each has a case study with the technical detail.
Classifies hundreds of ticketing emails a day with a fine-tuned multimodal LLM and routes summaries to the right departments. OpenAI and Gemini sit behind one interchangeable JSON contract; a defensive C# parsing layer means one malformed response never breaks the batch.
10+ systems — POS, marketplaces, banking APIs, Gmail, Slack, Google Sheets — wired into ~25 scheduled jobs. Includes idempotent financial reconciliation and bank sweeps, every transaction audit-logged and reported to Slack.
A read-only MCP server in C#/.NET exposes order and case data to AI agents. Daily routines read ~50 customer emails, look up the order through MCP and pre-draft a reply for Operations to approve. Human in the loop, far fewer manual lookups.
Operations platform for a multi-store retailer: an always-on Azure WebJob reads vendor invoices from the mailbox, parses 60+ PDF/XPS layouts and quarantines anything that doesn't reconcile; the web app carries goods through approval, receiving and RFID pick-and-pack with Zebra label printing. Zero-downtime deploys via GitLab slot swaps.
Multi-tenant SaaS with subscription-tier entitlements down to the field level, event-driven auction auto-bidding, third-party data pipelines and Stripe billing. The hard part was SQL: a 13 GB index scan over 130M+ row tables, cut about 10× with covering and filtered indexes.
Serverless Python API that pulls Refinitiv market data and runs Monte Carlo simulations, efficient-frontier optimization and time-series forecasts, with a Dash dashboard and OpenAI-written commentary. Dockerized, deployed through GitHub Actions.
Ongoing backend work on a staffing and scheduling platform — most recently the Google Calendar sync for personnel assignments and a responsive retrofit of a legacy WebForms app.
Built in eight months, scaled from 100K to 1M daily transactions through database tuning and horizontal scaling — CEO Recognition Award, 2017. Six years running 24/7 statutory payment channels in a regulated bank is where my reliability habits come from.
Payroll and HR system in .NET and SQL Server, used by 50+ major clients and generating $100M in revenue over eleven years.
Technical write-ups from the systems above: what worked, what broke, what I wish I had known on day one.
Shipping two real features to production with Claude Code and GitHub's Spec Kit — and where production proved the spec wrong.
Moving back-office jobs from "a person does this every morning" to "an agent does it, a person checks the summary".
The parsing engine, the stack, and how it ships.
A backend case study from the Staffpoint scheduling platform.
A zero-cost SQL MCP server for Claude and ChatGPT, and the eight things I wish I had known.
Define inputs, outputs and what "right" means before any model is involved. The agent gets one bounded step, not the whole task.
Validate, parse defensively, enforce business invariants in code. One bad response should cost one record, never the batch.
Spec-driven development with Spec Kit and Claude Code: the agent does most of the writing, a human owns the decisions.
Schedules, logs, retries, a summary someone actually reads. The lessons that matter come from making it dull in production.
Backend, data and automation for a ticket-resale business: automation hub, AI email triage, MCP server and AI routines, the domain research SaaS.
IProcessor for GMD Stores, Staffpoint workforce scheduling, a wealth-management analytics API, on-prem-to-Azure migrations.
24/7 statutory payment channels, the core-card repayment gateway (CEO Recognition Award), a payment data warehouse that cut reconciliation time 80%.
iHRP payroll and HR management system in .NET and SQL Server — $100M in revenue across 50+ clients.
I'm a software engineer in Calgary with twenty-plus years across enterprise HR software, banking and, since 2021, automation and AI for small and mid-size businesses. Most of what I build today is backend, data and automation work for companies that already run on established systems — ticket resale, retail, staffing, wealth management — and want AI and cloud added without a rewrite.
I'm language-agnostic by habit: the .NET stack is where I'm deepest, but I ship Python, Java and Node.js in production and work across SQL Server, PostgreSQL, Oracle, MySQL, MongoDB and Cosmos DB. Six years at HSBC on 24/7 payment systems taught me that a system is only as good as its worst morning. I work on-site in Calgary or remotely, and take selected contracts through Upwork.
Tell me what people still do by hand every morning, or what breaks when nobody is watching. I'll map the shortest path to a job that just runs.