Lead search, qualification and outreach in one workspace, with a person approving every send.

Role
Product, interface system, front end and AI flows.
Studio
Kavaliero
Year
2026
Built with
React, TypeScript, Vite, Tailwind CSS, Node.js, Express, Prisma, PostgreSQL, OpenAI API, Stripe, Puppeteer
Leadesse lead search: keywords, location, radius and AI strictness beside a map of results.

Prospecting usually spills across a map, a spreadsheet, a CRM and a pile of browser tabs. Leadesse keeps the search, the reason a company fits and the next message in one product.

It is a Kavaliero product. I built the platform end to end: sourcing, scoring, sequences, the review queue and billing.

  • 11interface languages
  • 3ways to find an email, tried in order
  • 0 to 100fit score, with a written reason
  • 40API route handlers
Leadesse dashboard: total prospects, active campaigns, pending review and a growth chart.
Captured from the product in demo mode, with mock data.

Finding

  • Search by place

    A query combines keywords, location and radius. Results come from Google Places, are enriched in batches and deduplicated against leads the team already holds.

  • Three ways to an email

    The website is scraped first. If that fails, name and domain patterns are generated and checked by DNS and SMTP. A lookup service is the last resort. The lead records which one worked.

  • A score with a reason

    Each lead gets a fit score from 0 to 100 and a sentence explaining it, so the list can be judged before anyone spends time on outreach.

Lead table with contact details, status and win probability.
Campaign list showing audience size and tone for each sequence.

Sending

  • Sequences in the reader's language

    Multi-step emails are drafted per lead in 11 languages, with tone set per campaign.

  • The draft waits for a person

    Every draft lands in a review queue with the lead, subject and score in view. Approve, edit or reject without leaving the screen.

  • Sent in business hours

    The processor works out the recipient's local time from their location and holds anything outside nine to six.

Review queue: two drafts with approve, edit and reject controls.
The assistant answering a question about which segment to prioritise.

Under the surface

  • Untrusted by default

    Scraped pages are treated as untrusted input in every prompt, and user-supplied URLs pass an SSRF guard before the scraper touches them.

  • A browser pool that sleeps

    Headless Chrome runs at most five scrapes at a time, queues the rest and shuts down after five idle minutes.

  • Teams and billing

    A user is provisioned from the auth token into a personal team inside one transaction. Plans and credits are defined once and enforced through Stripe.

NextKeep scrolling

A Madrid real-estate group's site, fed live by its property-management system and editable string by string.

Role
Lead engineer.
Studio
Authect
Year
2026
Place
Madrid
Built with
Next.js 15, React 19, TypeScript, Tailwind CSS, Drizzle, PostgreSQL, Auth.js, next-intl, Mapbox GL
Live
lukacapital.co
Luka Capital home page over sea cliffs. The headline reads: Your capital deserves an architect.