Skip to content
Senior Software Engineer

Elyas Syoufi

I build systems that have to prove what they did.

Nine years building production systems, most of it inside a federal agency where every change had to survive audit: the system records who made it, and only certain roles are permitted to make it at all. I do that work on Agile teams, and I hold AI-assisted work to the same standard.

Profile
Elyas Syoufi
Ottawa, Canada

Turning legacy complexity into clean, maintainable systems.

3
Governed intake platforms
61
Audited classes
120 → 2
Reference tables consolidated

Selected Work

Six case studies, and the decisions that shaped them.

Open full portfolio
Governed Intake SystemsEnterprise · CRA

Three production platforms inside a federal agency for deciding what is allowed to proceed: ethics review, algorithmic impact assessment, and innovation-fund intake. Each publishes its criteria before submission and ends at a named human signature.

3 platformsFlowable · BPMN · CMMN · DMN
AI-Assisted DeliveryPractice

Deterministic workflow scripts that orchestrate subagents: fan-out for independent work, pipeline stages for dependent work, an adversarial verification pass, and a judge stage that reconciles them. Agents are scoped by tool allowlists and hooks.

OrchestrationScoped tooling
ECSTPEnterprise · CRA

Replaced a Microsoft Access database with a Spring Boot and Angular platform for coordinating IT procurement between CRA and Shared Services Canada. Reference vocabularies are database rows, not enums, so the business changes its own terminology without a release.

84 entities21 event subtypes
MACEnterprise · CRA

Workflow platform on Flowable 6.6 running BPMN, CMMN and DMN engines in one Spring Boot deployment, with human task assignment bridged onto the agency's existing Kerberos identity.

BPMN · CMMN · DMN
SIRMM ModernizationEnterprise · CRA

Three generations of a federal security incident system, EJB/JSP to Spring Boot to Angular. Collapsed a 20-way JOINED hierarchy into shared-primary-key extension tables and ~120 near-identical options tables into two generic reference tables.

308 → 61 tables7 domain services
TheraSiteIndependent

Multi-tenant platform for Ontario psychotherapists under PHIPA. One database per tenant rather than a tenant_id column, because under that regime a cross-tenant query bug is a compliance violation rather than a bug. Messages are encrypted in the browser.

Per-tenant databasesBrowser-side decryption

Experience

Senior Software Engineer · Tech Lead · Canada Revenue Agency

Ottawa, Ontario

Re-architected a legacy Java/EJB monolith into a Spring Boot and Angular platform serving a federal agency, preserving domain fidelity across a 308-file entity model.
Escalation point for complex production defects: root-cause analysis from application logs and stack traces, then mentoring engineers through the diagnosis rather than taking the ticket over.
Designed the domain model for audit: Hibernate Envers revision history across 61 classes, with 31 explicit opt-outs covering derived links, file bytes, and denormalized keys.
Halved sprint cadence from four weeks to two, trading batch size for faster feedback and stakeholder visibility.
Designed enterprise auth for internal agency applications: Kerberos/SPNEGO SSO, AD fallback for identity attributes, CSRF protection, and database-sourced role and permission resolution.
Encoded team conventions in tooling: a pull request template with an explicit checklist, shared EditorConfig and Prettier rules, and a build that fails on violations.
More from the same role
Chose composition over inheritance where the query pattern demanded it, replacing a 20-way JPA JOINED hierarchy with shared-primary-key @MapsId extension tables so each subtype joins only its own extension, and collapsing ~120 near-identical options tables into two generic reference tables served by a single service.
Resolved a circular dependency in PostgreSQL that had defeated previous teams by reshaping the data model from tree to graph.
On a shared Angular and Spring Boot codebase with a dozen developers, introduced a shared component library as a time-saver rather than a mandate; adoption spread on its own because the components were faster to use.
Presented a catalogue of inherited technical debt to the steering committee with concrete numbers, framed around risk and delivery rather than blame, including funded work that had to be discarded.
Quality enforced in the pipeline: SonarQube analysis with a gate the build fails on, plus lint and format rules applied on every merge.
Outside the agency, built CI/CD pipelines with Gitea Actions and containerized delivery on self-hosted infrastructure, the same two-stage build-and-deploy pattern used on the agency's Jenkins pipelines.
On my own product work, built a multi-tenant SaaS on Cloudflare Workers, Hono, and D1 (chosen for zero cold starts and edge deployment, with the vendor lock-in accepted explicitly), using one database per tenant rather than row-level tenancy for hard PHIPA tenant isolation.

Strengths

Legacy system modernization without losing domain fidelity
Java and Spring architecture for long-lived enterprise software
Workflow-heavy systems, state models, and integration boundaries
Auditable systems: revision history designed into the domain model, with explicit opt-outs where audit adds noise rather than value
Self-hosted infrastructure, CI/CD, and practical platform ownership
Explicit boundaries for AI-assisted work, and the categories where the decision stays human

Let's build something together

I'm looking for engineering roles building and maintaining services in domains where the work has to answer for itself: workflow and integration platforms, governed AI, and regulated environments.