Everything that has shipped in Dueted, newest first, with the dates it actually shipped on.
9 – 11 August 2026
Failure states that tell the truth
A failed read no longer renders as an empty result. A list that could not load says so, in red, instead of looking like having no data.
Light is the default theme for everyone. It used to follow the operating system, so a visitor with dark mode on met a dark product without asking for one.
A send stranded by a dead queue job can be listed and requeued from the campaign screen, without touching SQL. A plan that may already have delivered is still listed, with the reason it cannot be retried.
The per-campaign lifetime send ceiling is gone. It had been wired to a per-sweep batching setting, which silently stopped every campaign at its fifth message ever.
Company identity is read from the relational record rather than inferred from research prose, so a researched note can no longer mint a second version of the same company.
Multi-step threaded sending verified end to end against real mailboxes: four recipients, two steps each, exactly one message per recipient and step, every follow-up threaded onto its parent.
7 – 10 August 2026
The audience is a rule, not a list
A campaign now targets an audience rule: scope it to one domain or the whole portfolio, cap it per company, require a verified contact, exclude anything on legal hold.
The rule is re-evaluated daily while a campaign is active, so newly researched contacts join without a re-import. Removing someone writes an exclusion, so rebuilding the list never puts them back.
Approval covers the rule and the copy together rather than a frozen roster of names. Editing either makes the approval stale, and nothing enrols against a stale approval.
The rule and the number of people it reaches are shown before you approve, which is the moment that count actually matters.
Mailboxes can be pinned per campaign, and a mailbox that has stopped sending now says which of the gates stopped it.
A domain is the prospect root it was always modelled as: domain, then company, then contact, with a drill-down through all three and provenance back to the agent run that created a lead.
Contacts hold their own verification and MX check, and unverified research stays unverified instead of being promoted on the way into a send.
4 – 6 August 2026
The interface rebuilt around the work
Navigation is grouped the way the job is: Pipeline, Outbound, Sourcing. Mailboxes became its own area rather than a card buried in settings.
A named type scale and a shared layout vocabulary replaced hundreds of one-off sizes and hand-rolled panels, so screens read as one product instead of a set of pages.
Lead Generation is a workspace of its own: run an agent, watch it work, and keep the full history. Runs used to persist and then be invisible, so closing the tab lost the results.
A run now shows every source it used. The old panel printed the first three and let them stand for all of them.
Sequence steps can be reordered, with the threading rule enforced so a follow-up cannot end up first.
Campaign screens stopped hiding what they knew: how many eligible leads a picker is filtering out, which tabs a draft has not earned yet, and how a campaign reaches completion.
2 – 3 August 2026
Sending infrastructure
Several sending mailboxes, rotated least-recently-used with a race-safe claim so two sends cannot take the same mailbox.
Sending windows, a per-campaign pacing gap, and timezone-aware scheduling. Reaching a limit defers the send to the next window rather than failing it.
Warmup ramps, bounce-rate health scoring, and automatic pausing. A mailbox that crosses the threshold stops and stays stopped until the cause is fixed.
Bounces are detected from delivery-status notifications, so a hard bounce is counted as one rather than read as silence.
The automation worker moved to an external scheduler, and the safety gates were fixed before any of this was allowed to scale.
24 – 31 July 2026
Campaigns, threaded
Multi-step campaigns with idempotent execution plans, an activation boundary, and pause and resume.
Follow-ups send as replies inside the same conversation, resolved against the real message id at send time, so a sequence reads as one thread to the recipient.
Draft, approve, activate and return to draft is repeatable. A campaign that has already mailed someone stays frozen.
Replies are attributed to the right lead by email thread.
A cross-tenant authorization defect was found and fixed: a queued job could claim and send another workspace’s plan, because the tenant check compared against a record that had not been loaded yet.
Refusals now carry a reason rather than a bare failure, so it is possible to tell which safety gate stopped a send.
Dead letters are persisted as an audit trail and stale worker transitions are rejected.
Before July 2026
The foundation
Multi-tenant workspaces with four roles enforced in the database, invites, comments, assignment and an activity trail.
A threaded inbox with reply, reply all and forward, templates, merge variables, an appended signature, attachments and snooze.
Notifications: an in-app bell, per-user preferences, instant and digest email, and native Slack and Discord messages.
A REST API v1 over leads, domains, conversations and messages, with scoped keys stored as hashes, and HMAC-signed webhooks.
AI drafting, lead briefs, price suggestions and pipeline questions, running server-side on a managed model chain.
Buyer research, deal tracking with ask, offer and floor, analytics from the real send log, for-sale pages and a public storefront.
All of it is on right now.
Nothing above is behind a plan or a waitlist. Create a workspace and the whole list is what you get on the first day.