// design

Compliance and operations automation platform

A platform that audits infrastructure and compliance controls every day, publishes the evidence and turns every exception into a tracked ticket. It replaced roughly 2 hours of manual checks per day.

Role
Sole engineer
Status
In production

Python · Azure Functions · Microsoft Graph · Jira · Confluence

~2 hours per day
Manual checks replaced
~10,000 lines of Python
Codebase

Problem

Infrastructure and compliance checks took about two hours of manual work every day.

Architecture

Checked systems

EXTERNAL

Backups

EXTERNAL

Azure

Cost, certificates, secrets

EXTERNAL

Virtualization

EXTERNAL

Identity and access

EXTERNAL

Databases and servers

SERVICE

Azure Functions

Python, timers and HTTP routes

SERVICE

Check registry

17+ controls, own time windows

SERVICE

Secret renewal run

Expiring in 14 days or less

EXTERNAL

Confluence

Daily evidence report

EXTERNAL

Jira

Ticket per exception, deduplicated

EXTERNAL

Teams

Summaries

SERVICE

Copilot agent

Summarizes and prioritizes work

Compliance and operations automation (illustrative)Drag nodes to explore · Illustrative and simplified. Not a real topology.
Dependencies (text)
  • functions -> registry [runs daily]
  • functions -> renewal [runs daily]
  • registry -> backups
  • registry -> azure
  • registry -> virt
  • registry -> identity
  • registry -> servers
  • registry -> confluence [publishes evidence]
  • registry -> jira [exceptions]
  • renewal -> azure [finds expiring secrets]
  • renewal -> jira [review ticket]
  • renewal -> teams [summary]
  • copilot -> registry [reads results]

Python on Azure Functions, with timer-triggered runs and HTTP routes for preview and debugging.

What it does

  • Runs 17+ controls across environments: backups, Azure cost anomalies and certificates, virtualization, identity and access, database maintenance and server health.
  • Each check has its own time window and an explicit rule for whether "no data" means OK or an alert.
  • Publishes the day's evidence report to Confluence every morning.
  • A second daily run finds app secrets expiring within 14 days, opens a Jira review ticket and posts a summary to Teams. Duplicates are skipped, and the alert repeats until the ticket closes.
  • The data also feeds a Microsoft Copilot agent I built, which summarizes the results and points to the work the team needs to do.

Decisions

  • Dry-run by default. Nothing executes without an explicit confirmation.
  • Idempotent and deduplicated everywhere, so reruns are safe.
  • Modular. A central check registry and a separate client per integration.

Result

  • Roughly 2 hours of daily manual checks replaced.
  • About 10,000 lines of Python, designed and built solo.

← Selected work