Full Stack Software Engineer — AI & Automation
Utility Profit
Get hot jobs first on Telegram
New positions appear faster in our channel
- Location
- United States, Mexico
- Job Type
- contract
- Work Format
- 🌍 Remote Worldwide
- Salary
- Not specified
- Posted
- November 13, 2026
Job Description
About Utility Profit
Utility Profit is transforming utility setup for property managers and tenants. Our utility and telecom services platform simplifies move-ins, helps residents get connected, and creates additional revenue for property managers. We are already trusted by tens of thousands of homes and backed by top-tier investors.
We are building toward a world where setting up utilities takes far less effort—from finding the right provider to completing the setup. That means combining useful software, reliable integrations, and AI-powered automation to solve real operational problems.
Role Overview
We’re looking for a mid-to-senior Full Stack Software Engineer who can take a customer or operational problem from an early idea to a reliable production feature. You’ll work across React interfaces, TypeScript and Node.js services, databases, and the automation that connects our platform to utility providers.
AI is central to both how we build and what we build. Our team uses coding agents and frontier models from OpenAI, Anthropic, and other providers for research, implementation, debugging, and review. We experiment with new models and tools, compare their results, and keep what improves real outcomes. You’ll be expected to work fluently with these tools while owning the architecture, understanding the code, and verifying the result.
The work spans customer-facing applications, partner and operations tools, provider integrations, and AI-assisted workflows. Recent examples include turning recorded browser sessions into automation, helping engineers investigate recurring automation failures, and building the APIs and dashboards that make those systems observable and usable.
What We Offer
- Fully remote: open to candidates worldwide, with a strong preference for candidates based in Mexico or the United States because of team collaboration and time-zone overlap.
- Competitive salary paid in USD.
- High ownership and autonomy in a small, product-focused engineering team.
- Hands-on work with frontier AI models, coding agents, and real-world automation challenges.
- Direct collaboration with product, design, QA, and operations, with visible impact on customers and the business.
- Room to grow through meaningful technical ownership as the platform evolves.
No formal educational degree required—we value your skills, judgment, and demonstrated work.
Key Responsibilities
- Own features end to end: clarify the problem and success criteria, propose a practical design, implement it, test it, deploy it, and follow its behavior in production.
- Build clear, responsive React experiences and dependable TypeScript/Node.js APIs, services, and integrations. Think through permissions, validation, loading states, errors, and recovery across the complete user journey.
- Use AI coding agents as part of your daily workflow. Give them useful context, break work into reviewable pieces, challenge their assumptions, and inspect and simplify the code they produce.
- Build and improve AI-assisted workflows, model integrations, and browser or API automation. Evaluate behavior against representative cases, account for cost and latency, and provide dependable fallbacks when a model or external service fails.
- Design data models, queries, migrations, and background jobs with attention to correctness, concurrency, retries, and avoiding duplicate actions.
- Extend existing systems thoughtfully. Reuse established patterns, maintain clear boundaries, and coordinate changes across applications and repositories without breaking shared contracts.
- Write meaningful automated tests and review teammates’ work. Demonstrate the feature in a working environment before QA, resolve findings, and verify the full flow after fixes.
- Investigate production issues using logs, traces, metrics, and data. Improve monitoring and documentation so the team can understand and operate what you ship.
- Work closely with product and operations to challenge unclear requirements, identify downstream effects, and prioritize changes that improve completion rates, reliability, and customer experience.
Our Ideal Candidate
- Product-minded: wants to understand the user and the business problem before choosing a technical solution.
- A strong builder: comfortable moving between interfaces, APIs, databases, and unfamiliar code when the problem requires it.
- Curious about AI: actively tries new capabilities and can explain where they helped, where they failed, and how the output was verified.
- Accountable: takes responsibility for the behavior of shipped software, including work produced with AI assistance.
- Pragmatic and collaborative: favors clear, maintainable solutions, welcomes rigorous review, and communicates progress and blockers clearly in an asynchronous team.
Requirements
- Substantial experience shipping and supporting production web applications, with the judgment and independence expected of a mid-to-senior engineer.
- Strong practical skills in TypeScript, Node.js, React, and SQL databases; PostgreSQL experience is especially relevant.
- Experience designing and consuming APIs, modeling data, and debugging issues across frontend and backend boundaries.
- Hands-on experience using AI coding tools to deliver real software, with examples of how you reviewed, tested, or corrected their output.
- Solid engineering fundamentals: automated testing, Git and pull requests, authentication and authorization, error handling, and maintainable system design.
- Experience with cloud deployments, containers, CI/CD, and production observability; our environment includes AWS and Docker.
- Clear written and spoken English and the ability to work independently while collaborating closely with a remote team.
Helpful experience includes LLM APIs, tool calling and MCP, evaluations, browser automation with Playwright, Python, Redis/BullMQ, event-driven systems, infrastructure as code, and monorepos such as Nx or Turborepo. You don’t need to have used every tool—we care about your ability to learn and apply sound engineering judgment.
A quick note about this role: This is a remote, independent contractor position, so it does not include company-sponsored employee benefits. Utility Profit observes U.S. company holidays, when our offices and regular business operations may be closed.
🎯 Who is this job for?
Level: Middle to Senior Full Stack Software Engineer.
Skills: Strong TypeScript, Node.js, React, SQL/PostgreSQL, API design, data modeling, testing, authentication, cloud deployment, Docker, CI/CD, observability, and practical use of AI coding tools; experience with LLM integrations and automation is beneficial.
Experience: The candidate should be comfortable owning production features end to end, building frontend and backend systems, designing integrations and background jobs, developing AI or browser automation workflows, debugging production issues, and collaborating independently with product and operations teams.
💬 Potential Interview Questions
How would you design a TypeScript and Node.js API for initiating a utility setup workflow?
I would define clear request and response contracts, validate inputs at the boundary, enforce authorization, and make the operation idempotent. The API would persist the workflow state, enqueue long-running work in a background job, and return status information that the frontend can safely display.
How would you model and process provider integrations that may fail or respond slowly?
I would isolate each provider behind a consistent adapter interface and track attempts, statuses, error categories, and external identifiers. Retries would use exponential backoff with limits, while permanent failures would be surfaced for operational review and recoverable workflows would support safe resumption.
How would you prevent duplicate utility setup actions when jobs are retried?
I would use idempotency keys and database constraints tied to the customer, service, and workflow action. Before performing an external action, the worker would check the persisted state, and the provider request would include a stable idempotency identifier whenever supported.
How would you build a React interface for a long-running automation workflow?
I would model explicit states such as pending, running, completed, failed, and requiring user action. The UI would provide loading and error states, poll or subscribe for status updates, preserve useful progress information, and offer clear recovery actions without allowing accidental duplicate submissions.
How would you secure APIs and operations tools that handle utility and tenant data?
I would authenticate every request, authorize access based on roles and resource ownership, and validate all client-controlled input on the server. I would also apply least-privilege access, protect sensitive data in transit and at rest, audit important actions, and avoid exposing provider credentials or unnecessary personal information.
How would you evaluate an LLM-powered workflow before deploying it to production?
I would create a representative evaluation set covering normal cases, ambiguous inputs, failures, and adversarial cases. Results would be measured for correctness, consistency, latency, and cost, with deterministic validation, human review for high-impact cases, and fallback behavior when the model is unavailable or uncertain.
How would you use coding agents effectively while maintaining ownership of the code?
I would give the agent focused context, repository conventions, acceptance criteria, and small reviewable tasks rather than delegating an entire feature blindly. I would inspect the generated code, run tests and security checks, simplify unnecessary abstractions, and verify the behavior against the original requirements.
How would you design browser automation with Playwright for unreliable provider websites?
I would use stable locators, explicit waits based on observable conditions, structured logging, screenshots or traces on failure, and isolated automation steps that can be retried safely. Provider-specific logic should be encapsulated, with timeouts, recovery paths, and a manual or API-based fallback where possible.
How would you investigate a production automation failure?
I would correlate logs, traces, metrics, job records, provider responses, and recent deployments using a workflow or request identifier. I would first determine scope and customer impact, reproduce the failure when possible, apply a safe mitigation, and then add tests, monitoring, or documentation to prevent recurrence.
How would you structure testing and deployment for a full-stack feature?
I would combine unit tests for domain logic, API and database integration tests, and end-to-end tests for critical React and automation flows. CI would run type checking, linting, migrations validation, and tests in containers, while deployment would use controlled migrations, environment-specific configuration, observability, and a rollback plan.
📋 Job Summary
Utility Profit is transforming utility setup for property managers and tenants through reliable software, integrations, and AI-powered automation. As a Full Stack Software Engineer, you’ll own production features end to end, building React interfaces, TypeScript/Node.js services, PostgreSQL data models, APIs, integrations, and AI-assisted workflows. This is a fully remote independent contractor role open worldwide, with a preference for candidates in Mexico or the US, and offers a competitive salary paid in USD. Apply to enjoy high ownership, meaningful customer impact, frontier AI tools, and the opportunity to shape a growing platform without a formal degree requirement.
Required Skills
Never miss a JavaScript opportunity
Subscribe to get similar jobs and weekly insights delivered to your inbox
Hiring JavaScript developers?
Post your job to 10,300+ registered developers. Starting free.
See PricingRelated jobs
Is this your listing? Claim or request removal