CamelCollect.io

A web app and browser extensions for saving LinkedIn posts into organized collections, with onboarding and subscription billing.

Project at a glance

My responsibility
Sole engineer across product architecture, app and extension development, billing, admin tooling, deployment, and support.
SaaS / Productivity
The product needed to connect three parts of the same workflow: installing an extension, saving content while browsing, and finding it again in the web app.
Product
Web + extensions
API
tRPC + Zod
Billing
Stripe subscriptions
Next.jsTypeScripttRPCPrismaPlanetScaleUpstash
Visit projectView resume
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

The work

Problem, implementation, and result.

01

Problem

01

Users needed to save and organize posts while browsing, without manually copying links into documents.

Problem
02

Build

02

I built browser capture flows and a synchronized web application for folders, saved posts, onboarding, account management, and subscriptions.

System design
03

Outcome

03

The product connects browser capture, a signed-in web app, and subscription billing. Error reports and logs help trace problems between them.

Delivered behavior

Framing

Scope and constraints.

The product needed to connect three parts of the same workflow: installing an extension, saving content while browsing, and finding it again in the web app. I built capture and collection workflows around shared API contracts, then added subscription entitlements, administration, and production diagnostics.

Technologies

Next.js
TypeScript
tRPC
Prisma
PlanetScale
Upstash
Clerk

Key features in scope

LinkedIn post capture through Chrome and Firefox extensions
Folder organization and filterable feeds
Guided extension onboarding
Administration and analytics tooling
Stripe subscriptions and entitlement checks

Responsibility and context

Role: Sole engineer across product architecture, app and extension development, billing, admin tooling, deployment, and support.
Category: SaaS / Productivity

Engineering

Architecture and decisions.

I built browser capture flows and a synchronized web application for folders, saved posts, onboarding, account management, and subscriptions.

Technologies

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

Architecture choices

Next.js and TypeScript application with shared UI components
tRPC and Zod API contracts used by the web application and extension clients
Prisma and PlanetScale data model for accounts, folders, posts, and subscriptions
Browser capture pipeline connected to authenticated web sessions
Stripe webhooks and entitlement checks for subscription features
Sentry and Axiom instrumentation for production diagnostics

Key decisions

Make extension setup part of onboarding so users can complete their first capture
Model subscription entitlements in the backend
Share typed API contracts between the application and extension clients
Add error reporting and logs to support troubleshooting after release

Results

Results and limitations.

The product connects browser capture, a signed-in web app, and subscription billing. Error reports and logs help trace problems between them.

Delivered behavior

Delivered web and browser-extension workflows for capturing and organizing LinkedIn posts
Implemented Stripe subscriptions and backend entitlement checks
Added onboarding, administration, and diagnostic tooling

Constraints

Connect extension actions to the signed-in web account without interrupting browsing
Keep feed browsing responsive as content volume grows
Keep admin and analytics features separate from everyday collection tasks

Lessons

What the build taught me.

01

Onboarding needs to explain both extension installation and the first capture

02

Shared contracts help multiple clients use the same backend

03

Subscription checks belong in the backend as well as the interface