Lead · still implements · Vancouver

Eric Lee

I build HR and workforce apps at Fraser Health, a BC health authority. I lead the work and still write the code. I also build AI workflows with a human approval step, so we ship with fewer defects. I share them with the team, and I still review what ships.

Vancouver, BC linkedin.com/in/ericLdotca

Selected work

AI delivery pipeline

Problem

Requirements lived in scattered meeting notes, and details went missing between follow-ups.

Built

Teams transcripts become documented requirements and Azure DevOps work items. AI drafts mockups that I iterate and review with the client before build starts. A second AI agent in a fresh session reviews the code for security and privacy. A person approves every step.

Result

Significant development time saved. I walked the team through it so colleagues can run it without me.

Self-serve data lineage

Problem

People asked me weekly or daily where a table's data came from. The answers sat inside SSIS packages.

Built

A Python web app that scans SSIS packages and table metadata. It answers with steps and SQL and shows connections across servers.

Result

Three teams look it up themselves.

Forge Flow

Problem

AI writes code fast, but it grades its own work too kindly.

Built

The agent that writes a change never reviews it. Each change starts from written acceptance criteria. Its tests must first fail against the old code, so they cannot pass by accident. Sensitive work gets a second, adversarial review.

Result

Harmony Care, a home-care scheduling app, was built this way. A live pilot starts soon.

01 Current post

Lead, Information Systems and Knowledge Management

Fraser Health Authority · August 2024 to present · Surrey, BC
Client Partner / software development, December 2022 to August 2024
Twelve-plus years building software, net of a 2021 to 2022 parenting break

Several weeks a year I cover for my manager. I interview and recommend who we hire.

I help keep 15-plus apps and systems in production. Power Apps, .NET, Power Automate, SSIS, SSRS, automations, and scripts. I still write production code. When something breaks, I jump in or coordinate a fix with the developers on it. I own several projects end to end from spec to production. I work alongside data analysts and business analysts.

How the team actually works

I pair with developers. I do not dismiss odd behaviour. We find the root cause. I advise and pair with developers on the team. I recommend how we manage code, in reviews and in pairing. I coordinate our knowledge-sharing sessions. I walked the team through a plain-English HTML page of our AI workflow so colleagues can run it without me.

I make build-versus-defer calls against client need, security risk, and capacity. Current concurrent load includes two automations, an HR web app with data analysts and one developer, and on-prem web-app and database server migrations to Azure. I work with technical architects. Privacy and Security work runs in parallel.

I treat Privacy and Security assessment questions as requirements for new apps, so they are built to those rules from the start, not patched after review. I advise on Power Platform licensing. A model-driven Dataverse app I built is in the premium-licence class for a smaller audience. A separate SharePoint-backed app I helped deliver is for 500-plus users who do not need premium licences.

02 Shipped systems

AI delivery pipeline

I designed a pipeline that turns Teams meeting transcripts into documented requirements and Azure DevOps work items through MCP. Security and privacy go into those docs from the start. User-flow mock-ups are produced with AI prompts and iterated with the client until they are satisfied. GitHub Copilot implements the work items. I still scan the files, the pull requests, and the work-item updates. Another AI Agent in a fresh session does a code-review pass, and sometimes more than one. I ask it to check security and privacy vulnerabilities as well. Work items update through MCP as the code lands.

Each project keeps a running log. Meeting notes fold into it through reusable prompts. A scheduled daily prompt in Microsoft 365 Copilot tracks work completed and next steps. A single prompt sets up a new project folder and pulls in a reusable workflow repo. Privacy and security questions have templates. Skills fill those templates from project requirements and code. A person still reviews the answers. Word docs go to governance, the team, and clients. Optional database DDL when the project needs the data structure.

When GitHub Copilot costs jumped, I moved project management and documentation onto per-seat Microsoft 365 Copilot Premium and kept GitHub Copilot for coding only. When a script is more reliable than a model, I use the script.

Specialty training tracker

I replaced MS Access and spreadsheet tracking with a governed Dataverse model-driven Power App. Several HR teams had been sharing one spreadsheet to coordinate nurses in specialty training. The app was built in phases. It pulls data from the talent system and other HR databases. Seats, cohorts, learner progress, automated emails to managers and learners.

A business analyst wrote the initial wireframes. I wrote the data model and the operational guide, implemented from those specs, then took full ownership from design through shipping. Later phases added approvals and handoffs so more of the training process runs in the same app.

Career-access program tracker

I owned a program-progress app end to end. Data model, UI, and UX. It tracks participants through a provincial health-career program. It pulls from the talent system and other HR databases. It automates import of Fraser Health employees in the program. It also loads a Ministry of Health file of people who are not Fraser Health employees. Hours of manual entry became a governed import through restricted SharePoint, Power Automate, and Dataverse. I prepared the Privacy Impact Assessment. The load went live after Privacy and Security review.

Workforce scheduler cutover

