TL;DR
AutaCHF is a marketplace for Polish buyers importing cars from Switzerland. We built the brand identity from scratch, replaced the original WordPress site with a custom Next.js + Supabase platform, built a fully automated listing pipeline, and now maintain the entire system — 1.7 million listings processed per year, AI-translated content, real-time Telegram monitoring, and the client owning their infrastructure outright.
Client context
AutaCHF connects Polish buyers with Swiss car auctions in one place. The market is niche but active: buyers need real-time access to listings before auctions close, and the price advantage of CHF-denominated vehicles depends on speed and information.
The client had a working WordPress site but had hit a hard ceiling — no control over custom logic, no way to automate what needed to be automated, no visibility into what was happening with listings at scale.
Challenge
WordPress couldn't support the product they needed. Managing hundreds of thousands of listings from multiple sources, deduplicating, translating content on the fly, and surfacing it through a fast mobile-friendly interface — none of that was feasible without building from scratch.
The data scale made it non-trivial: 1.7 million listings processed in a single year, across sources that change structure without warning. Any gap in the pipeline means missed auctions and lost client revenue.
Beyond the tech, the client wanted ownership. Not a hosted product with vendor lock-in — a system they control, on infrastructure they own.
Our approach
We started with the data model and pipeline architecture before writing a line of frontend code. At this scale, getting the storage, deduplication, and update logic right was the foundation everything else sat on.
For the frontend: Next.js App Router + Supabase. Server components for performance, Supabase for auth and real-time data access. Frontend on Vercel, automation pipeline on a dedicated VPS — clean separation, client owns the critical part.
Monitoring was a first-class feature from day one. Every pipeline run reports to a Telegram bot, so the client knows exactly what ran, what failed, and what needs attention — without opening any dashboard.
What we did
Brand identity
Visual identity and logo built from scratch — logotype, graphic mark, color palette, usage guidelines.
Migration from WordPress
Rebuilt the platform from scratch: Next.js (App Router) + Supabase. Custom auth, listing schema, admin panel, contact flows. Existing user base migrated without data loss.
Listing pipeline at scale
Built an automated Node.js pipeline that ingests, deduplicates, and stores listings continuously. Key challenges: handling sources that change structure without notice, deduplication across 1.7M+ records, image processing and storage at volume.
Telegram monitoring
Every pipeline run sends structured results to a Telegram bot — listings found, new vs updated, errors. The client monitors everything in real time without any additional tooling.
Infrastructure ownership
Moved the automation pipeline from Google Cloud to a dedicated VPS the client owns outright. Lower ongoing cost, no cloud vendor dependency, full control.
Admin panel
Built and extended over multiple iterations: live price ranges per offer, bulk listing management, direct source links, user management, currency calculator, mobile settings.
Multilingual platform
Full PL/EN multilingualism — interface translated, static content localized, listings translated on demand via GPT-4o mini and cached. Launched as a second related portal (PojazdyCH) with automatic listing cross-posting.
Results
Lesson learned
At 1.7M listings a year, the boring parts matter most — deduplication logic, error handling, monitoring. The Telegram bot wasn't a nice-to-have: it's the reason we catch pipeline failures in minutes instead of discovering them the next day. Build observability before you need it.
Working on a similar project?
Get in touch