Wave Agency

AI and Technology

We Rebuilt the Melville Chamber of Commerce

A new website, a member platform and two native apps for Long Island's premier chamber. Here is what we built, how the pieces connect, and why a QR code sits at the middle of it.

A chamber of commerce runs on two things: the room, and the list. The room is the breakfast, the after hours, the expo floor. The list is everybody in it. For most chambers the room works and the list does not, because the list lives on a website that was built once, handed over, and never touched again.

The Melville Chamber of Commerce has been putting on the best room on Long Island since 2001. This year they asked us to fix the list. What we built instead was a platform: a new website, a member portal every business runs itself, and native apps for iPhone and Android, all on one codebase and all on Swell, our own agentic platform.

It went live in early September. Here is what is in it.

The Melville Chamber of Commerce home page, with a photograph of members at the annual expo behind the headline Long Island's premier chamber of commerce.
The new melvillechamber.org. The member count in the hero is read from the live directory, not typed into the page.

The Chamber has never had a shortage of good businesses. What we had was a shortage of ways for them to find each other. A member would come to three events, meet forty people, and go home with a stack of cards and no plan. That is the problem we asked Wave to solve, and they solved it in a way I did not expect: not with a bigger directory, with a better one.

Ted Macaluso, Executive Director, Melville Chamber of Commerce

The directory that answers the question people actually ask

Every chamber has a member directory. Almost none of them work, and the reason is not the design. It is that a directory searches the words a member typed, while a visitor types the words in their own head.

We measured it before we changed anything. Twenty-two plain-English questions were run against the old search, the kind a person genuinely types. Eighteen of them returned nothing at all. Not edge cases: “fix my roof” found nothing while a roofing and siding member sat in the directory, and “help me hire staff” found nothing beside four staffing firms. A member had written “Elder Law, Estate Planning, Trusts” and somebody had typed “help with my will”, and no amount of substring matching was ever going to close that gap.

So the member directory now does both. The literal search still runs first, instantly, with no round trip, because a person typing a member’s name must get that member and nothing else. Underneath it, when the literal search comes up short, a semantic index answers in the visitor’s own words and labels its results as suggestions. It never reorders the real search. It fills the silence where the real search had none.

The member directory, showing a search box, category and city filters, 408 members, and a grid of member cards with logos.
More than 400 member businesses across 85 categories and 89 towns. The examples under the search box are real queries the old directory could not answer.

The index is rebuilt from what members write about themselves, which makes the description on a listing the single most valuable field on the site. It is also the reason the portal works hard to get one out of you.

The listing nobody has to write

The honest problem with asking 400 businesses to maintain a profile is that most of them will not. Not out of indifference: writing about your own company is genuinely hard, and the blank field wins.

So the portal offers to write the first draft. One button reads the member’s own website, and proposes a one-line description, an about section, a list of what they offer and their opening hours. The draft appears beside the fields rather than in them. Use the parts you like, edit any of it, ignore the rest, and nothing reaches the public listing until you press save.

Two rules govern it, and both matter more than the feature does. The URL is never taken from the request, only from the member’s own row, so nobody can point it at a site that is not theirs. And if the site has too little text to work from, it says so rather than inventing something. A chamber directory full of plausible fiction would be worse than one full of blanks.

A member listing page for Creations Magazine, with logo, tagline, category tags, a long about section and a contact panel.
Every member gets a real page: melvillechamber.org/member-directory/creations-magazine. Members edit their own, and the change is live immediately.

Introductions, which is the part a chamber is actually for

This is the piece we are proudest of, and it is the one that could not have been built without the rest.

Members write two things in the portal: what they do, and who they want to meet. Both are indexed. An introduction is the intersection of the two, computed in both directions: the members who answer what you need, crossed with the members who need what you do. One list alone is a lead list, and every chamber already has one of those. The overlap is an introduction.

It is deliberately conservative. The database is the authority on who is visible, not the index, so every candidate is re-checked as an active member before it is shown. A business that left the Chamber last month cannot be introduced to anybody by a vector written before they went.

It also has an honest failure mode, and the help copy says it plainly: an empty description means we have nothing to go on and cannot introduce you to anyone. That sentence has done more to get listings filled in than any reminder email would have.

Everything else on the website

The rest is the ordinary work that has to be right or none of the above matters.

  • The member feed. Members post under their own business name: hiring, moving, launching, celebrating. Other members can like it, and a post links back to the listing that wrote it. Only an active listing can speak, so a lapsed business leaves the feed with its membership.
  • Events. The breakfasts, the after hours, the panels and the annual Business Expo. Free registration books a seat on the spot; a paid one books only when Stripe confirms the money landed, and the two paths share one piece of seat arithmetic so they can never disagree about capacity. A confirmation is never taken back. Every event hands out a calendar file and a Google Calendar link.
  • Groups. W.O.M.E.N., the Business Resource Roundtable, Business After Hours and the DEI Town Hall each have their own page and their own run of events.
  • Chamber news. Written by the Chamber, categorized, and carried into both apps.
  • Membership and renewals. Joining, paying, renewing and every receipt run through Stripe in the portal. Members download their own receipts without emailing anybody.
  • Town pages for the places the Chamber serves, a media kit for advertisers, and a brand kit with a Proud Member badge members can paste onto their own site.
  • A help drawer on every page. Not a support inbox: a task-shaped guide that slides in over whatever you are doing, written for the panel you are looking at.
The Chamber calendar page, with the next event, Women Of Melville Empowerment Network, shown beside a large typographic date panel reading September 17.
The Chamber calendar. Paid events check out through Stripe; free ones book instantly.

