Skip to content

Camps

One record for every camper

582 camp sign-ups resolved to 425 people, with attendance, spend, and loyalty calculated on each record.

Airtable

01

The problem

A recurring tennis camp kept years of participant history in spreadsheet exports. The same person was logged more than once under slightly different name spellings. There was no reliable answer for how many unique people had attended, who the repeat guests were, or what each person had spent.

02

What we built

A relational Airtable CRM. One Participants record per person. One Participations record per camp attended. Loyalty status calculated from the camp count. A File Uploads table ready for the next roster.

03

How it works

Raw rows are matched on a normalised email and name, so each person keeps a single record. That record rolls up camps attended, lifetime spend, first camp date, and most recent camp date. Each booking stays linked underneath, with camp name, dates, cost, and city. A possible-duplicate flag catches later collisions. Loyalty status, including Frequent Guest, is a formula, not a tag someone maintains by hand.

04

Outcome

582 sign-ups became 425 unique participants. No duplicate records were flagged on the imported set. The history covers about 2.25 years, from March 2021 to June 2023, across camps in Warsaw, Gdynia, Łódź, Poznań, Wrocław, Gdańsk, and other cities. The most frequent attendee has 7 recorded visits. This build is the clean history and the loyalty score. It is not a live booking or payments desk.

Want something similar?

Book an audit and describe the workflow that is straining. We will say honestly if a build like this fits.