Wavelength: the Gmail extension, releases and team workflow of a live AI writing coach

Wavelength coaches people on how to write to specific teammates. I took over its Gmail extension, the release path and how the team ships.

Book a call Visit Wavelength

At a glance Live · ongoing
Client
Wavelength
Timeline
Ongoing
Stack
Claude CodeCursorTypeScriptNext.jsNestJSSupabasePrismaChrome MV3JestVercelRailwayLoops
Extension versions 0.2.1 to 0.2.40 38 versions
Extension tests 0 to 243 run on 16 Gmail captures
Environments 3 local, staging, production
A Gmail compose window to a fictional teammate with the Wavelength coaching card open, a suggested rewrite and a Use this button, and the Wavelength button next to Send

What I own.

The system My work The product I work inside

Making the Gmail extension safe to use.

0.2.2

Sessions last through Chrome restarts

The extension signed everyone out about once an hour. It now keeps a session of its own, so you stay signed in through Chrome restarts, and signing out of the website leaves Gmail alone.

Redrawn: the coaching card saying the session has expired and asking you to sign in again Redrawn: the same email with the card showing a rewrite and a ready badge on the button

0.2.3 to 0.2.5

The card and button left the email

The coaching card and its button had been placed inside the message itself, where a draft could save or send them. They now sit on the page, outside your email.

  • The card opens toward the free space and shows one Applied banner
Redrawn: the Wavelength card and button sitting inside the body of the email Redrawn: the card beside the email and the button next to Send

0.2.6 to 0.2.12

Drafts and replies get coached

A reopened draft got no coaching, or a false “Add a recipient” though the recipient was right there.

  • Reopened drafts are coached as soon as they open
  • Replies written at the bottom of a conversation find the recipient
  • The card shows in full in a reply instead of a sliver
Redrawn: a reopened draft to Priya Nair with the card asking to add a recipient Redrawn: the same draft with the card showing a rewrite for Priya Nair

0.2.13 to 0.2.16

Use this keeps your signature and the thread, with Undo

Use this replaced the whole compose box, so your signature and the quoted thread went with it, and there was no undo. Now only your own words change, and Undo keeps ten steps per email.

Redrawn: a reply after Use this with the signature and quoted thread gone Redrawn: the same reply with signature and quoted thread kept and the card showing Applied with Undo

0.2.17 to 0.2.31

A redesigned coaching card

The old card showed no recipient, two Applied banners and unlabelled icons.

  • Buttons carry words, one Applied pill, and the recipient in the header
  • One scroll area, and the card stays open after Use this
  • When Use this cannot apply, the card says why instead of offering a button that did nothing
Redrawn: the old card with no recipient, two Applied banners and unlabelled icons Redrawn: the new card with the recipient, a suggested subject, the rewrite, an Applied pill with Undo and a tip

Tests and data

A test suite built from zero

The extension started with no test suite. The suite runs against captured Gmail markup, and every later fix added tests to it.

  • 16 captured Gmail compose snapshots as fixtures, 149 tests by the end of the week
  • Fictional people in all test data

API

New accounts get a real name

New accounts were named by their email address, so rewrites signed off with one. New accounts now get a real name, and in week 2 a backfill, run as a dry run first, fixed the existing ones.

First Store release, and the founder's headline.

0.2.35 · Chrome Web Store

Version 0.2.35 reaches every user

Version 0.2.35 went to the Chrome Web Store and was approved the same day. Chrome updates everyone within about a day.

  • Use this works after you delete your signature, and on a message with no signature

Website

The homepage headline the founder asked for

The founder chose the line, and I put it live.

Owners get admin rights.

API

Organisation owners count as admins

Organisation owners would have been refused admin actions once organisations were switched on. They now count as admins.

A staging copy and one release path.

Architecture

Three environments

Before this, a fix could only be seen working once it was live. Extension changes are now checked with a test build before release, mostly against staging.

  • Local, for building
  • Staging: a branch preview of the web app and its own API service, on a separate staging database, with fictional seed data
  • Production, for users
  • Release path: staging, checked live, main by pull request, production, then the Chrome Web Store
The Wavelength team page on the staging copy, listing fictional Acme Robotics teammates

Web app

The Coaching page shows who you are writing to

  • Plain-language labels on the Coaching page
  • The profile summary's backup model was a retired one; it now uses the current one
The Wavelength web Coaching page on the staging copy with fictional data, showing a coaching score, the recipient profile and suggested changes

A ready public site, and every open email coached.

Public site

Public site metadata and a branded 404

  • Favicon, home-screen icon and a share image
  • Titles, descriptions and canonical links for every page
  • Robots rules and a sitemap, indexing on production only
  • A branded 404, and www redirects with no certificate warning
The Wavelength share image used in link previews
The branded Wavelength 404 page

0.2.39

Every open email gets its own coach

Only the first open email got suggestions, and its floating button could drift over another email.

  • A button in Gmail's Send row: orange for the email you are typing in, white for the others
  • A red 1 when a suggestion is ready, a ! when something needs you, and a hover label that says which
  • The card stays open while you edit
Redrawn: two open emails with one floating button drifting over the second Redrawn: two open emails, each with its own button next to Send
Redrawn: the Wavelength button in five states with their hover labels: writing a rewrite, rewrite ready, ready in another email, add a recipient, and another open email

0.2.36 to 0.2.40

Rewrites that stay close to your words

A rewrite used to end with its own sign-off above the Gmail signature, so your name appeared twice.

  • Regenerate always starts again from your own draft
  • With a Gmail signature, the rewrite adds no second sign-off
  • Adding or changing the recipient after writing coaches again
  • Only the suggestion for your latest text is shown
Redrawn: a rewrite ending with its own sign-off above the Gmail signature, so the name appears twice Redrawn: the rewrite ending without a sign-off, directly above the Gmail signature

Web app and API

Onboarding events and a working Edit Profile

The founder asked for onboarding emails, and the code side was live within a day. The founder owns the emails and their copy.

  • Onboarding events sent to the onboarding email service
  • Edit Profile opens Settings

Second Store release, and docs checked against the code.

0.2.40 · Chrome Web Store

Version 0.2.40 reaches every user

Version 0.2.40 went to the Chrome Web Store, with 243 extension tests green.

Docs

Every doc checked against the code

I cut the instruction file down to commands, rules and a docs map, and checked every committed doc against the current code.

Rules for a team, and who decides what.

Rules for more than one developer
  • Branches.Feature branches open pull requests against staging, never straight to main.
  • Docs.Docs move with every change, and a fix record is written for each notable fix to live code.
  • One instruction file.Claude Code and Cursor read the same rules, with one home for each fact.
  • One issue at a time.Side findings are logged for later instead of being folded into the fix in hand.
Working with the founder
  • The founder decides.Product decisions are the founder's. Problems reported from user testing go to the front of the queue.
  • Blockers only.I ask about real blockers and settle the rest myself.

The work is ongoing. You can try Wavelength on the web, or install the extension from the Chrome Web Store.

What Wavelength runs on.

Rule-based engine
Scores each draft against the recipient's DISC and Big Five profile on five dimensions, and passes its flags to the model as hints.
Scoring model
Jev, from TypeSafe, scores the draft in a pilot.
Writer model
Writes the suggestions and the rewrite, using OpenAI and Claude.
Evals
A promptfoo eval suite and a 40-draft comparison picked the models and their token limits.