Senior Full-Stack Engineer (MVP) — DTC eCommerce MandA Brokerage + Valuation Platform to $4000
Senior Full-Stack Engineer (MVP) — DTC eCommerce M&A Brokerage + Valuation Platform
Scope: Build a production-ready MVP for a brokerage marketplace focused exclusively on DTC eCommerce brands. The platform must (1) onboard sellers via a clean valuation wizard, (2) create gated listings, (3) let vetted buyers browse, filter, inquire, and (4) support payments/fees, KYC, notifications, and basic analytics.
Goal: Ship an MVP we can use to close the first 100 paid customers (listings) and generate serious buyer inquiries.
Tech We Expect You To Use
- Frontend / Hosting: Next.js (App Router, TypeScript) on Vercel
- DB/Auth/Storage/Realtime: Supabase (Postgres + RLS, Auth, Storage, Realtime)
- Realtime via Supabase Realtime or Ably (justify tradeoffs)
- Payments: Stripe (prefer Stripe Connect) for application/listing fees, buyer deposits, disbursements
- Notifications: Knock (in-app + email feed); Twilio for SMS
- KYC/Compliance: Persona (buyers & high-value sellers)
- Bank Linking: Plaid (ACH, verification)
- eCom Integrations (MVP): Shopify (Admin API + OAuth + webhooks)
- Email: Resend/Postmark/SendGrid (pick one and wire it cleanly)
- Search (MVP): Postgres FTS; plan to swap in Typesense/Algolia later
- Jobs/Workflows: Inngest or Trigger.dev (background tasks, webhooks, report generation)
- Error & Analytics: Sentry (errors), PostHog (product analytics)
You must have a public GitHub with recent full-stack code. We will collaborate via PRs and code reviews.
What You’ll Build (MVP Scope)
- Public Site
- Homepage with dual CTA: “Sell Your Brand” (valuation) / “Browse Listings” (buyers)
- Category browsing (Beauty, Apparel, Supplements, Home, etc.), trust elements, FAQ
- Seller Flow
- Valuation Wizard (TTM revenue/profit, SKU count, AOV, repeat rate, ad mix/ROAS, fulfillment model, channel split, platform risk)
- Instant valuation range + drivers (risk/quality adjustments)
- Create draft listing from the wizard; editable before publish
- Upload docs to data room (Supabase Storage, signed URLs)
- Marketplace
- Listings grid/list with filters: revenue, profit, margin, category, geography, age, growth %, channel mix
- Listing detail with teaser metrics; sensitive data gated behind KYC (+ optional refundable buyer deposit via Stripe) and click-through NDA
- Buyer Flow
- Buyer signup → Persona KYC → optional small Stripe deposit to unlock details
- Request Info / Inquire → route to seller via in-app thread + email/SMS
- Basic message thread (realtime) between buyer & seller (mask emails)
- Payments
- Stripe application/listing fee for sellers (one-time)
- Optional buyer deposit/intent fee to unlock confidentials
- Stripe Connect account model for future success-fee flows
- Notifications
- Knock for in-app feed; email + SMS (Twilio) for critical events: “New inquiry”, “KYC approved”, “NDA signed”, “Deposit received”
- Knock for in-app feed; email + SMS (Twilio) for critical events: “New inquiry”, “KYC approved”, “NDA signed”, “Deposit received”
- Admin
- Role-based dashboard (admin/broker)
- Approve listings, see KYC status, refund deposits, redact content, audit log
- Security & Compliance (MVP-realistic)
- Supabase RLS and row-level permissions (buyer/seller/admin)
- Secrets via Vercel + Supabase; PII encryption at rest where appropriate
- GDPR-friendly data deletion hooks; audit_log table for sensitive events
- Observability
- Sentry wired on both server & client; PostHog for funnels and eventing
- Sentry wired on both server & client; PostHog for funnels and eventing
- Docs & Handoff
- README + runbook, env sample, ERD diagram, endpoint catalog, postman collection
Suggested Data Model (initial ERD)
- users (role: buyer | seller | admin; KYC status; 2FA)
- organizations (optional; for seller teams)
- brands (name, domain, category, geo, platform)
- metrics_monthly (brand_id, month, revenue, cogs, opx, profit, sessions, AOV, repeat_rate)
- listings (brand_id, status: draft/live/gated; asking_price; teaser fields)
- listing_assets (files in Supabase Storage, access policies)
- valuations (inputs + computed range + risk adjustments)
- ndas (status, signed_at, pdf_url)
- inquiries (buyer_id, listing_id, message, created_at)
- messages (thread_id, sender_id, body, read_at)
- payments (stripe ids, amount, type: listing_fee | buyer_deposit)
- audit_log (actor_id, action, entity, before/after, ip)
Nice-to-Have (Stretch after MVP)
- Escrow provider integration (Escrow.com/Mangopay) for deal deposits
- DocuSign / Dropbox Sign for NDAs & LOIs (PDF generation)
- WooCommerce or Amazon Seller Central adapters (post-MVP)
- Typesense/Algolia for richer search & ranking
- CSV import for sellers not on Shopify
- Basic comps/multiples library to explain pricing vs peers
Your Responsibilities
- Own the architecture and ship the MVP fast with clean code, tests, and docs
- Implement Shopify OAuth + webhooks (orders/paid, refunds) to compute core metrics
- Build valuation logic (simple, explainable, weighted on risk & quality)
- Set up Stripe Connect, Persona, Plaid, Knock, Twilio
- Enforce RLS and robust permissioning; cover critical paths with tests
- Collaborate with our designer (you’ll receive Figma) to match a Wayflyer-level polish
- Set up CI/CD (Vercel), preview deploys, env config, seed scripts
What Success Looks Like (30/60 Days)
- Day 30:
- Seller valuation → draft listing → publish → appears in marketplace
- Buyer signup → Persona KYC → deposit → gated unlock works
- Inquiries/messages functional; notifications live; admin approve flow
- Day 60:
- Shopify integration powering metrics on listings
- Stripe Connect flows; deposits/refunds; audit logs; Sentry/PostHog dashboards
- We have >50 live listings and real buyer conversations in product
Must-Have Experience
- Next.js + TypeScript in production; Vercel deployment
- Supabase (Auth, Postgres, Storage, RLS) or equivalent (and can learn fast)
- Payments (Stripe/Connect), webhooks, and secure background processing
- Third-party KYC (Persona/Alloy) + Twilio/Knock-style notifications
- OAuth app development (ideally Shopify) and webhook handling at scale
- Designing RBAC/permissions and shipping secure, auditable systems
- Writing tests (unit/integration) + owning monitoring/alerts
Bonus
- Built a marketplace, brokerage, or fintech-style product before
- Typesense/Algolia, Inngest/Trigger.dev, Ably/Pusher
- DocuSign/Dropbox Sign, Escrow providers
- Data viz (simple charts) and CSV ingest pipelines
How to Apply
- GitHub link (required). Point to a repo showing:
- Next.js + TS + DB + third-party integration + tests
- Short note on which parts you’d implement first and why (be specific)
- A one-page architecture sketch (bullet points) for the MVP:
- Folder structure, ERD, key tables, RLS approach, background jobs, error handling
- Estimate for a 6–8 week MVP with weekly milestones and hours
Quick Screening Task (paid, small)
- Build a Next.js route that completes Shopify OAuth, stores the shop + token in Postgres (Supabase), and exposes an API endpoint /api/shops/:id/metrics that returns last-30-day revenue & orders from Shopify. Include a minimal Prisma or SQL migration and a Jest/Vitest test for the endpoint.
Required languages
English | C2 - Proficient |