Creative marketplace
Monroo
A marketplace for offline talent, built end-to-end
A curated marketplace connecting offline creative talent — models, singers, event organisers, translators — with clients.

- Status
- Archived
- Role
- Product · Full-Stack · DevOps
- Engagement
- Client work
- Timeline
- 6 months
Stack
- React
- Next.js
- PWA
- Flutter
- Node.js
- PostgreSQL
- Prisma
- Gemini
- OpenRouter
- Stripe
- AWS
- GitHub Actions
- Cloudflare
The problem
Creative freelancers and clients struggle to find each other meaningfully. Existing platforms reward price competition rather than creative fit, so freelancers get lost in the noise while clients cannot assess compatibility before hiring.
What I built
Hirers describe what they need, the platform matches them to vetted talent, and payment is held until the work is delivered.
- AI brief assistant
- Talks to the hirer in their own language, turns what they need into a posting, and surfaces the closest-matching talent.
- Portfolio profiles
- Customisable profiles that put the creative work first.
- Project management
- Timelines, feedback and deliverables in one place.
- Escrow payments
- Funds held securely via Stripe until the work is delivered.
- Cross-platform
- A consistent experience across web, iOS and Android.
How it is built
Built end-to-end with two non-technical founders — product, architecture, stack and every feature, across web, iOS and Android.
- One API, three clients
- A single API serves the web app and both mobile apps, on Postgres via Prisma.
- Escrow with Stripe
- Payments are captured up front and released only when the work is delivered.
- Conversation and matching
- Gemini, routed through OpenRouter, handles both the conversation with the hirer and the talent match.
The hard part
Escrow edge cases, not the integration
Connecting the payment provider was the easy part. Partial refunds, mid-project cancellations, disputes and releases each needed correct, tested behaviour.
Gallery
Imagery is recreated or anonymised for privacy — not actual screenshots.
Have a problem like this?
Tell me what you are trying to build and I will tell you how I would approach it.
