Case study
Basile
B2B Company & People Intelligence Platform
Role
Scope
Stack
What I built.
- 01
Delivered the complete platform end to end: backend, frontend, data pipelines, search, billing, integrations, a public API and its documentation.
- 02
Brought five data sources into one search: the French company registry (about 26M companies), 42.6M LinkedIn companies, 28.6M professional contacts, 7M yearly financial statements, plus Google Maps listings and company websites.
- 03
Every filter ignores case and accents, matches partial text and autocompletes as you type.
- 04
Built the whole prospecting workflow: save people and companies into lists, find emails and phone numbers through Emelia, push lists to HubSpot in one click, or export clean CSV files.
- 05
Launched Stripe subscriptions with four tiers, a shared monthly credit pool, promo codes, invoices and French VAT.
- 06
Opened the data up to other channels: a public REST API with API keys, AI assistants over MCP, and the “Basile for LinkedIn” Chrome extension.
- 07
Stopped bots scraping the free tier, cutting the daily extraction ceiling from about 2M rows to about 5k.
- 08
Shipped in English and French, with dark mode and an onboarding video.
- 01
Express 5 and TypeScript API on AWS ECS with DocumentDB as the source of truth and OpenSearch as a derived index; React 19, TanStack Router and Query, Zustand and Tailwind v4 on Vercel.
- 02
Federated search merging the Legal, LinkedIn and Google Maps indices into one list: French records first, a seeded shuffle per round, richest records first, and per-source search_after cursors so pagination is deterministic and never hits the 10k cap.
- 03
Streaming, idempotent ETL for the Coefficy v11 dataset, including a 178 GB file, with a resume-safety guard and zero-downtime re-indexing through versioned indices and an atomic alias swap.
- 04
A bounded-concurrency FIFO queue in front of the single OpenSearch node, priority lanes via AsyncLocalStorage, and an in-memory TTL/LRU cache for suggestions and first pages.
- 05
Background CSV exports built off the request path to S3 with presigned downloads and SSE progress; crash-safe, idempotent job runners for list-add, HubSpot uploads and Emelia bulk enrichment.
- 06
better-auth with an MCP/OIDC consent screen for AI agents and the Chrome extension; hashed, owner-scoped API keys re-checked against the subscription on every request.
- 07
Stripe Checkout with a price allowlist, in-place plan changes, signature-verified webhooks and per-record API billing from one credit pool.
- 08
34 test files, including a live bench of about 63 filter scenarios run against the real indices after each re-sync.