Available for hire

Hey, I'm Isaac Martinez.

I take features all the way, from the problem to production.

Full-Stack Software Engineer at SERHANT · 5+ years

I work end to end on S.MPLE, SERHANT's AI platform for real estate agents: mobile apps, the agent PWA, the advisor dashboard and the core API. I care about the integration, the production run, and the developer experience of the team that maintains it.

app.module.ts
// Building something amazing...
const developer = "Isaac Martinez";
const status = "Available for hire";
main* · TypeScript UTF-8

Stack I work in

Frontend & mobile
  • TypeScript
  • React
  • React Native (Expo)
  • Next.js
  • SvelteKit
  • Vue
  • Tailwind
Backend & data
  • Node.js
  • Hono
  • Express
  • NestJS
  • PostgreSQL
  • Supabase
  • MongoDB
AI & platform
  • Inngest
  • Mastra
  • Python
  • AWS Lambda
  • Vercel
  • Docker
  • PostHog

Selected work

What I've built at SERHANT

Four problems from production, each told as the problem, the decision I made, and what happened.

SERHANT · S.MPLE

Canva Connect integration, owned end to end

Problem
AI-generated social posts depended on a previous design provider that had to be replaced without breaking the experience for agents.
Decision
I built the Canva Connect integration from OAuth through the Autofill API: a payload assembled from agent and MLS listing data, submit and poll, export, and write-back. I then refactored it into a reusable shared Canva driver, later reused for listing flyers and show sheets with PDF export and generated headlines and descriptions.
Outcome
Hardening started from root causes: OAuth tokens were collapsing across clients, so I scoped them per client and serialized token refresh across API instances to remove a race. Routing by template capability, recording which renderer ran, and deduplicating retried runs made the pipeline predictable.
  • OAuth
  • Canva Connect
  • Node.js
  • Hono
  • PostgreSQL
SERHANT · S.MPLE

A safe production backfill

Problem
Task titles in production had been mislabeled, and the first dry run proposed thousands of renames, far more than the underlying bugs could have caused.
Decision
I added invariants (a rename may change the type noun, never the address) and scoped the set to what the bugs could actually reach, cutting it by roughly 4x. Dry run became the default, so nothing writes without --apply, backed by a 5-row canary, a date floor and a verified rollback; a full pass went from about 30 minutes to about 7.5.
Outcome
The production run scanned tens of thousands of rows and updated a few thousand, with zero failures. When review showed one of my claims was wrong, I corrected it publicly; I treat that as part of the job, not a flaw in it.
  • PostgreSQL
  • TypeScript
  • Data migration
  • Production safety
SERHANT · S.MPLE

Automatic delivery of AI-generated content

Problem
AI-generated content had to reach agents reliably, and runs that failed or finished without delivering could not be allowed to fail silently.
Decision
I built fast-path routing and automatic delivery, retries for transient failures, and a hand-off to a human advisor on hard failures, plus a retry endpoint with one-click retry in the advisor dashboard.
Outcome
Satisfaction (CSAT) capture closes the loop with agents, and a reconciliation sweep every 30 minutes catches runs that finished without delivering. The sweep shipped in dry-run mode first, so its behavior was observable before it could act.
  • Inngest
  • Mastra
  • Next.js
  • Node.js
SERHANT · S.MPLE

Developer experience as a product

Problem
Setting up the project locally meant many manual steps, and CI type-checking was failing with out-of-memory errors.
Decision
I shipped a one-command local bootstrap with a doctor check, explanations of where each environment variable comes from, secret-manager overrides and automatic installs, as about a dozen small PRs with the full test suite green at every step. I also moved CI type-checking to TypeScript 7.
Outcome
Local setup went from a checklist to a single command, and the out-of-memory type-check failures in CI were resolved.
  • Developer experience
  • CI
  • TypeScript
  • Tooling

Trajectory

How I got here

Each step added a layer of ownership: from shipping for clients, to tooling and leading a team, to taking features end to end as part of a product team.

  1. 2020 – 2021 Freelance

    Learning to ship for real clients

    Landing pages and small applications, working directly with clients to turn requirements into delivered software.

  2. 2022 – 2024 Minnek Digital Studio

    Tooling, scale and a first team

    E-commerce with 20k+ products and thousands of automated events a day. Built Cominnek, then grew from Full Stack Engineer to Team Lead of three.

  3. 2024 – 2025 VPM Solutions

    Real-estate systems

    Improved candidate search ranking, built reports and dashboards for owners, and admin tools for Admin, Support and Marketing.

  4. 2025 – 2026 WGSN

    AI and data-driven systems

    Maintained and optimized a predictive model producing forecasts from business reports, and built an AWS Lambda service with WebSocket streaming for real-time chatbot responses.

  5. 2026 – Present SERHANT

    Taking features end to end

    End to end on S.MPLE, an AI platform for real estate agents: iOS and Android (Expo), the agent PWA, the advisor dashboard and the core API.

How I think

Principles I work by

Short versions of the opinions that shape my code, my reviews and my production changes.

Building on my own

ZitDevs and side projects

ZitDevs is my studio. ZitStack is its shared platform (identity, payments and billing as a modular monolith), with products built on top: Kreds, a leaderboard and internal economy for engineering teams built on GitHub activity, and Fiestik, event ticketing, QR entry and venue operations for the Dominican Republic (pre-launch).

View all projects

ZitStack

Private · in progress

The shared platform behind ZitDevs, my studio: identity, payments, billing and invoicing as a modular monolith.

Let's talk about your team

Looking for an engineer who cares about clean architecture, honest tests and safe releases? Let's talk, or grab my resume.