Technical Product Owner for SaaS and E-Commerce

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

TYPE OF WORK

Any

SALARY

400

HOURS PER WEEK

20

DATE UPDATED

Jul 24, 2026

JOB OVERVIEW

Mvolo is a Dutch e-commerce brand selling light therapy products across Europe. Alongside the brand we build our own software products, including a business intelligence platform for e-commerce operators and an internal operations system. We are small, fast and we ship.

The Role
You own the delivery of two software products end to end. You translate the founder’s direction into concrete work for the development team, you keep the team unblocked and you guard the quality of what ships. You are the single point of contact between the founder and the developers, which means communication runs through you in both directions. You are hands on. You review pull requests, you write code when it helps and you d ---------- when something is ready to move from staging to main.

What You Will Do
Own the backlog and roadmap for two products and turn strategy into scoped tasks
Assign work across the development team and hold people to deadlines
Review pull requests and give technical feedback that raises the bar
Approve and manage releases from staging to production
Write code yourself when the team needs support or when speed demands it
Build data pipelines and dashboards that show how the products and the business perform
Report progress, risks and trade offs directly to the founder every week

What We Are Looking For

Required
Three or more years of hands on development experience and you still code today without leaning on AI tools
Proven experience leading a development team or owning delivery for a product
Strong data skills covering SQL, data modelling and building or maintaining pipelines
You can analyse data and turn it into a recommendation, not just a chart
Excellent written English and the confidence to push back on the founder when you disagree

Nice to have
Experience in e-commerce, marketplaces or DTC brands
Experience with Supabase, Postgres, Next.js or Python data tooling
Background in analytics, business intelligence or reporting products
Skills Requirement
Project Management
Web Development
E-Commerce

What We Offer
Full ownership over two products with a direct line to the founder
Fully remote work with flexible hours and no micromanagement
Budget for courses, certifications and tooling
A long term role in a company that is scaling both brand and software

How To Apply
Send your application with the subject line Technical PO followed by your first name. Include your CV, links to code or products you have shipped and short answers to these three questions.

1. Describe a pull request you rejected and how you handled the conversation with the developer
2. A developer says a feature is done. Walk me through exactly what you check before it goes to main
3. You are asked which of two features to build first and both stakeholders disagree. How do you d ---------- and what data do you use

Applications without answers to all three questions will not be reviewed.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0264
Total Execution Time  0.0278
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,510,936 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Technical-Product-Owner-for-SaaS-and-E-Commerce-1695989
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0212 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1695989
 LIMIT 1 
0.0012   SELECT *
FROM `employers`
WHERE `employer_id` = 786962
 LIMIT 1 
0.0012   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1695989
AND `misc`.`idIS NULL 
0.0004   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-07-30',ej.date_added) duration_daysDATEDIFF('2026-07-30',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-07-30',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1695989' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1695989 
0.0011   UPDATE employer_jobs SET hit_counts '***Jul-24-2026=475***Jul-25-2026=73***Jul-26-2026=5***Jul-30-2026=1' WHERE job_id'1695989'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Jul-2026=554' WHERE job_id'1695989'  
0.0003   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1695989' 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` = 1695989 
0.0145   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '786962'
AND `date_added` >= '2022-06-08' 
0.0004   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)