Alan De Vaney.

Resume

Alan De Vaney / Software Engineer

Data Systems & Applied AI / Orange County, CA

Remote or Orange County hybrid

Software engineer with 13 years of experience building production data, backend and web systems. Spent five years owning the reporting platform for a 16-program homeless-services agency, replacing days of manual report assembly with version-controlled Python that stood up to audit. Now building applied AI where calculations, citations and model decisions can be checked.

Mar 2021 - Mar 2026

Data & IT Manager

Friendship Shelter · Laguna Woods, CA
Data platform engineering, reporting infrastructure and team leadership
  • Built and ran the reporting platform a 16-program agency depended on: 121 Python modules and 297 notebooks feeding 25 scheduled pipelines that alert the team on failure.
  • Cut federal, state and local funder reports from two to three days of manual assembly to on demand by moving the calculations into version-controlled Python, so a rerun reproduces the same number.
  • Wrote an independent implementation of the HUD Annual Performance Report and used it to audit the vendor HMIS, surfacing defects in its Looker reports for the agency and partner agencies.
  • Automated Orange County's Coordinated Entry housing prioritization list as a pipeline that reconciles several HMIS sources and applies the same eligibility rules every run.
  • Built a role-based self-service reporting portal and the CalOptima/CalAIM connector that delivered audit-ready HIPAA client data the vendor portal could not export.
  • Hired and managed the data team for five years, up to four direct reports, training CS graduates into analysts who ran their own pipelines.

Moving reporting logic into code

I built the agency's Tableau dashboards before moving the reporting calculations into Python and pandas. I wanted changes to the logic to be tracked in a repository. Reports could then reuse the same metric definitions instead of maintaining separate calculations in each dashboard.

Fixing overnight reporting failures

When report jobs stopped overnight, I traced the failures through Linux system logs to memory pressure during large Looker queries. I built a wrapper that split oversized requests into smaller batches and cached completed results in Parquet. Scheduled jobs sent failure alerts to the data team, so the team could investigate broken reports.

I also met with the program teams using the Active Clients Roster. Their feedback shaped a configurable report that put current client status in one view, replacing repeated searches through individual HMIS records.

2014 - 2021

Owner and Web Developer

Jellyfish Development · jellyfishdevelopment.com
  • Ran a one-person web shop for local businesses and a youth-golf nonprofit (PHP, JavaScript, three.js). Contributed two merged pull requests to zenbot, an 8k-star open-source trading bot, in 2016.
Languages
PythonTypeScriptSQLC++23Rust
Applied AI
LLM agentsRAGstructured outputsMCP serversevaluation harnesses
Backend and data
FastAPIPostgreSQLSQLAlchemypandasETL pipelinesParquetExcel automationTableauLookerPower BI
Systems
ReactNext.jsLinuxDockerGitGCPCMakesanitizers (ASan, TSan, UBSan)
Domain
HMISHUD APRCoordinated EntryCalAIM/HIPAAfunder reporting