I coordinated several apps off a legacy scheduler onto new workforce data sources. The web apps still used the old system's data. We changed them to use the new system's data and structure. I personally updated the call-out tracker, which records vacancies such as illness. Reusable patterns. Old and new data sources at once during a gradual cutover of departments.

I assigned developer ownership, ran weekly scrums, managed cross-application dependencies, and reported percent-complete to the larger workforce project team. Requirements, testing, deploy. We shipped in phases so workforce operations stayed up.

Statutory holiday pay approvals

I built a statutory-holiday pay approval system end to end. SSRS reports for manager review and approval. SQL for validation and KPI tracking. Automated email. One hundred-plus bi-weekly emails to managers who still have items pending. It became the standard process. It replaced a spreadsheet.

Mentor pairing app

Built by two developers, including me, and a business analyst. Mentor and mentee pairing and progress tracking. Privacy review set the requirements, and they had to pass before anyone could use it. Access was provisioned only after that sign-off.

Data lineage

Team members used to ask which source fills a given SQL table. The answers lived in SSIS files. I first searched those files with GitHub Copilot, then built a Python web app over SSIS packages and table metadata so the team can find lineage themselves.

Manager-delegate coverage

I improved delegate logic so manager and delegate relationships in the vendor employee portal matched how the business actually assigns coverage. I sit in vendor sessions for the workforce scheduler and the talent system as a technical lead.

Payroll-critical incident

When a payroll-critical Microsoft service failed, I coordinated the response across ten-plus people in security, infrastructure, cloud, database, and HR tech. I kept one Microsoft ticket so the work did not fragment, translated their requests into internal steps, validated the fixes, and wrote the knowledge-base article for next time.

Staff conversation dates

SSRS report for managers recording staff conversations. The system defaulted to today. I added a calendar override so the true discussion date is what gets reported.

Automations that stay up

Those 15-plus apps and systems include 24 robotic processes that update 10,000-plus employee schedules five times a week. They write extra-pay lines into a legacy scheduler through the web UI, because there is no API.

03 Independent practice

2026 to present · concurrent, disclosed · alongside Fraser Health

Forge Flow

Forge Flow is my AI workflow that takes a written spec to shipped code. The agent that wrote the change does not review it. A second set of AI agents run an adversarial review on sensitive work. I use GitHub issues and an Obsidian vault to pass work between sessions. Git hooks block secrets and personal data. Tests must fail for the right reason before they lock. I still review the output.

I keep a standing loop for AI coding workflows. I research a high-signal technique or repository, compare its actual code to Forge Flow rather than matching the names of workflow steps, then I decide whether to take it in or leave it out.

Harmony Care

I built Harmony Care using Forge Flow. It is a scheduling and operations app for one home-care agency. Flutter front end. Postgres row-level security. GPS-verified shifts. Privacy-by-design under BC PIPA. A live pilot starts soon. I built it with Grok Build and Claude Code.

04 Earlier

Interface 48 Systems, Software Developer

April 2015 to June 2021 · Vancouver, BC

React and .NET in a team of three for a bulk shipping terminal. Workflow for landing trains and loading cargo, including real-time visualization of material and data that populated operator timesheets. Train-landing simulator on Leaflet and OpenStreetMap so superintendents could train foremen. Project-budgeting app for 100-plus projects. Winning proposals with mock-ups. DriveBC highway cameras. Secondary-school credit transfer app. Daily scrum. Test plans. User manuals at rollout.

Career break, full-time parenting

June 2021 to December 2022 · Vancouver, BC

SAP, Assembly Project Lead

March 2012 to March 2015 · Vancouver, BC

I coordinated software releases across 100-plus mobile and on-premise applications. I developed release processes for new build environments (Git, TFS, iOS, Android) and ran continuous-improvement work across those teams. Junior build automation intern immediately before this role, January to March 2012, building internal tools to visualize build issues and notify the people who needed to know.

Simon Fraser University, Research Associate

September 2009 to December 2011 · Surrey, BC

I worked on CZSaw's scripting engine, which enables replay of a user's analysis of unstructured text. Our team received two IEEE VAST 2010 Challenge awards. I presented and demonstrated CZSaw to industry and research personnel.

PBA Engineering, Junior .NET Developer

January 2009 to June 2009 · Vancouver, BC

Web control system for emergency SMS to West Coast Express passengers. ASP.NET, SQL Server, REST. Requirements, design, implementation, testing, and documentation with other contractors.

05 Stack

C# / .NET VB.NET TypeScript / JavaScript React SQL Server Python Flutter Power Apps Dataverse Power Automate Power BI / SSRS SSIS SharePoint Azure DevOps Postgres Supabase Claude Code GitHub Copilot Microsoft 365 Copilot MCP

Education

M.Sc., Interactive Arts and Technology, Visual Analytics. Simon Fraser University

B.Sc., Computing Science (Information Systems). Simon Fraser University

06 Contact