All write-ups

FitEscala

Live

A company that helps independent gyms in Spain win new members, with the result guaranteed in the contract. I built the lead engine, the landing pages and the CRM it runs on.

My role
Co-founder and technical lead
Year
2026
Built with
Python · Node.js · Express · SQLite · Static HTML · Railway
LEAD ENGINE: PYTHON +SCRAPLINGOUTREACH: AUTOMATED SEQUENCESLANDING PAGES: STATIC HTMLBOOKED CALL OR WHATSAPPCRM: PIPELINE, FOLLOW-UPS,REACTIVATIONLEADSCLICKBOOKEDDELIVERY TRACKEDCITY BY CITY, OSM FALLBACKNO BUILD STEP, INSTANT LOADSGUARANTEE EVENTS TIMESTAMPED

Scroll sideways to see the whole diagram.

ArchitectureLEAD ENGINE → OUTREACH → LANDING PAGE → BOOKED CALL → CRM

The problem

Small gyms and studios live on memberships but rarely have a repeatable way to win new ones. The usual answer is an agency on a monthly retainer with no guarantee. FitEscala sells the result instead: a contract with a member target and money back if we miss it. That only works if every step of delivery is recorded precisely.

How it is built

Four parts, all built in-house. A Python lead engine finds and qualifies studios city by city and exports them for outreach. Static HTML landing pages, with no framework and no build step, turn a click into a booked call or a WhatsApp chat. A multi-tenant CRM (Node, Express and SQLite on Railway) runs the pipeline: a daily call queue, follow-up templates, a weekly reconciliation with the client and daily backups. Every event the guarantee depends on, a booked visit or a sign-up, is timestamped in the CRM, because the contract names that record as the source of truth.

Decisions that mattered

  • Plain HTML for the public pages

    The public sites are plain HTML, CSS and JavaScript. A React prototype was replaced with static files: they load instantly and need no hosting work.

  • The CRM is the contract's record

    Delivery metrics map to specific clauses in the contract, so every visit and sign-up is timestamped. The guarantee is a legal promise, and the data behind it has to hold up.

  • Everything works by hand first

    Every step works with a person pressing send. Each one can be automated later without changing what the client sees.

Where it is now

fitescala.com is live, both founders use the CRM every day, and our first client campaign, with a Pilates studio in Barcelona, has been running since October 2026. Campaign numbers will appear here when a campaign has finished, not before.

  1. 2026.04Company founded with Iván Mieres.
  2. 2026.07Renamed FitEscala. fitescala.com live, CRM in use.
  3. 2026.09First client: a Pilates studio in Barcelona.
  4. 2026.10First campaign running.
Next write-upMalton London Press