Senior Full-Stack Software Engineer

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Full Time

WAGE / SALARY

$3500-$5000/month

HOURS PER WEEK

40

DATE UPDATED

May 19, 2026

JOB OVERVIEW

Senior Full-Stack Software Engineer — TypeScript / React / Node.js — AI-Native SaaS — Long-Term, Full-Time

About Patch Ventures
Patch is an AI-powered business management platform built for veterinary hospitals. We are becoming the system of record for everything inside a hospital's operational sphere, and increasingly, the system that runs that work itself.

We are an early-stage company growing the engineering team and looking for senior software engineers who want to build a category-defining product close to the foundation.

The Stack
Frontend: TypeScript, React, Next.js

Backend: TypeScript, Node.js, NestJS with Express, REST, Domain-Driven Design and Hexagonal Architecture

Persistence: PostgreSQL, Redis, S3

Infrastructure: AWS, Docker, GitHub Actions

AI: All frontier models

Observability and Testing: Sentry, Vitest

What We Actually Look For
The right person learning these tools is meaningfully better than the wrong person who already knows them. We want engineers with strong fundamentals, sharp judgment, and a builder's instinct. Familiarity with our stack is a plus. The bar on craft is not.

We expect several years (4+) of professional full-stack experience, comfort working end-to-end in TypeScript, a genuine interest in AI-native product work rather than bolt-on chat features, and direct, written communication.

Required: Prior full-time work experience with companies based in the United States, Canada, the United Kingdom, Australia, or Western Europe. This is not negotiable. Applications without verifiable experience working with companies in these markets will not be reviewed.

Logistics
Position: Full-time, long-term, remote

Hours: Flexible. Work the hours that work for you. No required overlap with US time zones.

Compensation: $3,500 to $5,000 per month USD, based on prior experience and the strength of your work.

Start date: As soon as the right person is identified.

We take hiring seriously, and we respect your time. After we review and advance your application, we will mandate the following for each applicant:
1. A short async video exercise, about 30 minutes of your time
2. A ~30-minute technical conversation with our CTO
3. A paid take-home exercise in our actual stack, 4 to 6 hours of your time. If you advance through our hiring process, we will pay for every completed take-home regardless of outcome
4. A ~60-minute final conversation
5. Reference checks


How to Apply
Include the following:

1. A short note, a few sentences, on a system you built that you are proud of, and why
2. Links to a portfolio, GitHub, or representative code samples
3. A list of every US, Canadian, UK, Australian, or Western European company you have worked with, including your role, the duration, and a contactable reference where possible
4. Your current location and time zone
5. Your expected monthly rate in USD
6. Your earliest possible start date

We will attempt to respond to all applications that follow these instructions. ---------- ----------

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0009
Controller Execution Time ( Jobseekers / Job )  0.0748
Total Execution Time  0.0762
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,510,696 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-Full-Stack-Software-Engineer-1650683
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0690 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0008   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1650683
 LIMIT 1 
0.0008   SELECT *
FROM `employers`
WHERE `employer_id` = 936600
 LIMIT 1 
0.0597   SELECT COUNT(DISTINCT t.id) as cnt
FROM 
`t_thread` `t`
INNER JOIN `t_message` `mON `t`.`id` = `m`.`thread_id`
INNER JOIN `t_message_employer` `eON `m`.`id` = `e`.`message_id`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1650683
AND `misc`.`idIS NULL 
0.0006   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-20',ej.date_added) duration_daysDATEDIFF('2026-06-20',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-06-20',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1650683' 
0.0007   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1650683 
0.0011   UPDATE employer_jobs SET hit_counts '***May-19-2026=342***May-20-2026=230***May-21-2026=106***May-22-2026=66***May-23-2026=23***May-24-2026=24***May-25-2026=41***May-26-2026=41***May-27-2026=33***May-28-2026=31***May-29-2026=10***May-30-2026=15***May-31-2026=14***Jun-01-2026=11***Jun-02-2026=26***Jun-03-2026=23***Jun-04-2026=20***Jun-05-2026=14***Jun-06-2026=12***Jun-07-2026=12***Jun-08-2026=8***Jun-09-2026=10***Jun-10-2026=8***Jun-11-2026=14***Jun-12-2026=6***Jun-13-2026=4***Jun-20-2026=1' WHERE job_id'1650683'  
0.0007   UPDATE employer_jobs SET monthly_hits '***May-2026=976***Jun-2026=169' WHERE job_id'1650683'  
0.0018   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1650683' AND status LIKE 'sent%' ORDER BY id DESC  
0.0005   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1650683 
0.0014   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '936600'
AND `date_added` >= '2022-06-08' 
0.0004   select from teasers 
0.0003   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)