thalo — global recruitment marketplace
A global recruitment marketplace and CRM for manpower agencies, with AI search and a WhatsApp assistant.
Co-founder & sole engineer · Jul 2026 – present
Tech: Rails 8 · Hotwire · PostgreSQL 16 + pgvector · Solid Queue · OpenAI · WhatsApp Cloud API · Kamal 2 · Cloudflare
What it is
A two-sided marketplace where anyone can post a CV or a job, for any role, in any country. Employers search candidates with one natural-language box and pay only to unlock contact details. On top sits a recruitment CRM for agencies: a private candidate book, bulk import, pipelines, document tracking, and client shortlists. Built from an empty repo to production in about two months.
Key contributions & impact
- Semantic search: Natural-language candidate and job search on OpenAI embeddings in pgvector with HNSW indexes, a similarity floor, cached query vectors, and trigram-indexed keyword paths.
- LLM CV parsing: Reads PDF, DOCX, and image CVs into a structured profile with structured outputs, a retry ladder, stall detection, a parse cache, and per-call cost tracking. It also turns photographed job posters into draft postings.
- WhatsApp AI assistant: Built directly on Meta's Cloud API: a signature-verified webhook with an idempotency ledger, passwordless sign-in, reverse-OTP verification, and a tool-calling LLM assistant for CV intake, job posting, and candidate search.
- Multi-tenant CRM: Isolated each agency's candidate book with one tenancy column and scopes instead of a re-architecture. Bulk CV/ZIP/spreadsheet import with dedupe, pipelines with an append-only audit trail, and document-expiry tracking.
- Metered billing: Per-company contact credits with a consent-based access model, row-locked spending that can't overspend under concurrency, UPI reconciliation, and tiered plans with trials.
- Production: Two Hetzner servers on a private network behind Cloudflare, deployed with Kamal 2 and GitHub Actions, monitored by Sentry with no personal data sent, and backed by ~6,500 automated tests.