New features
Deal org charts
Each deal can now hold an org chart , faces, names, titles, reporting lines , built from the people actually on that deal's emails and meetings, not an account-wide sweep of strangers. Open it from the deal's Files tab. A node is a person: click through to their profile. Reporting lines draw as a tree; other relationships use a different line so you can tell them apart.
Cedar updates the chart as the committee shows up , a new CC, a new attendee, someone saying they'll run it past their VP.
Improvements
- A drafted follow-up posted to Slack now has a Send button. Confirm once and it goes, without opening Cedar
- When chat builds a table, it shows up as something you can open, lands in the deal's Files tab, and coming back to that chat restores the table instead of the deal
- A playbook can now bind to HubSpot Leads, Attio people, or a Salesforce custom object , not only Opportunity/Deal , so earlier pipeline can live in Cedar the same way deals do
- URLs in Slack, LinkedIn, and WhatsApp threads are real links
- The LinkedIn counterpart panel shows role and work history again, instead of a name and a blank
- LinkedIn connection requests Cedar sends no longer include a note unless you asked for one
- Asking Cedar to remind you on a thread now creates a follow-up task. The old reminder type never saved
Fixes
- An email sent from Cedar that failed used to stay on the timeline as if it went out. Failed sends now fail visibly, and closing the tab during undo-send no longer drops the send
- Replies composed from Cedar now stay in the same Gmail thread on the recipient's side instead of opening a new conversation
- Attio and HubSpot "view in CRM" actually opens the record
- Editing a task due date from a deal's Overview, Next Steps, or Timeline no longer throws "Task not found"
- Signing back into Google no longer fails with a confusing state_mismatch when Cedar is slow
- Sorting a date column in a table no longer crashes the grid
- Unlinking an account on a conversation no longer silently drops a linked Lead or Partnership record
- Reconnecting HubSpot no longer wipes a rep's custom field mappings back to org defaults
Behind the scenes
- Prepared Cedar's public MCP server for Claude and OpenAI app-directory submission , tool titles, hints, description length, a support page, and a domain-verification challenge
- Split open-weight model routing across automation tasks. Unblocked a production failure where tool-calling on the Sol path rejected every request, and moved CRM updater, strategist, and next-steps onto Kimi K3 for flagged accounts
- Added a pre-check in front of the email orchestrator so emails that need no action skip the expensive model call, and a flag-gated alternative for playbook selection on internal accounts
- Staff and MCP config writes can now clone a playbook and rewrite the routing text that decides which playbook a new conversation belongs to
- HubSpot OAuth now requests Leads read/write so a Leads-bound playbook can actually sync
- Removed an unused task-group pin feature that no one had ever used, and dropped the reminder task type from the schema to match production
- Ingest no longer records the same outbound email twice (Gmail's mid-send id differs from the committed message)
- Client requests now carry a correlation id, and browser aborts that never hit the server are captured , the gap that made a failed send undiagnosable
- Closed a subject-header injection path and a cross-tenant LinkedIn read that trusted an account id from the request body
- Live-verified Salesforce Lead writes against the real generalized payload; comments that still called that shape an unsaved draft were corrected