CamelCollect.io

A cross-browser SaaS (web + Chrome + Firefox) that turns scattered LinkedIn saves into searchable collections, with onboarding, analytics, and paid subscriptions built in.

Visit project
CamelCollect.io hero graphic

Product screens

Extension Capture Flow

Capture LinkedIn posts in-context and route them into structured collections without leaving the feed.

Extension Capture Flow

Collections Dashboard

Searchable folders and filters make previously saved content actually retrievable and useful.

Collections Dashboard

Onboarding + First Value

Guided onboarding reduces extension setup friction and accelerates first successful capture.

Onboarding + First Value
Execution Snapshot

The strongest signal first, then the operating context around it.

Lead Signal

0->1 + productionOwnership across a shipped saas / productivity build.

Delivery Role

Sole engineer across product strategy, UX, app and extension architecture, billing, observability, deployment, and ongoing support.

Product Context

The product had to perform across first-use onboarding, daily capture behavior, and paid conversion moments while remaining intuitive for non-technical users.

Stripe subscriptions

Revenue Engine

Sentry + Axiom

Reliability

Launch Posture

The stack and feature set were shaped for production use, not just a polished demo.

Next.jsTypeScripttRPCPrismaPlanetScaleUpstash

Build Narrative

A clean story from constraint to shipped outcome.

01

Problem

01

Professionals were finding useful LinkedIn content but losing it across tabs, bookmarks, and copy-paste docs. Existing save flows created friction and made long-term retrieval unreliable.

Constraint mapping
02

Build

02

I built synchronized Chrome and Firefox extension capture flows plus a web app for organization, retrieval, onboarding, analytics, and paid plans.

System design
03

Outcome

03

A production-ready SaaS architecture that demonstrates cross-browser extension engineering, full-stack ownership, and commercially aligned delivery.

Production outcome

Framing

Defining the product and the operating constraints.

The product had to perform across first-use onboarding, daily capture behavior, and paid conversion moments while remaining intuitive for non-technical users. I used clear domain boundaries, typed API contracts, and pragmatic sequencing: capture first, organization second, monetization third, then operational hardening.

Systems Index

Next.js
TypeScript
tRPC
Prisma
PlanetScale
Upstash
Clerk

Key features in scope

Chrome + Firefox extension capture for LinkedIn posts
Folder-based organization with filterable feed views
Guided onboarding that accelerates first successful capture
Admin and analytics tooling for support and iteration
Stripe-powered subscriptions with gated premium capabilities

Role and product posture

Role: Sole engineer across product strategy, UX, app and extension architecture, billing, observability, deployment, and ongoing support.
Category: SaaS / Productivity

Engineering

Building the core system and choosing where to be opinionated.

I built synchronized Chrome and Firefox extension capture flows plus a web app for organization, retrieval, onboarding, analytics, and paid plans.

Systems Index

Next.js
React
TypeScript
Tailwind CSS
Radix UI
tRPC
React Query
Prisma

Architecture choices

Next.js + TypeScript application with shared UI primitives for product and growth surfaces
Type-safe tRPC + Zod contract layer used by both web and extension clients
Prisma + PlanetScale model for users, folders, posts, and subscription state
Cross-browser capture pipeline tied to authenticated web sessions
Stripe webhooks and entitlement checks for paid feature gating
Sentry + Axiom telemetry for production diagnostics and behavioral insights

Key decisions

Make onboarding extension-first so users hit first value quickly
Treat entitlement state as core domain logic, not UI conditionals
Use strict shared contracts between app and extension to reduce regressions
Invest in observability early to de-risk paid feature delivery

Hardening

Turning the build into something resilient enough to matter.

A production-ready SaaS architecture that demonstrates cross-browser extension engineering, full-stack ownership, and commercially aligned delivery.

Systems Index

Shows end-to-end ownership across UX, architecture, delivery, and operations
Combines extension complexity with full-stack SaaS execution
Demonstrates commercial thinking through monetization and reliability tradeoffs
Reflects senior prioritization: deliver value quickly, then harden with rigor

Results after shipping

Delivered a production SaaS with web + cross-browser extension surfaces
Reduced save-to-organize friction through a lightweight capture and folder workflow
Shipped monetization with Stripe subscriptions and reliable entitlement handling
Established a maintainable foundation for continuous shipping and support

Constraints

Synchronize extension actions with authenticated app state across browsers
Keep capture and retrieval fast as folder and post volume grows
Preserve a simple UX while adding billing, analytics, and admin capabilities
Operate safely in production with enough telemetry to resolve issues quickly

Lessons

What the build taught me.

01

Extension products live or die on first-run onboarding quality

02

Type-safe contracts pay off heavily when multiple clients hit the same backend

03

Monetized features require backend-first entitlement modeling

04

Observability is a product requirement, not an infrastructure afterthought