Moksh Keloo

Full Stack Developer / AI Agent Engineer

Jacksonville, FL

Full stack engineer who builds AI into client products and stays with them through production. Shipped an LLM agent that keeps 8,500 product labels and safety sheets current at 85% precision, and vision-model check-ins inside a patient engagement app. Works directly with the customer, from requirements through post-launch tuning.

US work authorized · open to remote (US) or relocation

Experience

Full Stack Developer · Integrated Webworks

Sep 2024 – Present

Agency — ran client engagements end to end across ~50 codebases.

LabelSDSlabel and SDS managementlabelsds.com
  • Replaced an estimated $4,000/month of manual review with $100/month of infrastructure. The platform guarantees customers that every product label and safety data sheet stays current. Built the LLM agent that keeps that promise across 8,500 products, at 85% precision and 350 products/day.
  • Integrated against the customer's legacy inventory database through an API layer, pulling product data into a separate local store where agent results are written and reviewed. The legacy system of record stays untouched until output clears the review queue, and promotion into the main system was scoped as the next phase.
  • Tuned the agent against real customer data to reach that precision, then built the review queue their compliance staff now works daily. The agent proposes, a person approves, and rejections feed the next iteration.
  • Designed two-tier retrieval, running self-hosted SearXNG and Playwright first and escalating to Serper.dev only when needed. GPT-4o-mini ranks candidates, MD5 diffing discards unchanged files, and a daily rate budget caps cost.
  • Ran the engagement end to end. Scoped it with the client, wrote the requirements, priced four rounds of scope change, and delivered the rollout.
MedSparkpatient engagement and medication adherencemedspark.app
  • Built the client's platform end to end, a Symfony 7 and API Platform backend behind an Expo React Native app, from requirements through release. The client had no engineering team, so I owned the schema, the API, the mobile client, and the release process.
  • Shipped GPT-4.1 vision to validate photo check-ins. The prompt asks one narrow question, whether any pills are visible, and ignores count, shape, and colour, because a narrow question is one the model answers reliably. It runs at temperature 0, since this is a check rather than a generation.
  • A manual path is a normal route, not an error state. The model will be wrong sometimes and a patient should never be stuck, so the check-in completes either way. The system confirms that a pill is visible and never claims a dose was taken.
  • Used gpt-image-1 to generate the reward artwork a streak unlocks, so the incentive layer needs no illustrator in the loop.
  • Shipped 13 locales, Symfony Messenger and Scheduler jobs, transactional email through Resend, and Expo push notifications. My first React Native app, learned while building the most design-heavy product I have taken on.
RenewCentralmulti-state insurance licensinginsurance.renewcentral.com
  • Built the platform from the ground up on Symfony 8, PHP 8.4, and API Platform 4, with a Vite and TypeScript frontend. Insurance agents carry licenses in many states at once, each with its own renewal date and paperwork, and the product tracks all of it in one place.
  • Built license tracking across all US states, renewal deadline reminders, document storage, and carrier submission, so an agent finds out about a lapsing license before the carrier does.
  • Added Stripe subscription billing with signature-verified webhooks, plus JWT authentication across the API.
  • Set up the GitHub Actions pipeline covering staging and production deploys, tagged releases, and pull request checks.

Freelance Full Stack Developer · DateWithNovels

2022 – 2026

Direct client — built and ran the store and its admin application.

  • The shop sells blind date with a book boxes. Every book is wrapped in kraft paper with a wax seal, so the cover stays a surprise, and customers pick by genre and mood instead of by title. That one idea shaped the whole storefront, because the usual bookstore pattern of cover, title, and blurb would give the surprise away.
  • Built the storefront around browsing by feel rather than by catalog. Romance, fantasy, mystery, thriller, and horror, sold as several box editions plus individual items, from $14.99 to $49.99, with the extras that come in each box shown without revealing what is inside.
  • Built a separate admin application the client runs the business from. Orders, inventory, and stock, product and content editing, and role-scoped access, all against the same database as the shop.
  • Handled checkout, payment, order confirmation email, and the image pipeline, so the client never has to touch anything technical to run a sale or add a product.
  • Worked with the client directly for the whole engagement, gathering requirements, setting the roadmap, shipping releases, and handling production support once orders were flowing.
  • Next.js 16, React 19, Drizzle on PostgreSQL, Stripe Checkout and webhooks, Resend, Cloudinary.

Projects

PunchStationfacial-recognition time clock
  • In production at a gas station, used daily by non-technical staff. A shared tablet at the counter replaces a paper sheet, and the people using it did not ask for new software, so the interface had to survive a shift change without anyone reading a manual.
  • No photographs are ever stored. The browser computes the face embedding locally and only the descriptor leaves the device, encrypted with AES-256-GCM. A database leak is not a biometric leak, which is the whole reason the design works this way.
  • Every punch clears three gates before it counts: a CIDR IP allowlist read live from the database, so the owner can fix a changed IP without a redeploy, a paired-device token that ties the punch to one registered tablet, and a single-use nonce that stops a captured request being replayed. Punch routes are rate limited on top of that.
  • Tablets pair through a short-lived, single-use code that is exchanged for a hashed device token, and any device can be revoked from the admin app. A PIN path covers anyone the matcher will not recognise.
  • Deployed on site and trained the operators, then fixed what the first week surfaced. Adoption turned out to be a training problem rather than an engineering one.
MarketMinermulti-stage agent pipeline
  • Reddit is full of people describing problems they would pay to have solved. The pipeline ingests those discussions, then turns them into a market report through two stages with very different cost profiles.
  • Model choice is a cost decision per stage. Claude Haiku 4.5 classifies pain points, because classification is cheap and high volume. Sonnet 4.6 clusters and synthesises the report, because that happens once and actually needs judgment.
  • A human approves each stage before the next one runs, so a bad classification pass cannot quietly become a confident, wrong report. Stages are checkpointed, so approving the second does not re-run the first.
  • Ships its own MCP server, so Claude Code drives the whole pipeline as a tool instead of through a UI I would otherwise have to build and maintain.
  • Built on Fastify, BullMQ, and Drizzle over PostgreSQL, with schema-validated output at every model boundary.

Skills

AI systems
Anthropic Claude API, OpenAI API (GPT-4o, GPT-4.1 vision, gpt-image-1), MCP servers, prompt engineering, retrieval pipelines, schema-validated output, human-in-the-loop review, agent evaluation, cost budgeting
Integrations
REST integration and debugging, Stripe webhooks with signature verification, SAML 2.0 SSO, JWT, OAuth, third-party API onboarding
Backend
TypeScript, Node.js, Fastify, Python, FastAPI, PHP, Symfony 6–8, API Platform, BullMQ, Redis
Frontend
React 19, Next.js 16, TanStack Query, Tailwind CSS, React Native, Expo
Infra
PostgreSQL, Drizzle ORM, Doctrine, Docker, GitHub Actions, DigitalOcean, Vitest

Education

University of Florida B.S. Computer Science

2024

Happy to walk through any of these in detail.

Send a note and it reaches me directly. The code is on GitHub.

Moksh Keloo — Jacksonville, FL — US work authorized