All projects
Full-Stack · Deployed · 2026

AI-Native Team Diagnostic

A deployed, full-stack self-assessment that helps teams gauge their AI-native maturity, with shared persistence and a team view, shipped end-to-end across three released versions.

3
released versions, iterated in the open
Full
stack, deployed end-to-end
Shared
persistence with a team view
Live
on public infrastructure
AI-Native Team Diagnostic — a self-scoring AI-maturity assessment with a shared team results view.
Self-scoring AI-maturity assessment with a shared team view.

The business problem

"Are we AI-native?" is a question every team is asking and few can answer honestly. Without a shared frame, the conversation stays anecdotal: one person's optimism against another's skepticism. Teams need a quick, structured way to locate themselves on a maturity curve and agree on where to focus.

This tool gives them that: a self-scoring assessment with a shared team view, so the result is a conversation-starter, not just an individual score.

The key decision

Shared team state usually implies a full backend. I split a static front-end from a small managed API instead (near-zero cost, still supporting shared persistence), and iterated in the open across three releases rather than polishing v1 in private. Ship, measure, improve beat scope-and-perfect.

Architecture

  • Static front end on GitHub Pages: fast, cache-friendly, and free to serve.
  • Node.js / Express API hosted on Render for scoring and persistence.
  • Postgres (Neon) for shared, durable team results.
  • CORS-secured boundary between the static origin and the API.

Product lifecycle ownership

This build is the clearest demonstration of end-to-end ownership in the portfolio: from concept, through a real deployment on public infrastructure, to three iterated releases responding to how the tool actually got used. It's product management practiced, not just described: scoping, shipping, measuring, and improving.

Lessons learned

Splitting a static front end from a small managed API kept the cost near zero while still supporting shared state, a pattern that scales down gracefully. And iterating in the open across three versions beat trying to perfect v1: real usage surfaced the changes that mattered.