---
title: "The weekly assistant shows available places"
canonical: https://www.lime-sportadmin.com/en/blog/weekly-assistant-find-the-empty-spots/
pubDate: 2026-09-02T00:00:00.000Z
author: "David Oude Weernink"
description: "What does your teaching week look like, and where is there still room? Discover how the weekly assistant makes group occupancy easier to see."
category: "Product"
lang: en
---
<!-- translations -->
[nl]: ../../nl/blog/weekassistent-zicht-op-beschikbare-plaatsen.md

<style>
/* Weekly assistant illustration. Self-contained: scoped class names and site
   tokens rather than Tailwind utilities, because content collection markdown is
   not a reliable Tailwind scan target and this project has no MDX integration
   to import a component with. */
.wa, .wa-day {
  --wa-border: color-mix(in srgb, var(--color-dark) 12%, transparent);
  --wa-muted: color-mix(in srgb, var(--color-dark) 55%, white);
  --wa-track: color-mix(in srgb, var(--color-dark) 8%, transparent);
  /* Inter = the product-mockup font (declared in global.css) - this panel is
     simulated product UI, like the hero cards. */
  font-family: 'Inter', system-ui, sans-serif;
  color: var(--color-dark);
}
/* Backdrop card behind the assistant panel - the platform cards' scene
   treatment from the EN home: soft aqua/teal wash on a bordered card. */
.wa-backdrop {
  margin: 2rem 0;
  padding: 48px;
  border: 1px solid color-mix(in srgb, var(--color-dark) 8%, transparent);
  border-radius: 20px;
  background:
    radial-gradient(75% 65% at 50% 30%, color-mix(in srgb, var(--color-aqua) 30%, transparent), transparent 72%),
    radial-gradient(60% 55% at 82% 88%, color-mix(in srgb, var(--color-teal) 16%, transparent), transparent 70%),
    #f8fbfc;
  box-shadow: 0 1px 2px rgba(22, 25, 43, 0.04), 0 8px 24px rgba(22, 25, 43, 0.05);
}
.wa {
  border: 1px solid var(--wa-border);
  border-radius: 14px;
  background: #ffffff;
  padding: 1rem;
  box-shadow: 0 1px 2px rgba(22, 25, 43, 0.05), 0 10px 28px rgba(22, 25, 43, 0.08);
}
.wa__head { display: flex; align-items: flex-start; gap: 0.75rem; }
.wa__mark {
  display: flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; flex: none;
  border-radius: 9px; background: #1d4ed8; color: #facc15;
}
.wa__mark svg { width: 17px; height: 17px; }
.wa__titles { flex: 1; min-width: 0; }
.wa__title { font-weight: 700; line-height: 1.2; }
.wa__sub { font-size: 0.8125rem; color: var(--wa-muted); }
.wa__chevron { flex: none; color: var(--wa-muted); }
.wa__chevron svg { width: 16px; height: 16px; }
.wa__lead { margin-top: 0.85rem; font-size: 0.9375rem; line-height: 1.65; color: var(--wa-muted); }
.wa__lead strong { color: var(--color-dark); font-weight: 600; }
.wa__days {
  margin-top: 1rem;
  display: grid; gap: 0.5rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.wa__day { border: 1px solid var(--wa-border); border-radius: 8px; padding: 0.5rem 0.7rem; }
.wa__dayrow { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }
.wa__dayname { font-size: 0.875rem; font-weight: 600; }
.wa__daynum { font-size: 0.75rem; color: var(--wa-muted); font-variant-numeric: tabular-nums; }
.wa__bar, .wa-bar {
  display: block; margin-top: 0.4rem; height: 7px; width: 100%;
  border-radius: 999px; background: var(--wa-track); overflow: hidden;
}
.wa__bar > span, .wa-bar > span { display: block; height: 100%; border-radius: 999px; background: #16a34a; }
.wa-bar > span.wa-bar--full { background: #4b5563; }

.wa-day { margin: 2rem 0; border: 1px solid var(--wa-border); border-radius: 14px; overflow: hidden; background: white; }
.wa-day__head {
  display: flex; align-items: center; gap: 0.5rem;
  padding: 0.6rem 1rem; border-bottom: 1px solid var(--wa-border);
  background: color-mix(in srgb, var(--color-dark) 3%, white);
}
.wa-day__name { font-size: 0.875rem; font-weight: 700; }
.wa-day__count {
  display: inline-flex; align-items: center; height: 20px; padding: 0 0.5rem;
  border-radius: 999px; font-size: 0.75rem; font-weight: 500; color: var(--wa-muted);
  background: color-mix(in srgb, var(--color-dark) 7%, transparent);
}
.wa-day__meta { margin-left: auto; font-size: 0.75rem; color: var(--wa-muted); }
.wa-row {
  display: flex; align-items: center; gap: 1rem;
  padding: 0.7rem 1rem; border-bottom: 1px solid var(--wa-border);
}
.wa-row:last-child { border-bottom: 0; }
.wa-row__dot { width: 10px; height: 10px; flex: none; border-radius: 999px; }
.wa-row__main { flex: 1; min-width: 0; }
.wa-row__title { display: block; font-size: 0.875rem; font-weight: 500; line-height: 1.3; }
.wa-row__meta { display: block; margin-top: 0.15rem; font-size: 0.75rem; color: var(--wa-muted); }
.wa-row__cap { width: 168px; flex: none; }
.wa-row__caprow { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; font-size: 0.75rem; }
.wa-row__free { color: #15803d; }
.wa-row__full { color: var(--color-dark); }
.wa-row__ratio { font-variant-numeric: tabular-nums; }
.wa-row__pen { flex: none; color: var(--wa-muted); }
.wa-row__pen svg { width: 16px; height: 16px; }

/* Four columns from sm up: Mon-Thu on the first row, Fri-Sun on the second. */
@media (min-width: 640px) { .wa__days { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 720px) {
  .wa-row { flex-wrap: wrap; }
  .wa-row__cap { width: 100%; }
  .wa-row__pen { display: none; }
}
</style>

<div class="wa-backdrop">
<div class="wa">
  <div class="wa__head">
    <span class="wa__mark" aria-hidden="true">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"></path><path d="M20 2v4"></path><path d="M22 4h-4"></path><circle cx="4" cy="20" r="2"></circle></svg>
    </span>
    <div class="wa__titles">
      <div class="wa__title">Weekly assistant</div>
      <div class="wa__sub">Week 37 &middot; Updated just now</div>
    </div>
    <span class="wa__chevron" aria-hidden="true">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m18 15-6-6-6 6"></path></svg>
    </span>
  </div>

  <div class="wa__lead"><strong>87 of 90 places</strong> are filled. There is <strong>1 place</strong> available on <strong>Monday</strong> and <strong>2 places</strong> on <strong>Wednesday</strong>.</div>

  <div class="wa__days">
    <div class="wa__day"><div class="wa__dayrow"><span class="wa__dayname">Mon</span><span class="wa__daynum">7/8</span></div><div class="wa__bar"><span style="width:87.5%"></span></div></div>
    <div class="wa__day"><div class="wa__dayrow"><span class="wa__dayname">Tue</span><span class="wa__daynum">8/8</span></div><div class="wa__bar"><span style="width:100%"></span></div></div>
    <div class="wa__day"><div class="wa__dayrow"><span class="wa__dayname">Wed</span><span class="wa__daynum">32/34</span></div><div class="wa__bar"><span style="width:94.1%"></span></div></div>
    <div class="wa__day"><div class="wa__dayrow"><span class="wa__dayname">Thu</span><span class="wa__daynum">8/8</span></div><div class="wa__bar"><span style="width:100%"></span></div></div>
    <div class="wa__day"><div class="wa__dayrow"><span class="wa__dayname">Fri</span><span class="wa__daynum">16/16</span></div><div class="wa__bar"><span style="width:100%"></span></div></div>
    <div class="wa__day"><div class="wa__dayrow"><span class="wa__dayname">Sat</span><span class="wa__daynum">11/11</span></div><div class="wa__bar"><span style="width:100%"></span></div></div>
    <div class="wa__day"><div class="wa__dayrow"><span class="wa__dayname">Sun</span><span class="wa__daynum">5/5</span></div><div class="wa__bar"><span style="width:100%"></span></div></div>
  </div>
</div>
</div>

Eighty-seven of ninety spots filled is a good week. It is also the kind of number that hides the part worth acting on: the three spots that will stay empty unless somebody notices them today.

That is the whole idea behind the weekly assistant, which now sits at the top of Classes and Lessons.


## What it actually says

Open the week and you get a short read of it in plain language. Not a dashboard to interpret, but a few sentences telling you where you stand:

- how full the week is, as a single number
- which days are already booked out, so you can stop looking at them
- where there is still something to gain, and how many spots that is
- what those open spots are worth if they stay empty for one round

Underneath, every day of the week gets its own bar, so a glance is enough to see that Tuesday through Sunday are done and the gaps are on Monday and Wednesday.

Then you click the day, and it suggests who to put in the spot.

<div class="wa-day">
  <div class="wa-day__head">
    <span class="wa-day__name">Monday</span>
    <span class="wa-day__count">3</span>
    <span class="wa-day__meta">3 lessons &middot; 7/8 participants</span>
  </div>

  <div class="wa-row">
    <span class="wa-row__dot" style="background:#ff6685" aria-hidden="true"></span>
    <span class="wa-row__main">
      <span class="wa-row__title">Fixed price program: Mon 15:00: Pool 1</span>
      <span class="wa-row__meta">15:00 &ndash; 16:30 &middot; Pool 1 &middot; Daan Visser &middot; &euro;120.00 / mo</span>
    </span>
    <span class="wa-row__cap">
      <span class="wa-row__caprow"><span class="wa-row__free">1 available</span><span class="wa-row__ratio">3 / 4</span></span>
      <span class="wa-bar"><span style="width:75%"></span></span>
    </span>
    <span class="wa-row__pen" aria-hidden="true">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 21h8"></path><path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"></path></svg>
    </span>
  </div>

  <div class="wa-row">
    <span class="wa-row__dot" style="background:#a3a3a3" aria-hidden="true"></span>
    <span class="wa-row__main">
      <span class="wa-row__title">Diploma Walrus: Mon 15:00 &ndash; Amsterdam &ndash; Pool 1</span>
      <span class="wa-row__meta">15:00 &ndash; 16:00 &middot; Amsterdam &ndash; Pool 1 &middot; Frida der Visser &middot; &euro;3.00</span>
    </span>
    <span class="wa-row__cap">
      <span class="wa-row__caprow"><span class="wa-row__full">Full</span><span class="wa-row__ratio">2 / 2</span></span>
      <span class="wa-bar"><span class="wa-bar--full" style="width:100%"></span></span>
    </span>
    <span class="wa-row__pen" aria-hidden="true">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 21h8"></path><path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"></path></svg>
    </span>
  </div>

  <div class="wa-row">
    <span class="wa-row__dot" style="background:#0080ff" aria-hidden="true"></span>
    <span class="wa-row__main">
      <span class="wa-row__title">Lesson price program: Mon 19:00: Amsterdam &ndash; Pool 2</span>
      <span class="wa-row__meta">19:30 &ndash; 20:30 &middot; Amsterdam &ndash; Pool 2 &middot; Yara van Zwembad &middot; &euro;25.00</span>
    </span>
    <span class="wa-row__cap">
      <span class="wa-row__caprow"><span class="wa-row__full">Full</span><span class="wa-row__ratio">2 / 2</span></span>
      <span class="wa-bar"><span class="wa-bar--full" style="width:100%"></span></span>
    </span>
    <span class="wa-row__pen" aria-hidden="true">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 21h8"></path><path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"></path></svg>
    </span>
  </div>
</div>

## Why there is money in it

Most planning tools stop at "6 of 8". That is accurate, and it is easy to scroll past for a few weeks in a row.

An open spot is not an abstraction, though. It is a lesson that runs at the same cost with one fewer swimmer in the water. Three of them across a week is roughly a hundred and seventy-five euros of a single round, in a school where the same three gaps quietly repeat all term.

So the assistant says the amount out loud. Not to be dramatic about it, but because a number in euros gets acted on and a fraction usually does not.

## It suggests. You decide

The assistant does not move anyone. When you click a day with an open spot, it puts forward the families on your waiting list who fit that group, that level, and that time, and you take it from there. Approve, skip, pick someone further down the list.

That distinction matters to us. Nobody wants software that reshuffles their groups overnight and tells them afterwards. The job here is to do the part you would have done with a spreadsheet on a Sunday evening, and then get out of the way.

## Where to find it

It is at the top of Classes and Lessons, above the week. It updates as bookings come in, and it collapses if you would rather not look at it. Filter by day, program, location, or instructor and the read follows your filters, so a school running two locations can look at one of them at a time.

## What we are still working on

A few things we know are coming, mostly because schools have asked for them:

- the same read across several weeks, so a pattern is visible before it becomes a term
- a nudge when a group has been under capacity for long enough that it is worth merging
- notifying the suggested family straight from the panel, instead of copying a name into an email

If you run a swim school and have an opinion about any of that, we would rather hear it now than after we have built it. [Get in touch](/en/contact/) and we will set up a short call.

And if you have not seen the rest of Lime Sportadmin yet, [book a demo](/en/contact/) and we will walk through it with your own week in front of us.