A digital reading platform designed to enhance and personalize content consumption through AI-powered text-to-speech, social discovery, and intelligent recommendations.
Pickup is a comprehensive content consumption platform that transforms how users discover, read, and listen to digital content. Originally called Quest (getquest.co), the platform combines AI-powered audio synthesis, social content sharing, and a sophisticated real-time recommendation engine to create a seamless multimedia learning experience.
The platform features a real-time recommendation engine that processes millions of podcasts and articles through:
- Distributed Scraping Pipelines: Automated processing of 100+ podcast feeds and article sources, plus sophisticated data seeding from platforms like Curius.app
- Vector Similarity Search: Leveraging pgvector in PostgreSQL for high-performance content matching
- Hybrid Recommendation Algorithm: Combines content-based filtering, collaborative filtering, and social signals
- Real-Time Processing: Optimized for sub-second latency in content recommendations
- Unified Content System: Handles diverse content types (podcasts, articles) with consistent personalization
- AI Text-to-Speech: Convert articles to high-quality audio via ElevenLabs
- Content Processing Pipeline: URL ingestion → AI summaries → audio generation → vector embeddings
- Social Discovery: Follow friends, share content, discover trending articles in your network
- Content Generation Engine: Reading pattern analysis, category-based recommendations, friend activity influence
- Multi-Modal Experience: Seamless reading/listening with progress tracking and highlights
This is a full-stack application with three main components:
- Framework: React Native with Expo
- Language: TypeScript
- State Management: Redux Toolkit
- Navigation: React Navigation v6
- Audio: React Native Track Player
- Authentication: Firebase Auth + Apple/Google Sign-in
- Framework: Express.js with Apollo GraphQL
- Language: TypeScript
- Database: PostgreSQL with pgvector for embeddings
- Authentication: Firebase Admin SDK
- Background Jobs: Inngest
- AI/ML: OpenAI API for content processing
- Audio Processing: FFmpeg for audio generation
- Type: Chrome Extension (Manifest V3)
- Framework: Webpack + Firebase
- Purpose: Content capture and quick access
- Node.js 18+ (server requirement)
- Docker & Docker Compose
- Yarn (for app dependencies)
- npm (for server dependencies)
-
Clone the repository
git clone <repository-url> cd pickup
-
Start PostgreSQL with Docker
docker pull pgvector/pgvector:pg16 docker compose -f deployments/pickup/docker-compose.yml up
-
Set up environment variables
- Copy
.env
files toserver/
andapp/
directories - Configure Firebase, database, and API credentials
- Copy
-
Install dependencies
# Server cd server npm run install:all # App cd ../app yarn install npx pod-install # iOS only
-
Run database migrations
cd server npm run migrate:run
-
Start development servers
# Terminal 1: Main server cd server npm run start:dev # Terminal 2: Background jobs npm run inngest:dev # Terminal 3: Inngest UI npx inngest-cli@latest dev -u http://localhost:8001/inngest # Terminal 4: Mobile app cd ../app npm run start
npm run start:dev
- Development server with hot reloadnpm run build
- Build production bundlenpm run start
- Run production servernpm run inngest:dev
- Background job worker (development)npm run migrate:run
- Run database migrationsnpm run migrate:generate
- Generate new migrationnpm run graphql:generate
- Generate GraphQL schema and typesnpm run test
- Run tests
npm start
- Start Expo development servernpm run android
- Run Android development buildnpm run ios
- Run iOS development buildnpm run graphql:codegen
- Generate GraphQL client code
npm run build
- Development build with watch modenpm run release
- Production build
- Runtime: Node.js
- Framework: Express.js
- GraphQL: Apollo Server
- Database: PostgreSQL + pgvector
- ORM: TypeORM
- Jobs: Inngest
- AI: OpenAI API
- Audio: ElevenLabs, FFmpeg
- Authentication: Firebase Admin
- Deployment: PM2
- Mobile: React Native + Expo
- State: Redux Toolkit
- Navigation: React Navigation
- UI: React Native Elements, Gorhom Bottom Sheet
- Audio: React Native Track Player
- Auth: Firebase Auth, Apple/Google Sign-in
- Database: PostgreSQL with pgvector extension
- Vector Storage: pgvector for content embeddings
- File Storage: Google Cloud Storage / Firebase Storage
- Background Jobs: Inngest + Redis
- Monitoring: Sentry
- iOS: Full native support
- Chrome Extension: Content capture and quick access
- Web: Limited (some React Native packages not web-compatible)
Originally developed as Quest (getquest.co) - a platform to "10x your reading" through personalized, AI-enhanced content consumption.