Two apps, not a wrapper

The Chamber got a real iPhone app and a real Android app. Native SwiftUI and native Jetpack Compose, built screen for screen against the same API the website uses, and both are now in review with Apple and Google.

They are not a website in a shell, and the distinction is not pedantic. A wrapped site cannot read a QR code with the camera, cannot hold a session in the keychain, cannot send a push notification, and gets rejected by Apple for being a wrapped site. Everything below depends on the app being an app.

Three iPhone screens: the app home with the next event and Chamber news, the member feed, and the searchable member directory.
Home, the feed and the directory. The whole directory ships to the phone and is searched on the device, because the moment a member needs to look somebody up is usually the moment they are standing in a building with bad reception.

Reading is public. The feed, the calendar and the directory all work signed out, exactly as they do on the website. Only posting and editing need an account, and where you cannot do something the control is simply absent rather than present and refusing.

Connect: the QR code at the middle of it

Here is the part that changes what happens in the room.

Every member has a contact card at a web address of their own choosing, melvillechamber.org/c/your-name, and every published card has a QR code. On a phone, signed in, there is a button in the site header that fills the screen with your code so somebody can scan it across a table. The app shows the same code on its Connect tab. Print it on a badge, put it on the back of a business card, or just hold up your phone.

A published contact card page on the Chamber site: photograph, name, title, the Wave Agency logo, an Open To Referrals tag, and a panel with book a time, a verified phone number, email, website and social links.
A card is a real page: melvillechamber.org/c/keithtucci. Two switches decide whether the phone number and the email address appear, and off means off on the page, in the download and in what a new contact receives. Anybody can save it as a contact file without holding an account.
Two iPhone screens: the Connect tab showing Keith Tucci's card and QR code above a Scan a member's card button, and a member listing with Save to your contacts.
Left: your card and your code, with the scanner one tap away. Right: a business listing, with its own code and a one-tap save.

What happens next is the design decision the whole feature turns on. Scanning somebody does not take their details. It sends them a request. When they accept, you each receive the other’s phone number and email address and you both appear in each other’s contacts. Until then, nothing moves in either direction, and nobody is ever told that somebody declined: to them the request simply stays open. If you both scan each other, that counts as accepting, and you are connected straight away.

When you ask, the app asks where you met, filled in with today’s Chamber event if there is one. That travels with the request and lands in both contact lists, so a name from the September breakfast still says September breakfast in March.

A business is different, and the difference is deliberate. A person’s card needs their yes. A listing is public, so saving one needs nobody’s consent and nobody is told: it is a bookmark with a notebook attached. Every listing has its own QR code too, sitting at the top of the member’s own portal ready to print for a counter or an expo table. Scan it and a member is offered “save to your contacts” in one tap.

And every saved contact and saved business carries a notes box, tags, a where-you-met field and a follow-up date. None of it is ever shown to the other person, to the business, or to the Chamber. It is your notebook. Set a follow-up and it shows in orange on the contact, in the portal and in the app, so the promise to call next week is visible without opening anything.

It is one list, in both places. Save somebody on your phone at an event and they are on the website when you sit down at your desk.

Everybody has been trying to solve business cards for fifteen years, and they all solve it by taking your details the second somebody points a phone at you. That is not networking, that is a mailing list with extra steps. We built it so a scan is a question, and the details only move when both people say yes. The interesting thing is that it made people more willing to scan, not less.

Keith Tucci, Founder, Wave Agency

One system, not three

The website, the member portal and both apps read and write the same data. Nothing syncs overnight, nothing is kept in step by hand, and there is no spreadsheet behind the scenes that somebody has to remember to update. It all runs on Swell, our own agentic platform.

That is not the interesting part, and it is worth a paragraph only because the interesting part depends on it. The reason a member can fix their listing on a phone at a networking event and have it live on the website before they sit down is that there is one system, rather than three that have to be told about each other.

This is what we mean by agentic. Not a chatbot bolted onto a contact form. The platform reads a member’s website and drafts their listing. It reads every description and answers a visitor who typed something nobody wrote. It crosses what you do against what four hundred other businesses need and proposes the handful of introductions worth making. Agents carry the volume, and people make the calls. That is the whole design, and the Chamber is the clearest example of it we have shipped.

Keith Tucci, Founder, Wave Agency

I have been doing this a long time and I have seen a lot of vendors hand over a website. This was not that. They asked what a member actually does in a week, and then built for that. The morning we went live I had members emailing me about their own listing, which in twenty-five years has never once happened.

Ted Macaluso, Executive Director, Melville Chamber of Commerce

What a chamber can take from this

Three things carry over to anybody running a membership organization, and none of them are about technology.

Search the way people ask, not the way you file. Your categories are your filing system. Nobody outside your office thinks in them. If your directory only answers the words your members typed, most of the people looking for your members will leave without finding one.

Remove the blank field. Every membership platform in the world is half empty because it asks busy people to write about themselves. Draft it for them and let them correct it. Correcting is easy, starting is not.

Make consent the feature. The reason the connect flow works is that it is safe to use. Ask before you take, tell nobody who declined, and keep the notes private forever. People will use a tool that cannot embarrass them.

The Chamber’s new platform is live now. Look around the member directory, see what is coming up, or read about joining.

Wave is a full-service Long Island marketing agency based in Melville, and a Melville Chamber member ourselves. If you run a membership organization, a franchise system or anything else with a directory nobody can search, see Swell, our AI and software work, or book a call.

← Back to The Journal

Work With Wave

Put a good idea to work.

If something here is useful, let's talk about what it would look like for your business. A short call with a senior member of the team.

Book a Call