About us
Concrete Transition Capital (CTC) finances the decarbonization of cement and concrete. Cement alone is ~7–8% of global CO₂, and most of the fix is already known, it just needs to be financed and scaled.
The Concrete Terminal is one of our core strategies to scale up low carbon concrete. It is a data platform and AI assistant that maps the concrete supply chain: cement plants, ready-mix plants, EPDs, prices, permits, SCM availability and policy. Engineers, contractors, producers and owners use it to find lower carbon concrete they can actually buy, at a price that works.
The role
You will own Concrete Terminal in production. That means it stays up, it stays secure, its database stays healthy, and the numbers it shows are true.
You will also build. Our product team ships with Claude Code every day, and a lot of code lands fast. You are the engineer who keeps that speed safe: you review what the agents write, set the guardrails they work inside, and build the hard parts yourself.
The Concrete Terminal sits on ~430 million rows and ~240 GB of Postgres. If a plant is in the wrong state, an EPD is linked to the wrong operator, or a price is a template pretending to be an observation, a customer will make a worse decision. You are the person who catches that.
What you will own
Keeping it running
- Own production and staging on Google Cloud Run: deploys, rollbacks, uptime probes, alerts and on-call.
- Make deploys boring. Find the slow step, the hung migration, the job that silently stopped running.
- Run the scheduled jobs and scrapers that feed the platform, and know when one has gone quiet.
Security
- Own auth, secrets, and access control across the Terminal and its MCP server.
- Finish tenant isolation. Row-level security is built for Terminal sessions and projects; you will turn it on safely.
- Keep dependencies patched and the attack surface small. Review agent-written code with security in mind.
The database
- Own a 500+ table Postgres 17 database on Neon, with dev, staging and prod branches.
- Write and review migrations (Atlas, hand-authored SQL, expand then contract). Nothing touches prod without a PR.
- Tune the heavy queries: partitioned permit tables, spatial search, materialized views, indexes built concurrently.
- Shrink the schema. We have tables nobody reads; you will prove which ones and retire them.
Data quality
- Treat every number on screen as a claim that needs a source. No fabricated or templated data shown as live.
- Build entity resolution for plants and companies: duplicates, operator splits, bad geocodes, plants pinned in the wrong country.
- Run ingestion from public sources (EPA, EC3, building permits, trade data, satellite) and grade what comes in.
- Own the checks that catch drift before a customer does.
Building with the product team
- Work daily with product on new features, using Claude Code and similar agents as your main tools.
- Write the rules, tests and CI gates that let agents ship fast without breaking prod.
- Turn a product idea into a schema, an API and a working screen.
The system you will run
A TypeScript monorepo on Node 20, deployed to Google Cloud Run, backed by Neon Postgres. Row counts are approximate, from our August 2026 production inventory.
| Layer | What we use |
|---|---|
| Frontend | React, Vite, Tailwind, MapLibre and deck.gl for maps |
| Backend | Express, an MCP server with ~75 Terminal tools, Claude as the assistant |
| Database | Postgres 17 on Neon, Drizzle ORM, Atlas migrations (~410 so far), row-level security |
| Infra | Cloud Run, GCP load balancers, Cloud Scheduler, GitHub Actions |
| Guardrails | ~65 automated checks in CI: schema drift, import boundaries, timestamps, no synthetic data |
What you bring
- 5+ years building and running production software. You have been paged, found the cause, and fixed it so it does not happen again.
- Real experience with semi-large datasets. Tens of millions of rows, hundreds of GB. You have partitioned a table, read an EXPLAIN ANALYZE, and backfilled data without taking the site down.
- Deep Postgres. Schema design, migrations, indexing, query tuning, locks, and the difference between a row estimate and a COUNT(*).
- Data quality instincts. You deduplicate, reconcile and trace a number back to its source before you trust it. You say "we don't know" instead of filling a gap.
- Security as a habit. Auth, secrets, least privilege, row-level security, dependency hygiene.
- TypeScript and Node on the backend, and enough React to ship a screen.
- Cloud operations. GCP or AWS, containers, CI/CD, logging and alerts.
- You already build with AI coding agents. Claude Code, Cursor or similar. You know where they are great, where they cut corners, and how to set them up to succeed.
- You care about decarbonization. You want your work to cut real tons of CO₂, and you are curious about how a heavy industry actually works.
Nice to have
- Neon, Drizzle or Atlas specifically.
- PostGIS and spatial data: geocoding, radius search, maps.
- Entity resolution or record linkage at scale.
- Scraping and ingesting messy public data (government permits, EPA filings, PDFs).
- MCP servers, LLM tool use, or evaluating AI output for accuracy.
- Python for data work.
- Construction, materials, LCA or EPDs. We will teach you the concrete part, but a head start helps.
- Early-stage startup experience, where you were the only person who knew how something worked.
Why this job
The climate impact is direct.
Concrete is the most used material on earth after water. Lower carbon mixes exist today, but buyers cannot see who sells them, where, or at what price. The Terminal fixes that, and better data means more tons avoided.
You will own something real.
You will be the person who knows how the platform works end to end, with the authority to change it.
You will work at the edge of AI-assisted engineering.
We ship most of our code with Claude Code. You will help define how a small team builds a serious product that way, safely.
The data problems are hard and interesting.
Matching 28K plants to the companies that run them. Telling a measured number from a modeled one. Sizing concrete demand from 23 million permits. None of it has a textbook answer.
Your first 90 days
Days 1–30
Learn it and own deploys.
Ship to prod yourself. Map every scheduled job and data feed, and which ones are failing.
Days 31–60
Make it safe.
Close the top security and reliability gaps you found. Take over migration review and the prod database.
Days 61–90
Make it true.
Pick the dataset customers lean on most, measure its quality, and fix it. Ship one feature with the product team end to end.
Apply
Email your resume or LinkedIn profile to info@concretetransition.com. The subject line is filled in for you.