Online training ~50 employees Administration / Finance

CRM switch without losing 10 years of history: 200,000 contacts saved and faster to search than before

La sfida

When you switch your main business software, the immediate problem is the new system. But years of customer history — every purchase, every note, every label assigned over time — are still needed for sales and compliance. The old software's native export didn't preserve the timing of each label or the relationships between records: thousands of pieces of information would have been lost or made unusable.

La soluzione

An internal lookup portal that imported the full history: 200,000 contacts, over 10 million records, more than 4,000 labels with their original dates. The system returns results in under a second even on complex searches — better performance than the original software. The old system could be shut down safely, with zero operational disruption during the transition.

Risultati

💾

200k contacts + 10M+ records, zero loss

🏷️

4,000+ labels with preserved dates

Search across full history in under one second

Software switch with zero compliance risk

Stack tecnico

  • FastAPI + Python
  • PostgreSQL (GIN trigram full-text index)
  • Keap REST API
  • Jinja2 SSR
  • Nginx + SSL
  • Docker

The risk almost nobody accounts for

When switching business software, everyone focuses on the new system. Historical data gets treated as secondary — “we’ll export everything to Excel and figure it out.” But years of customer labels, purchase dates, sales notes, and history inside a spreadsheet become unusable within months. And recovering them afterward is nearly impossible.

An archive that’s also a tool

The portal isn’t a backup to consult in emergencies — it’s a system the team uses every day. Search a customer, see their complete history, understand what they bought and when. Search returns results in under a second across 10 million records thanks to GIN trigram indexes on PostgreSQL: performance the old software couldn’t come close to. Every label retains the date it was assigned — information the native export would have lost entirely.

Transition without disruption

For three months the portal updated in parallel with the old system, syncing data in real time via the Keap REST API. The team started using it before the old software was shut down. At the moment of switch: everything present, everything working, zero discontinuity.

Got a similar challenge?

Book a call