Senior Software Engineer (Backend / AI Pipelines) — AI Start Up

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

TYPE OF WORK

Full Time

SALARY

PHP 150,000–220,000/month

HOURS PER WEEK

40

DATE UPDATED

Aug 13, 2026

JOB OVERVIEW

We build agents for humans. EchoVerse Collective is an AI-native media, content and intelligence company. Our flagship product is Dispatches — a personalised daily brief about AI, written by four AI columnists and approved by a named human editor before anything ships. You can read it at ---------- /dispatches. Behind it is an agentic pipeline that researches, writes, verifies, narrates and delivers every article, adapted to each reader. Dispatches is the flagship, not the whole company: alongside it we build document-automation systems — invoice and back-office processing with human review — and other backend-heavy intelligence products. These are live products with real users, not prototypes.

We build differently. AI agents — Claude Code, Codex — are our primary instruments. We plan in written specs, fan work out to parallel agents, and review everything that ships. One engineer here has the leverage of a small team. We are hiring the second one.

THE WORK

You will be engineer #2, working directly with the lead developer and owning real workstreams end to end — from written spec to deployed, tested, monitored production code. The work is backend-first: most of your time will be in the agentic pipeline and the data layer, with full-stack work on top when a workstream reaches the surface. In a given month you might:

- Extend a Python agentic worker (FastAPI + LangGraph): pipeline stages, structured output with strict validation, verification and evidence systems, run lifecycles, cost tracking, schedulers and durable queues.
- Work the data layer: Postgres (Supabase) with row-level security — schema design, migrations, pgvector and embeddings — plus Stripe billing and webhook plumbing.
- Build document-processing flows: OCR and extraction, trust scoring, exception routing, human review surfaces.
- Build and harden features across a Next.js / React / TypeScript reader app and ops console.
- Write the tests (pytest, Vitest, Playwright), run the QA pass, and ship.

You will not be a ticket-taker. You get context-rich written specs, wide latitude in how you execute, and direct review of your work by the lead — the same bar we hold our own code to.

YOU WILL FIT IF

- You have five or more years building production software, with senior backend skills in Python and/or TypeScript — both is ideal. Typed, tested code with validation at the boundaries is a habit, not a request.
- You have real database depth. You design Postgres schemas, write migrations confidently, and understand auth and row-level-security models — not just an ORM user.
- You use agentic coding tools — Claude Code, Codex, Cursor or similar — as a core part of how you work, and you can explain the workflow: how you spec tasks for an agent, how you review its output, when you take over by hand, and a time it burned you. This is the most important requirement in this ad and we will test it in depth.
- You have built with LLM APIs beyond a chat wrapper: structured output, retries and fallbacks, prompt iteration, some form of eval or regression checking, cost awareness. Multi-stage pipelines or agent frameworks are a big plus.
- You have enough full-stack range to work competently in a modern React/Next.js codebase and a CI/deploy pipeline. Backend is the centre of this role, but nothing here is "not my job".
- You work well async from written specs, you say plainly what is done versus in-progress versus not started, and you never report a result you did not verify.
- You write excellent English. Most of our communication is written.

Tell us if you have any of these: LangGraph or similar pipeline frameworks; batch APIs, prompt caching and other LLM cost engineering; Supabase specifically (RLS, auth, storage); Stripe; pgvector and search tuning; eval harnesses; job schedulers and durable queues (APScheduler, Celery, Temporal); audio or video generation pipelines; Playwright or API work against poorly documented services; front-end craft.

YOU WILL NOT FIT IF

- You need a ticket queue and a detailed brief before you can start.
- Your LLM experience is a chat wrapper.
- You treat AI coding tools as autocomplete, or you ship their output unread.
- You report progress by effort rather than by verified results.

DETAILS

- PHP 150,000–220,000 per month, depending on experience. We pay at the top of the market for the right person.
- Full-time, fully remote, Philippines.
- Independent contractor, monthly invoicing, 13th-month bonus.
- We are in London (GMT+1). We need three hours of overlap — your afternoon covers it. The rest of your hours are flexible.
- We pay by Wise, Payoneer or direct transfer, whichever suits you.
- You bring a reliable machine and connection; we cover AI tooling subscriptions and API costs.

HOW TO APPLY — two things, both required

1. The most complex backend or LLM-powered system you have built — a multi-stage pipeline, a data-heavy service, an automation with real failure handling. A short paragraph: what it did, the hardest problem in it, and a link (repo, write-up or demo) if you can share one.

2. Your AI-assisted development workflow — which tools, how you structure tasks for agents, how you review their output, and one concrete example of a task you shipped this way. Keep it short at this stage. A few hundred words is plenty.

Applications missing either will not be read.

SUBJECT LINE

Dispatches build — [name]

where [name] is the columnist who covers the technical desk. It is on the site. The wrong subject line is filtered automatically.

WHAT HAPPENS NEXT

From everyone who applies we shortlist five to eight people. Those people get a short async technical task, scoped to a few hours.

We pay PHP 2,000 for that task. Everyone who reaches that round is paid, on delivery, whether or not we hire you. It is not a competition prize and it is not conditional on us liking what you built. If we asked you for it, you are paid for it.

From there, two or three people do a live pairing session — you work a real problem with your AI tooling of choice, and we watch how you drive it. One person gets the job. The whole process takes under two weeks.

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0127
Total Execution Time  0.0140
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,521,856 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-Software-Engineer-Backend-AI-Pipelines-AI-Start-Up-1708734
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0078 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0012   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1708734
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 951164
 LIMIT 1 
0.0009   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1708734
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-09-24',ej.date_added) duration_daysDATEDIFF('2026-09-24',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-09-24',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1708734' 
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1708734 
0.0008   UPDATE employer_jobs SET hit_counts '***Aug-13-2026=372***Aug-14-2026=342***Aug-15-2026=157***Aug-16-2026=95***Aug-17-2026=81***Aug-18-2026=54***Aug-19-2026=35***Aug-20-2026=38***Aug-21-2026=34***Aug-22-2026=20***Aug-23-2026=18***Aug-24-2026=46***Aug-25-2026=29***Aug-26-2026=18***Aug-27-2026=24***Aug-28-2026=20***Aug-29-2026=13***Aug-30-2026=15***Aug-31-2026=25***Sep-01-2026=27***Sep-02-2026=12***Sep-03-2026=17***Sep-04-2026=11***Sep-05-2026=15***Sep-06-2026=13***Sep-07-2026=23***Sep-08-2026=30***Sep-09-2026=18***Sep-10-2026=15***Sep-11-2026=12***Sep-12-2026=8***Sep-13-2026=13***Sep-14-2026=11***Sep-15-2026=23***Sep-16-2026=26***Sep-17-2026=19***Sep-18-2026=16***Sep-19-2026=5***Sep-22-2026=1***Sep-24-2026=2' WHERE job_id'1708734'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Aug-2026=1436***Sep-2026=317' WHERE job_id'1708734'  
0.0008   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1708734' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1708734 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '951164'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)