AI Platform Development - Full Stack
Budget / SalaryHourly project
TypeFreelance project
LocationRemote
Posted1 hour ago
Full-Stack Engineer (TypeScript) — AI Sales Training Platform
Type: Contract 20-30 hrs/wk
Location: Remote, with at least 9am–1pm US Central overlap
You'd work with: me, the founder. I'm technical, so you won't be translating.
What the product is
A sales training web app for retail sales reps. Reps roleplay customer conversations with an AI customer, get scored, work through training modules, and practice product knowledge drills. Managers get a dashboard for their store. It runs in the browser and as an Android app on shared in-store tablets. It's live with beta users across several stores, which means the work you do gets used the same week you ship it.
What you'd own
You'd be the engineer on this product. I set direction, write the specs, and review. You build it, ship it, and help keep it healthy.
New features for new clients. Every client gets its own content and its own vertical (golf, furniture, and fitness equipment so far), and sometimes features of their own. Most of it is full-stack: a Postgres migration, some API routes, React screens, prompt changes, tests.
Bug fixes from real feedback. Reports come in through an in-app form and through me. You triage, write a failing test, fix it, ship it.
Production support. Reading Railway logs, Sentry, and PostHog to work out why something broke. Everything goes to staging first, then a promotion PR to production.
Data work. Schema changes are expand-only and backwards compatible. 49 migrations so far, and you'll write plenty more.
The occasional call with a store manager who's stuck, and turning that into a fix or a help doc. It's a nice way to see who you're building for.
Stack
You'll touch all of this. You don't need prior experience with every piece. What matters is that you can open unfamiliar code and get somewhere with it in days.
Language: TypeScript, strict mode, ~143k lines across backend and frontend
Backend: Node + Express, modular route files, typed store interfaces
Frontend: React 19 + Vite. No router library, no component library, no Tailwind. Plain CSS with design tokens, so there's less to learn than usual.
Database: Postgres on Railway, plus pgvector for retrieval. SQLite locally. Raw SQL through pg, no ORM.
AI: Anthropic SDK (Claude), OpenAI SDK, prompts kept in Nunjucks templates, Promptfoo for prompt evals including red-team suites
Voice: Cartesia for speech-to-text and text-to-speech, plus a small Python service for speech emotion analysis
Mobile: Capacitor 8 wrapping the same web app for Android
Infra: Railway and GitHub Actions (11 workflows: unit, integration, Playwright E2E, hosted smoke tests, CodeQL, APK builds)
Testing: node:test for backend, Vitest for frontend, Playwright for E2E. 250+ test files, so you'll usually know quickly when something's wrong.
How we work
I've put real effort into the development environment, and using it well is a genuine part of the job.
You get Claude Code and Codex, both provisioned and paid for. Agents also run inside CI.
Work is spec-driven. A feature starts as a written spec, then a plan, then a task list, then code. There are 28 specs in the repo you can read to see how it goes.
Two-agent review: one agent writes, another reviews, and findings get addressed before anything merges. A handoff tool tracks who owns what, so nobody steps on anybody.
There are project-specific skills for security review, migration safety, deployment debugging, and feedback triage. You'll use them, and I'd love it if you added more.
The tooling does a lot of the typing. What I need from you is judgment: review what the agent writes the way you'd review a junior engineer's pull request, because that's roughly what it is. People who'd rather hand-write everything tend to be frustrated here. People who merge whatever came out green tend not to last. The job sits in between, and it's a good place to be.
What we're looking for
If you're close on most of this, please apply anyway. I'd rather read your application than have you screen yourself out.
4+ years building and shipping full-stack web apps
Solid TypeScript. You know what strictNullChecks costs you and why it's worth paying.
Real SQL. You can write a migration and work out why a query is slow without guessing.
React. Hooks, state, and a sense for why a component re-rendered.
You've shipped something that calls an LLM API in production, so tokens, cost, latency, streaming, and malformed JSON responses aren't new to you.
You use an agentic coding tool daily (Claude Code, Codex, Cursor, Copilot Agent, Aider). Tell me which one and what you've built with it.
You can debug from logs. Given a 500 and a log stream, you find the cause.
Written English clear enough for a good PR description and a good bug report.
Spoken English comfortable enough to get on a call with a non-technical retail manager in the US and actually help them. This is the one I can't be flexible on.
Bonus points for any of: multi-tenant SaaS and row-level tenant scoping; real-time browser audio (getUserMedia, WebSockets, mic permissions, Chrome vs Safari); Capacitor or React Native; Railway, Render, or Fly; enough Python to keep a small FastAPI service running; Playwright.
What you get
Real ownership. You'd be the engineer on a live product, not a ticket in a queue.
Direct access to the person making the decisions. No product committee, almost no meetings.
A paid seat on the best AI coding tools, in a codebase built around them. If you want to get very good at agentic development, this is a good place to do it.
Long-term work. I'm hiring someone to grow with the product, not to finish a project and leave.
A few things to be upfront about
It's an existing codebase, not a blank page. You're joining a working system with real users and established patterns. I'll ask you to work inside them first and propose changes once you know why they're there.
It's a small team. Right now it's me. That means a lot of autonomy and no one else to hand a hard problem to.
Production is real. Things occasionally break in front of live users, and we fix them that day. Not every day looks like that, but some do.
Type: Contract 20-30 hrs/wk
Location: Remote, with at least 9am–1pm US Central overlap
You'd work with: me, the founder. I'm technical, so you won't be translating.
What the product is
A sales training web app for retail sales reps. Reps roleplay customer conversations with an AI customer, get scored, work through training modules, and practice product knowledge drills. Managers get a dashboard for their store. It runs in the browser and as an Android app on shared in-store tablets. It's live with beta users across several stores, which means the work you do gets used the same week you ship it.
What you'd own
You'd be the engineer on this product. I set direction, write the specs, and review. You build it, ship it, and help keep it healthy.
New features for new clients. Every client gets its own content and its own vertical (golf, furniture, and fitness equipment so far), and sometimes features of their own. Most of it is full-stack: a Postgres migration, some API routes, React screens, prompt changes, tests.
Bug fixes from real feedback. Reports come in through an in-app form and through me. You triage, write a failing test, fix it, ship it.
Production support. Reading Railway logs, Sentry, and PostHog to work out why something broke. Everything goes to staging first, then a promotion PR to production.
Data work. Schema changes are expand-only and backwards compatible. 49 migrations so far, and you'll write plenty more.
The occasional call with a store manager who's stuck, and turning that into a fix or a help doc. It's a nice way to see who you're building for.
Stack
You'll touch all of this. You don't need prior experience with every piece. What matters is that you can open unfamiliar code and get somewhere with it in days.
Language: TypeScript, strict mode, ~143k lines across backend and frontend
Backend: Node + Express, modular route files, typed store interfaces
Frontend: React 19 + Vite. No router library, no component library, no Tailwind. Plain CSS with design tokens, so there's less to learn than usual.
Database: Postgres on Railway, plus pgvector for retrieval. SQLite locally. Raw SQL through pg, no ORM.
AI: Anthropic SDK (Claude), OpenAI SDK, prompts kept in Nunjucks templates, Promptfoo for prompt evals including red-team suites
Voice: Cartesia for speech-to-text and text-to-speech, plus a small Python service for speech emotion analysis
Mobile: Capacitor 8 wrapping the same web app for Android
Infra: Railway and GitHub Actions (11 workflows: unit, integration, Playwright E2E, hosted smoke tests, CodeQL, APK builds)
Testing: node:test for backend, Vitest for frontend, Playwright for E2E. 250+ test files, so you'll usually know quickly when something's wrong.
How we work
I've put real effort into the development environment, and using it well is a genuine part of the job.
You get Claude Code and Codex, both provisioned and paid for. Agents also run inside CI.
Work is spec-driven. A feature starts as a written spec, then a plan, then a task list, then code. There are 28 specs in the repo you can read to see how it goes.
Two-agent review: one agent writes, another reviews, and findings get addressed before anything merges. A handoff tool tracks who owns what, so nobody steps on anybody.
There are project-specific skills for security review, migration safety, deployment debugging, and feedback triage. You'll use them, and I'd love it if you added more.
The tooling does a lot of the typing. What I need from you is judgment: review what the agent writes the way you'd review a junior engineer's pull request, because that's roughly what it is. People who'd rather hand-write everything tend to be frustrated here. People who merge whatever came out green tend not to last. The job sits in between, and it's a good place to be.
What we're looking for
If you're close on most of this, please apply anyway. I'd rather read your application than have you screen yourself out.
4+ years building and shipping full-stack web apps
Solid TypeScript. You know what strictNullChecks costs you and why it's worth paying.
Real SQL. You can write a migration and work out why a query is slow without guessing.
React. Hooks, state, and a sense for why a component re-rendered.
You've shipped something that calls an LLM API in production, so tokens, cost, latency, streaming, and malformed JSON responses aren't new to you.
You use an agentic coding tool daily (Claude Code, Codex, Cursor, Copilot Agent, Aider). Tell me which one and what you've built with it.
You can debug from logs. Given a 500 and a log stream, you find the cause.
Written English clear enough for a good PR description and a good bug report.
Spoken English comfortable enough to get on a call with a non-technical retail manager in the US and actually help them. This is the one I can't be flexible on.
Bonus points for any of: multi-tenant SaaS and row-level tenant scoping; real-time browser audio (getUserMedia, WebSockets, mic permissions, Chrome vs Safari); Capacitor or React Native; Railway, Render, or Fly; enough Python to keep a small FastAPI service running; Playwright.
What you get
Real ownership. You'd be the engineer on a live product, not a ticket in a queue.
Direct access to the person making the decisions. No product committee, almost no meetings.
A paid seat on the best AI coding tools, in a codebase built around them. If you want to get very good at agentic development, this is a good place to do it.
Long-term work. I'm hiring someone to grow with the product, not to finish a project and leave.
A few things to be upfront about
It's an existing codebase, not a blank page. You're joining a working system with real users and established patterns. I'll ask you to work inside them first and propose changes once you know why they're there.
It's a small team. Right now it's me. That means a lot of autonomy and no one else to hand a hard problem to.
Production is real. Things occasionally break in front of live users, and we fix them that day. Not every day looks like that, but some do.
Apply on Freelancer →
Project sourced from Freelancer.com. Applications happen directly on the original platform — we never collect your data.