Operations and Planning Analyst

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

TYPE OF WORK

Full Time

SALARY

$1,000-1,750 USD/Mo.

HOURS PER WEEK

TBD

DATE UPDATED

Oct 25, 2026

JOB OVERVIEW

About Proper Growth
Proper Growth is the back of house for inventory-heavy consumer brands doing $5M to $50M a
year. We're a small fractional COO and CFO team running operations and finance for brands
that sell physical products across DTC, Amazon and wholesale.

The role
You'll be the link between our client brands' supply chains and our ops lead. Factories, freight
forwarders, 3PLs and warehouses come to you. You keep every PO, shipment and production
run moving, and you turn it all into the weekly reports and decks our clients rely on. You'll own
all vendor communication and all weekly client materials, so our ops lead can focus on planning
and decisions.

What you'll do
● Vendor communication: Own day-to-day communication with factories, suppliers, freight
forwarders, 3PLs and warehouses across all client brands. Confirm pricing, quantities,
ship dates and specs, and chase anything late.
● Liaison across the supply chain: Keep production, logistics, warehouse and our ops
lead in sync. Get every PO from placement through production, shipping, receiving and
stock on shelf.
● Daily summaries: Turn overnight WeChat, WhatsApp and email threads into a short
morning summary covering what changed, what's at risk and what needs a decision.
● Weekly client materials: Build and deliver each brand's weekly package: sell-through vs.
forecast, inventory position, open POs and WIP, inbound shipments.
● Deck support: Prepare client decks for weekly calls, monthly closeouts and buy reviews.
● Data hygiene: Keep PO trackers, inventory files and planning sheets current. Reconcile
packing lists, invoices and warehouse receiving reports.

What you need
● 1 to 3+ years in supply chain, production, purchasing or operations coordination.
Consumer goods or apparel preferred.
● Experience working with overseas factories or vendors, and comfort chasing them for
answers.
● Strong Excel or Google Sheets skills. Google Slides or PowerPoint for client-ready decks.
● Clear, organized written communication. You can turn a messy vendor thread into three
lines a founder can act on.
● Strong attention to detail across many POs, SKUs and brands at once.
● Availability for some early-morning or evening overlap with Asian vendors.

Nice to have
● Experience with Shopify, ShipHero, NetSuite, Cin7 or similar
● Familiarity with freight terms, customs and landed cost
● Mandarin or Spanish
● Experience using AI tools to draft summaries and reports

How it works
● Start: Contract to start, then full-time once the workload is proven.
● Who you work with: You'll support the Client Operations Manager and our co-founder
across about 8 to 12 client brands.

How to apply
Fill out the application form and include a 45-second video walking us through how you'd track
10 open POs across 3 factories.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0031
Controller Execution Time ( Jobseekers / Job )  0.0191
Total Execution Time  0.0229
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,483,448 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Operations-and-Planning-Analyst-1755191
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 15 (0.0105 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1755191
 LIMIT 1 
0.0021   SELECT *
FROM `employers`
WHERE `employer_id` = 954716
 LIMIT 1 
0.0010   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1755191
AND `misc`.`id` IS NULL 
0.0003   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1755191
AND `misc`.`id` IS NULL 
0.0018   SELECT e.business_name, e.logo, e.website, e.rebill_date, e.date_added member_date, hits, DATEDIFF('2026-10-26',ej.date_added) duration_days, DATEDIFF('2026-10-26',e.rebill_date) duration_rebill, ej.*, e.deactivate FROM employers e, employer_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-10-26',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != 1 AND ej.deleted = 0 AND job_id = '1755191' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1755191 
0.0003   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1755191
AND `misc`.`id` IS NULL 
0.0008   UPDATE employer_jobs SET hit_counts = '***Oct-23-2026=2***Oct-24-2026=2***Oct-25-2026=177***Oct-26-2026=5' WHERE job_id= '1755191'  
0.0007   UPDATE employer_jobs SET monthly_hits = '***Oct-2026=186' WHERE job_id= '1755191'  
0.0008   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1755191' AND status LIKE 'sent%' ORDER BY id DESC  
0.0005   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1755191 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '954716'
AND `date_added` >= '2022-06-08' 
0.0005   select * from teasers 
0.0002   SELECT * FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)