Careers

Senior Backend Engineer, Data Platform

Location: Remote (US) · Type: Full-time · Reports to: Head of Engineering · Comp: $150k-165k

About Harness

Harness Giving (goharness.com) is a fundraising platform for nonprofits. Thousands of organizations have used us as a donor CRM and to take donations, sell event tickets, manage donors and run email and SMS campaigns. Hundreds of millions of dollars have flowed through the Harness platform.

We're continuing to build out our CRM, but also building out Harness Intelligence. It's a set of AI agents and deterministic rules that analyze a nonprofit's fundraising data, identify opportunities to raise more money, recommend actions, and then execute those actions with the fundraising team's approval.

What you'll do

  • Build and run NestJS services and APIs: the CRM, communications and the endpoints the product and agents call. PostgreSQL schemas, gRPC contracts, SQS/SNS messaging.
  • Build on the Snowflake data layer with our data engineer: Airbyte ingestion from Postgres, MySQL and Stripe, curated views, data quality, freshness and cost.
  • Build a normalization layer that ingests data from third-party systems through their APIs and custom-built connectors, runs the ETL, and maps different source schemas into one clean data layer.
  • Shape where the data platform goes next. We run Snowflake today and may move toward a data lake or lakehouse. You'll help make that call and lead the work if we do.
  • Make production boring. Remove single points of failure. Add monitoring and alerting on services, syncs and data freshness. Share on-call.
  • Own multi-tenant data security: per-organization isolation, least-privilege service roles, secrets management and PII handling.
  • Build and harden the APIs and data our AI agents depend on, including the gateway that handles auth, tenant scoping, permissions, approvals and audit.
  • Build the tools agents call: reliable queries over structured data, structured outputs, and evals that check answers against real numbers. Work across model providers (Anthropic, OpenAI, Gemini).

What we're looking for

  • You drive a collaborative culture. You pair with teammates, review generously, document what you build and share ownership instead of holding it close. You make the people around you better.
  • 8+ years in backend engineering, including real time running data systems in production.
  • Strong TypeScript / Node.js. NestJS preferred. Python for data work.
  • PostgreSQL and MySQL in depth: schema design, query tuning, replication and change data capture.
  • Expert SQL. You can tell when a query is right by checking it, not by trusting it.
  • Production experience with a cloud data warehouse, including access controls, query performance, data modeling and cost management.
  • Data lakes and lakehouses: object storage (S3), Parquet, Apache Iceberg or Delta Lake, catalogs and query engines. You know the trade-offs against a managed warehouse. Hands-on BigQuery or Databricks is a plus.
  • ELT tooling (Airbyte, Fivetran, dbt or similar). You've debugged a broken sync under pressure.
  • AWS (ECS, RDS, SQS/SNS, Secrets Manager) and Terraform.
  • Multi-tenant SaaS: tenant isolation, PII and audit trails.
  • You've built and shipped AI systems in production: LLM features with tool calling, retrieval or text-to-SQL over structured data, structured outputs and evals. You don't need to be an AI specialist, but you know how these systems fail and how to test them.

How you'll use AI to build

We expect AI in your daily workflow. Not as a novelty. It's how the work gets done here.

  • You use agentic coding tools daily (Claude Code, Cursor, Copilot or similar) and can show us your setup.
  • You use AI to accelerate development, but you remain accountable for the architecture, implementation, quality and security of everything you ship.
  • You use AI to write and explain SQL, profile unfamiliar datasets, map external CRM fields onto our schema, generate test fixtures and draft evals.
  • You validate before you build. Every query, AI-written or not, gets run and checked against real numbers before it ships.
  • You know where these tools fail on data work: invented column names, wrong grain, silent double counting, joins that look right and aren't.

In the interview we'll hand you a real dataset and a question. You'll answer it with your own tools while we watch.

Nice to have

  • Nonprofit CRM data experience.
  • Snowflake experience: roles and grants, secure views, row access policies, warehouse sizing and cost, streams and tasks.
  • The Stripe data model: charges, payment intents, subscriptions, refunds, payouts.
  • Deeper AI work: agents with tool calling, evals, guardrails, MCP.
  • Semantic layers: Snowflake semantic views, dbt metrics or Cube.
  • Analyst tooling: Metabase, Jupyter.

What success looks like

  • 30 days: You know the services and the warehouse cold: every source, every view, every role and grant. You've shipped a fix to production.
  • 60 days: You own pipeline monitoring and alerting. The first external CRM import is running in production.
  • 90 days: You carry a full share of backend and data ownership, on-call included. You've hardened at least one service or pipeline the product depends on. An eval suite on agent answers runs on every change.

Engineering

Remote (United States)

Compartilhar no: