How to Run a Client Meeting That Does Not Waste Everyone's Time

by Eric Hanson, Backend Developer at Clean Systems Consulting

Most meetings fail before they start because no one was clear about what needed to be decided. Structure is the difference between a meeting that moves things forward and one that produces another meeting.

The Meeting That Did Not Need to Happen

The most common type of bad meeting is one that should have been an email, a Slack message, or a brief async update. It was called because someone was uncertain, or felt like they needed face time, or defaulted to scheduling a call without thinking through whether the synchronous time was necessary.

Remote contractors who are thoughtful about meetings protect two things: their own time, and the time of clients who have more meetings than they need already.

Before scheduling any meeting, the question worth asking: "Is the value of this conversation better delivered synchronously, or can I accomplish the same thing asynchronously?" If the answer is async, send the message. If you genuinely need back-and-forth, real-time input, or a decision that requires discussion — then the meeting is justified.

The Single Most Important Thing Before Any Meeting

Know what needs to be decided or completed by the end of it.

Not "discuss the integration" — that is a topic. A decision sounds like: "By the end of this call, we need to agree on whether we are building authentication ourselves or using Auth0, and who is responsible for procurement if we go the Auth0 route."

That single sentence changes the entire meeting. It gives every attendee a frame. It makes it clear when you are done. It prevents the meeting from becoming a general conversation that could go anywhere.

A meeting without a stated outcome is a conversation without a purpose. Both parties leave wondering what they accomplished.

Sending an Agenda — Even a Short One

A brief agenda sent before the meeting does several useful things:

  • It forces you to clarify what the meeting is actually for.
  • It gives attendees the chance to prepare, which makes the conversation faster.
  • It signals that you are organized and respect their time.

The agenda does not need to be formal. Three bullet points in a calendar invite is enough:

  • Quick status check on the integration
  • Decision: authentication approach (options attached)
  • Any blockers or questions from client side?

That is a meeting that everyone can prepare for and one that will take 20 minutes instead of 60.

During the Meeting: Who Should Talk

In a client meeting, the contractor's job is to move toward a decision or a clear next step — not to fill the time with demonstrations of effort.

That means:

  • Asking direct questions and waiting for real answers.
  • Not interrupting to add more context when the client is thinking.
  • Summarizing what has been decided so far and confirming it is correct.
  • Being explicit when you need input: "I need your call on this before I can proceed."

The meeting is not a performance. It is a decision-making session, and the contractor who facilitates it efficiently earns respect.

Closing Every Meeting the Same Way

The last two minutes of any effective meeting should do three things:

  1. Confirm the decisions made. "So we've agreed to use Auth0, and you'll get me the procurement process by Wednesday."
  2. Identify who does what next. Action items with owners and timelines.
  3. Confirm the next meeting or check-in point (if needed — sometimes the next touchpoint is a status update, not a meeting).

Follow up with a written summary within a few hours. Not a lengthy minutes document — just a brief email or Slack message that captures the decisions and next steps. This creates a record both parties can refer to.

The written summary prevents 80% of the "that's not what we agreed" conversations. It is worth every minute it takes to write.

A good meeting has a purpose, makes decisions, and ends. Everything else is a status update that should have been an email.

Scale Your Backend - Need an Experienced Backend Developer?

We provide backend engineers who join your team as contractors to help build, improve, and scale your backend systems.

We focus on clean backend design, clear documentation, and systems that remain reliable as products grow. Our goal is to strengthen your team and deliver backend systems that are easy to operate and maintain.

We work from our own development environments and support teams across US, EU, and APAC timezones. Our workflow emphasizes documentation and asynchronous collaboration to keep development efficient and focused.

  • Production Backend Experience. Experience building and maintaining backend systems, APIs, and databases used in production.
  • Scalable Architecture. Design backend systems that stay reliable as your product and traffic grow.
  • Contractor Friendly. Flexible engagement for short projects, long-term support, or extra help during releases.
  • Focus on Backend Reliability. Improve API performance, database stability, and overall backend reliability.
  • Documentation-Driven Development. Development guided by clear documentation so teams stay aligned and work efficiently.
  • Domain-Driven Design. Design backend systems around real business processes and product needs.

Tell us about your project

Our offices

  • Copenhagen
    1 Carlsberg Gate
    1260, København, Denmark
  • Magelang
    12 Jalan Bligo
    56485, Magelang, Indonesia

More articles

Stop Running Every Check on Every Commit

Running the full pipeline on every commit is a default, not a best practice. Selective execution based on what actually changed is one of the most underused techniques for reducing CI cost and developer wait time.

Read more

Amsterdam Backend Salaries Hit €100K. Here Is How Startups Avoid That Overhead

Your next backend hire in Amsterdam will probably cost you six figures before you even factor in the 30% ruling changes and mandatory benefits. That number used to be reserved for staff engineers. Now it's table stakes for anyone decent.

Read more

HashiCorp Vault for Spring Boot Developers — Dynamic Secrets, Leases, and Kubernetes Auth

Vault is more than a secrets store. Dynamic database credentials, transit encryption, and Kubernetes-native authentication change how Spring Boot applications handle secrets — from static credentials in environment variables to short-lived credentials that rotate automatically.

Read more

Hiring Backend Engineers in Copenhagen Means Competing With Danske Bank and Novo Nordisk — or Going Remote

Danske Bank posted the same backend role you did. They offered DKK 15K more per month, a pension you can't match, and a brand your candidate's parents have heard of.

Read more