Software Architect
About the job
OEC Analytics is the analytics platform for OEC's product suite: a governed semantic layer over OEC's data, a query execution path that serves it, and an embeddable widget runtime that product teams render inside their own applications - multi-tenant, with governance in the core rather than bolted on per consumer. Its flagship surface is a conversational AI Analyst: users ask questions of their data in natural language and build dashboards by describing them. Product lines plug in through a declarative domain pack contract, not bespoke integrations.
The platform is early. Module boundaries, the pack model, and the AI Analyst's production build are being defined now, not maintained — on top of a formal decision record and machine-enforced architecture tests that already exist.
Key Responsibilities & Duties (essential to the job)
Owns the module boundary model — isolation, contracts-only dependencies, composition roots — as specs precise enough for agents to implement, and architecture tests that enforce them in CI.
Drives the ADR process, and audits for drift between documented decisions and real implementation, including agent-generated code.
Authors the playbooks coding agents work from, reviews their output against spec, and decides which changes — schema, cross-module contracts, security — need human sign-off.
Grows the shared platform library (eventing, mediation, auditing, observability), driven by real module needs rather than ported wholesale.
Defines how non-deterministic output is verified — an eval harness in CI that gates prompt and model changes.
Defines and governs the domain pack extensibility model, including the semantic definitions the AI Analyst reasons over.
Gatekeeps new module and pack proposals, assessing integration cost, reuse, and capability-inventory fit before implementation begins
Scouts and justifies new technologies and methodologies, including AI and agentic tooling, for adoption at OEC.
Escalation point for cross-team design issues; mentors engineers on platform conventions and on writing agent-ready specs.
Experience, Skills and Key Competencies
Required
7+ years building software, including hands-on architecture of modular or service-oriented backends where you introduced and enforced the boundaries — not just designed them.
Strong .NET/C#, ASP.NET Core, and EF Core, with comfort enforcing dependency-direction rules across a multi-project solution.
Written ADRs or an equivalent lightweight decision process, clear enough for engineers and agents to act on without shared tacit context. Excellent written communication is core to this role.
Partnering with tech leadership and product management on roadmap alignment.
Plugin or pack-style contract design, eventing patterns (outbox/inbox), REST API design, AWS (Bedrock a plus).
Preferred
Directed AI coding agents (Claude Code) on real production codebases — multi-file, multi-step implementation work, not chat-based suggestions.
Architected LLM-backed product features: structured tool calling, keeping the model outside the trust boundary, and measuring non-deterministic output rather than hand-reviewing it.
Verification that scales without a human in the loop: architecture tests and linters for what you can assert, eval harnesses for what you can only measure.
Security architecture for systems that execute model-proposed actions — sandboxed execution, allowlist validation of generated queries, pre-query tenant credential scoping.
Polyglot comfort: the AI Analyst is a Python service alongside the .NET backend.
Analytics/BI platforms, semantic modeling (dbt/MetricFlow-style), and TypeScript micro-frontends (currently single-spa) — useful, and we will support ramp-up here.
Must also be able to demonstrate the following skills and abilities
Holds a line on architectural boundaries under delivery pressure, while staying pragmatic about incremental adoption.
Proves architectural patterns out — with specs, tests, and agents — before mandating them.
Collaborates well across platform engineering and the downstream product teams integrating with Analytics.
Judges trade-offs between delivery speed and long-term coherence, including how much autonomy to grant an agent and how accurate a model-generated answer must be before a customer sees it.