Reverse engineering study · Updated 2026-10-16 · Environment L3 · Phase 7 Close

RES · Reverse Engineering SaaS

Pipedrive

Document Pipedrive's deals pipeline, activities and won/lost flows well enough that a team that never used it can rebuild them, and list what would stop a sellable CRM clone from launching

Pipedrive, documented from the outside: 4 screens, 8 components, 4 user flows and 46 business rules, each tied to evidence.

  1. Covered. pipeline board, deal detail, activities and the next-activity rule, won, lost, deal creation, pipeline editor, deletion (F-001 to F-009): 46 rules, 4 screens, 8 components, 4 flows, 10 entities, 15 production barriers for a Brazilian SMB clone.
  2. Not covered. email and calendar sync, WhatsApp and e-signature (connecting them reaches people, A5: public sources only), company settings (A4, read only, not exercised), anything that needs a second user, the activities list beyond its toolbar.
  3. Decide. get counsel's view on Pipedrive's terms before building on this study (BR-001), and create a trial account (L1) to answer Q-001 to Q-009.
17
features
4
screens
8
components
4
user flows
46
business rules
10
entities
15
launch items
63
evidence files

01Overview

What needs your decision, how far the study went, and what comes next.

i

If you are an AI agent

Do not build from this page: it is generated for people. Open BUILD.md in this folder and follow its read order. The Markdown files next to it are the source of truth.

!
Needs your decision
  • Pipedrive Terms s.4.1 forbid reverse engineering and using the service to build a competing product (SRC-031). Decide with counsel whether this study may be used (BR-001, Q-010).
  • Create a dedicated trial account (L1) in a separate browser profile, with a second user, for permissions, realtime and notifications (Q-006, Q-009) and for the integrations (F-013 to F-016) with test mailboxes and calendars you own.
  • Check by hand whether the first click on Won, Lost and item menus is ignored in a focused window (Q-001).
×
Blocked
  • F-013 Email sync, F-014 Calendar sync, F-015 WhatsApp, F-016 E-signature: connecting accounts or sending documents is A5. Needs L1 with the user's own test accounts.
  • F-017 Company settings: A4 at L3; read only, not exercised.
  • F-012 Visibility as seen by other users: needs a second user (L1).

How far the study went: 48% of checks done

61 done29 partial34 blocked4 todo

Next actions

  1. In an L1 trial with two users: answer Q-001 to Q-009 (first-click behavior, restore of activities, free-form lost reasons, visibility for another user, realtime).
  2. Study the deal list view, the forecast view, card customization and drag-to-close (Not tested items of S-001) in L1.
  3. Start the month-one barriers from clone/prd.md: BR-007, BR-009, BR-005, BR-002.

02What the product does

Every feature found, its plan and priority, the screens it lives on, and how deeply each one was studied.

Priority: P1 named by the user, P2 core loop, P3 data model completeness, P4 collaboration, P5 admin and settings.

IDAreaFeaturePlanPriorityScreensBarriersStatusSource
F-001DealsPipeline board: stage columns, deal cards, activity status icons, default sort, weighted totals, rotting, drag targetsAll plansP1S-001BR-014done[obs EV-010] [doc SRC-001]
F-002DealsDeal detail view: header, stage bar, summary, composer, Focus, HistoryAll plansP1S-002BR-014done[obs EV-027] [doc SRC-007]
F-003ActivitiesActivity form, card popover, mark as done, day agendaAll plansP1S-001, S-002BR-003, BR-004done[obs EV-019] [doc SRC-008]
F-004ActivitiesSchedule-next-activity rule (prompt when the last open activity is done)All plans; disabling it is plan-gatedP1S-001, S-002nonedone[obs EV-022] [doc SRC-010]
F-005DealsWon flow: mark won, celebration and follow-up prompt, reopenAll plansP1S-002nonedone[obs EV-034]
F-006DealsLost flow: lost reason, comment as note, reopenAll plansP1S-002nonedone[obs EV-042] [doc SRC-011]
F-007DealsAdd deal form and its validationAll plansP2S-001nonedone[obs EV-050]
F-008DealsPipeline editor: stages, probabilities, rotting, delete stageAll plans; admins onlyP2S-003nonedone[obs EV-008] [doc SRC-004]
F-009DataDeleting deals, activities, notes, pipelines and organizations; 30-day restoreAll plansP2S-002, S-003, S-005nonepartial[obs EV-046] [doc SRC-015]
F-010ActivitiesActivities list view (toolbar, period tabs, type filter)All plansP2S-004nonepartial[obs EV-056]
F-011InterfaceQuick add menu and keyboard shortcutsAll plansP3S-001nonepartial[obs EV-055] [doc SRC-016]
F-012PermissionsItem visibility levels and visibility groupsGroups on Premium and UltimateP4S-001BR-013partial[obs EV-052] [doc SRC-041]
F-013IntegrationsEmail sync (Gmail, Microsoft 365, IMAP)Growth and upP5none studiedBR-002, BR-004, BR-012blocked[doc SRC-036]
F-014IntegrationsCalendar sync and activity invitesPaid plansP5none studiedBR-003, BR-004blocked[doc SRC-037] [doc SRC-009]
F-015IntegrationsWhatsApp through Meta's Business PlatformGrowth and upP5none studiedBR-005blocked[doc SRC-038]
F-016DocumentsSmart Docs e-signaturePremium and Ultimate, add-on belowP5none studiedBR-006blocked[doc SRC-039]
F-017SettingsCompany activity settings (won follow-up prompt), lost reasons, automationsAutomations from GrowthP5S-006nonepartial[doc SRC-010] [doc SRC-012]

Screen catalog

IDScreenURL patternEntry pointsFeaturesFile
S-001Pipeline board/pipeline/:id/user/everyone (/deals-default redirects to the last viewed pipeline)Sidebar > DealsF-001, F-003, F-004, F-007, F-011, F-012screens/S-001-pipeline-board.md
S-002Deal detail/deal/:idClick a card title; toast "View" after creating a dealF-002, F-003, F-004, F-005, F-006, F-009screens/S-002-deal-detail.md
S-003Pipeline editor/pipeline/:id/add (new), /pipeline/:id/edit (existing)Pipeline selector > New pipeline; pencil button on the boardF-008, F-009screens/S-003-pipeline-editor.md
S-004Activities list/activities/list/user/:idSidebar > ActivitiesF-010screens/S-004-activities-list.md
S-005Organization detail/organization/:idOrganization link on a card or dealF-009none (only its delete dialog was studied)
S-006Settings: activities, lost reasons, restore data/settings/activity_settings, /settings/company-settings/lost-reasons, /settings/restoreAccount menu > Company settings; Tools and appsF-009, F-017none (read only, company configuration)
Coverage by feature which parts of each feature were checked

Values: todo, partial, done, blocked, n/a. The work queue is this table, top to bottom.

FeatureAnatomyStatesInteractionsRulesDataNetworkKeyboard and a11yPersistenceDesignNotes
F-001 Pipeline boarddonedonepartialdonedonepartialpartialpartialdoneDrag did not complete (drop zones only); card customization and filters not opened; sort persistence not changed (shared preference)
F-002 Deal detaildonedonepartialdonedonedonepartialpartialpartialComposer tabs other than Activity not opened; Changelog tab not opened
F-003 ActivitiesdonedonedonedonedonedonepartialdonepartialGuests, location, video call and recurrence not tested (would reach people or need sync)
F-004 Next-activity ruledonedonedonedonedonedonen/adonedoneFrom the Activities list and calendar not tested
F-005 Won flowdonedonedonedonedonepartialn/adonedoneWon dropdown (create project) not opened; drag to Won not completed
F-006 Lost flowdonedonedonedonedonedonen/adonedoneFree-form reason never offered (Q-003)
F-007 Add deal formdonedonedonedonedonedonepartialdonepartialPerson creation and custom fields not exercised (company fields)
F-008 Pipeline editordonedonepartialdonedonen/an/adonepartialStage reorder by drag and duplicate pipeline not tested
F-009 Delete and restorepartialdonedonedonedonedonen/adonen/aRestore itself not exercised; Restore data read only
F-010 Activities listpartialpartialtodopartialn/atodotodotodopartialRows show production data: only the toolbar was captured
F-011 Quick add and shortcutsdonen/apartialdonen/an/apartialn/an/aShortcut keys not pressed (focus could hit production records)
F-012 Visibilitypartialn/apartialpartialdonen/an/ablockedn/aEffect on other users needs a second account (L1)
F-013 Email syncblockedblockedblockedblockedpartialblockedblockedblockedblockedConnecting a mailbox is A5; documented from public sources
F-014 Calendar syncblockedblockedblockedblockedpartialblockedblockedblockedblockedSync was inactive and stays so (A5); public sources only
F-015 WhatsAppblockedblockedblockedblockedn/ablockedblockedblockedblockedConnecting is A5; public sources only
F-016 E-signatureblockedblockedblockedblockedn/ablockedblockedblockedblockedSending a document reaches signers (A5); public sources only
F-017 Company settingspartialn/ablockedpartialn/an/an/an/an/aA4: read only, not exercised

03Screens

Each screen with its annotated anatomy, the screenshots taken of it, and the states it can be in. Click a picture to enlarge it.

S-001

Pipeline board

FeaturesF-001, F-003, F-004, F-007, F-011, F-012URL/pipeline/:id/user/everyoneStatusdone

The seller's daily work queue. One column per stage of the selected pipeline, one card per open deal, and on each card an icon that says whether the deal has a next step and when it is due. The default order puts what needs action today at the top of every column.

EV-011 Board anatomy with numbered regions (annotate.js)

Anatomy

  1. 1
    Board viewToolbar, quick-filter bar and stage columns
  2. 2
    Add deal split button C-007"+ Deal" opens the Add deal form; the arrow opens more create options
  3. 3
    Deal count"N deals" with an info icon whose tooltip is "Show deals total value"
  4. 4
    Pipeline selectorPipeline name with menu: other pipelines, Reorder pipelines, Pipeline visibility, Customize deal cards, Pipeline layout settings, New pipeline
  5. 5
    Edit pipelinePencil button that opens the pipeline editor (S-003)
  6. 6
    FilterSaved filters and users
  7. 7
    Quick filter bar"Add condition"
  8. 8
    SortDirection arrow and "Sort by: Next activity" menu; "Show closed deals" link to its left
  9. 9
    Stage headerStage name, weighted value total (balance icon), deal count; chevron shape between columns
  10. 10
    Deal card C-001Title, organization or person, owner avatar, value, rotting badge
  11. 11
    Activity status icon C-002One of four states; click opens a popover

More from this screen 19 screenshots

EV-049 Add deal form: core fields column (cropped)
EV-017 Tooltip of the info icon next to the deal count
EV-026 Sort menu (14 options; Next activity default) and the board re-sorted after reload
EV-010 Sandbox board: four activity states; rotting card; weighted stage totals; default sort
EV-012 Tooltip of the red overdue icon
EV-016 Rotting badge and its tooltip
Show 13 more
EV-053 Deal created from the form: toast with View; card on top of its stage with a NEW badge
EV-013 Tooltip of the yellow no-activity icon
EV-014 Tooltip of the grey upcoming icon
EV-015 Tooltip of the green today icon
EV-018 Popover of the no-activity icon
EV-019 Popover of a deal with three open activities (relative dates; done circles)
EV-020 Marking one of three activities done: strike-through; toast; no modal; icon turns grey; badge 29 to 28
EV-022 Schedule your next activity modal (form and day agenda)
EV-054 Dragging a card shows four drop zones at the bottom: Delete; Lost; Won; Move to
EV-003 New pipeline editor with its 5 default stages (100% each) and the Deal probability toggle on
EV-055 Quick add menu with one-key shortcuts
EV-024 After Cancel: the deal shows the yellow no-activity icon; board not re-sorted until reload
EV-021 Marking the last open activity done: toast and modal skeleton while loading

States

EmptyEmpty column with header "R$ 0"; "+" appears on column hover
LoadingToolbar first, cards after; the pipeline selector fills in last
TypicalMixed icons and values
Long textWraps to three lines; no truncation
RottingPink card and red "<1d" badge
New dealCard at the top of the stage with a NEW badge until reload

Not reached: Many items, Error, No permission, Plan-gated

Full screen notes entry points, data shown, interactions, keyboard and accessibility, microcopy, rules, realtime and performance, responsive, not tested

Entry points

  • Sidebar > Deals. /deals-default redirects to the last viewed pipeline [obs EV-001].
  • The pipeline selector in the toolbar switches pipelines [obs EV-011].

Data shown

ElementEntity.fieldEvidence
Card titleE-001 Deal.title[obs EV-010]
Card second lineE-005 Organization.name (or the person's name)[obs EV-010]
Card valueE-001 Deal.value and currency, formatted R$ 1.234.567,89[obs EV-010]
Activity status iconearliest open E-002 Activity of the deal (due_date, due_time)[obs EV-010] [net EV-025]
Rotting badge "<1d"E-004 Stage.days_to_rotten against time in stage[obs EV-016]
Stage header totalΣ Deal.value × Stage.deal_probability ÷ 100[obs EV-010]
Deal countopen deals in the pipeline[obs EV-053]

Interactions

TriggerResultRequestPersistence scopeEvidence
Hover a status iconTooltip: "View overdue activity", "View activity scheduled for today", "View upcoming activity" or "Schedule an activity"nonenone[obs EV-012] [obs EV-013] [obs EV-014] [obs EV-015]
Click a status iconPopover with open activities or "You have no activities scheduled for this deal"GET /api/v1/deals/:id/activitiesnone[obs EV-018] [obs EV-019] [net EV-025]
Click a done circle in the popoverActivity done; toast; maybe the next-activity modalPUT /api/v1/activities/:idaccount[obs EV-020] [obs EV-022] [net EV-025]
Drag a cardFour drop zones appear at the bottom: Delete, Lost, Won, Move tonone seen (drop not completed)none[obs EV-054]
Open the sort menu14 options, "Next activity (default)" checkednoneuser (not changed)[obs EV-026]
Click "+ Deal"Add deal formsee C-007none[obs EV-049]
Pipeline selector > New pipelinePipeline editor with defaultsnone until savecompany[obs EV-003]

Keyboard and accessibility

CheckResultEvidence
Tab ordernot testednone
Arrow keysnot testednone
ShortcutsQuick add "+" with one-key shortcuts (C-007 for deals)[obs EV-055] [doc SRC-016]
Focus visiblenot testednone
EscapeCloses popovers and menus[obs EV-019]
Unlabeled controlsSeveral ghost buttons and the modal backdrops have no accessible name[obs EV-001]

Microcopy

ElementTextEvidence
Overdue icon tooltipView overdue activity[obs EV-012]
No-activity icon tooltipSchedule an activity[obs EV-013]
Future icon tooltipView upcoming activity[obs EV-014]
Today icon tooltipView activity scheduled for today[obs EV-015]
Rotting badge tooltipNo actions for <1 days[obs EV-016]
No-activity popoverYou have no activities scheduled for this deal / + Schedule an activity[obs EV-018]
Done toastActivity marked as done (subject)[obs EV-020]
Create toastNew deal "title" created · View[obs EV-053]

Rules

Realtime and performance

CheckResultEvidence
A change in a second tab appears without reloadnot testednone
Loading pattern (skeleton, spinner, optimistic update)Status icon and order update in place after a popover action; the column order waits for a reload[obs EV-020] [obs EV-024]
Delays the user seesThe next-activity modal shows a skeleton for 2 to 3 seconds[obs EV-021]

Responsive

WidthChangeEvidence
1710 CSS pxFour columns fit without horizontal scroll[obs EV-010]
Other widthsnot tested (the user's own window was not resized)none

Not tested

  • Completing a drag (move, won, lost, delete): the automated drag showed the drop zones but did not drop.
  • Card customization, filters, "Show closed deals" and changing the sort: these persist for the user and were left alone.
  • List, forecast and archive views of the pipeline.
  • Realtime updates from another user (needs L1 with a second account).
  • Widths other than 1710 px.
S-002

Deal detail

FeaturesF-002, F-003, F-004, F-005, F-006, F-009URL/deal/:idStatusdone

Everything about one deal: its stage, its status, its contacts and fields on the left, and on the right the composer, the Focus block (what to do next) and the History timeline. Closing the deal (Won, Lost) and reopening happen here.

EV-027 Deal detail anatomy: header; stage bar; summary; composer tabs; Focus; History

Anatomy

  1. 1
    HeaderTitle; owner (avatar, name, "Owner"); followers ("1 follower" menu); Won split button; Lost; layout button; "..." menu
  2. 2
    Stage bar C-006One chevron per stage with "N days · stage name"; current and past stages green; future grey; "Create project"
  3. 3
    BreadcrumbPipeline > stage
  4. 4
    SummaryValue; Products; empty fields as links: "Set deal probability", "+ Person", "Add labels", "Set expected close date", "Add sequence", "+ Project"; organization link; expected close date when set
  5. 5
    DetailsTip banners, then custom fields; after closing: Won time or Lost time and Lost reason
  6. 6
    ComposerTabs: Activity, Notes, Meeting scheduler, Call, WhatsApp, Email, Files, Documents, Invoice; "Click here to add an activity..."
  7. 7
    Focus C-003Open activities (type icon, done circle, subject, relative date, owner, organization, "..." menu) and pinned notes; "Expand all items" toggle
  8. 8
    HistoryFilters: All, Activities (n), Notes (n), WhatsApp, Emails, Files, Documents, Invoices, Changelog; timeline of done activities, notes and changes

More from this screen 17 screenshots

EV-010 Sandbox board: four activity states; rotting card; weighted stage totals; default sort
EV-053 Deal created from the form: toast with View; card on top of its stage with a NEW badge
EV-044 Deal more-actions menu
EV-028 Stage bar tooltip of the current stage (time in stage)
EV-029 Stage bar tooltip of a stage the deal has not reached
EV-038 Mark as Lost dialog
Show 11 more
EV-035 Won state: WON badge; Reopen; light stage bar; open activity still in Focus; Won time field
EV-042 Lost state: LOST badge; Reopen; light red stage bar; comment saved as a pinned note; activity still open
EV-057 Deal page Focus with a red OVERDUE badge on an activity due yesterday
EV-030 After saving the next activity from the modal: toast; Focus shows the new activity; History shows the done one
EV-058 Deal page Focus empty state after the last activity is done
EV-046 Deleted deal page: banner with permanent deletion date; DELETED badge; Restore; open activity still listed
EV-032 Stage moved by one click on the stage bar; Recommended first automation banner
EV-034 Won modal: celebration; deal card; close time; activities done; What's next choices
EV-037 Deal reopened: Won and Lost buttons back; stage bar dark
EV-045 Delete deal confirmation: lists notes; files; documents; invoices; not activities; 30-day restore
EV-048 Delete activity confirmation on a deleted deal

States

EmptyFocus: "No focus items yet. Scheduled activities, pinned notes, email drafts and scheduled emails will appear here." and "+ Schedule an activity"
LoadingHeader and sidebar render before Focus
TypicalFocus shows it with a relative date
OverdueRed OVERDUE badge and red "Yesterday at 10:00"
WonWON badge, Reopen, light green stage bar, green "Create project", Won time in Details
LostLOST badge, Reopen, light red stage bar, Lost time and reason, comment as pinned note
DeletedYellow banner with the permanent deletion date; DELETED badge; Restore; grey stage bar; composer locked: "Can't add activities to a deleted deal. Restore the deal to add activities."
No permissionneeds a second user

Not reached: Plan-gated

Full screen notes entry points, data shown, interactions, keyboard and accessibility, microcopy, rules, realtime and performance, responsive, not tested

Entry points

  • Click a card title on the board [obs EV-010].
  • "View" in the toast after creating a deal [obs EV-053].

Data shown

ElementEntity.fieldEvidence
Stage barE-003 Pipeline stages; E-001 Deal.stage_id, stage_change_time[obs EV-028] [net EV-033]
ValueE-001 Deal.value, currency[obs EV-027]
Expected close dateE-001 Deal.expected_close_date, long date format 10 de outubro de 2026[obs EV-027]
Focus itemsopen E-002 Activity rows and pinned E-007 Note rows[obs EV-042]
Historydone activities, notes, status changes, "Deal created"[obs EV-030]
Won time, Lost time, Lost reasonE-001 Deal.won_time, lost_time, lost_reason[obs EV-035] [obs EV-042]

Interactions

TriggerResultRequestPersistence scopeEvidence
Click a later stage in the stage barDeal moves at once; "Recommended first automation" banner may appearGET .../missingRequiredFields, PUT /api/v1/deals/:idcompany[obs EV-032] [net EV-033]
Hover a stage"Stage · Been here for N minutes" or "This deal has not been in this stage yet"nonenone[obs EV-028] [obs EV-029]
Click the done circle in FocusActivity done; prompt if it was the last open onePUT /api/v1/activities/:idcompany[obs EV-030] [net EV-031]
Click WonStatus won; celebration modal after about 4 secondsPUT /api/v1/deals/:idcompany[obs EV-034] [obs EV-035]
Click LostMark as Lost dialogsee C-005company[obs EV-038]
Click ReopenStatus open again, at oncePUT /api/v1/deals/:id with statuscompany[obs EV-037] [net EV-063]
"..." menuDuplicate, Merge, Export as XLSX, Convert to a lead, Report inaccurate details, Archive (NEW), Delete, Manage sidebar sectionsnonenone[obs EV-044]
"..." > DeleteConfirmation, then the deleted stateDELETE /api/v1/deals/:idcompany, 30-day restore[obs EV-045] [net EV-047]
Focus item "..."Edit, Mark as done, Export as ICS, Deletenonenone[obs EV-048]
Followers menuThe followers (operator only), "Add a follower", "Stop following"nonenone[obs EV-027]

Keyboard and accessibility

CheckResultEvidence
Tab ordernot testednone
Arrow keysnot testednone
Shortcutsnone testednone
Focus visibleThe "..." button shows a focus ring after a click[obs EV-058]
EscapeCloses menus and the followers list[obs EV-044]
Unlabeled controlsItem menus are labeled "More actions"[net EV-025]

Microcopy

ElementTextEvidence
Focus empty stateNo focus items yet. Scheduled activities, pinned notes, email drafts and scheduled emails will appear here.[obs EV-058]
Current stage tooltipBeen here for 10 minutes[obs EV-028]
Future stage tooltipThis deal has not been in this stage yet[obs EV-029]
Automation bannerRecommended first automation · Automatically add an activity when deals reach this stage[obs EV-032]
Deleted bannerYour deal will be deleted permanently after (date). If needed, export the data before that.[obs EV-046]
Locked composerCan't add activities to a deleted deal. Restore the deal to add activities.[obs EV-046]

Rules

Realtime and performance

CheckResultEvidence
A change in a second tab appears without reloadnot testednone
Loading pattern (skeleton, spinner, optimistic update)Focus and History update in place after an action; the "Notes (n)" counter stayed at 1 after deleting the note until reload[obs EV-042]
Delays the user seesThe won modal appears about 4 seconds after the click, after two report calls[obs EV-034]

Responsive

WidthChangeEvidence
1710 CSS pxTwo columns (sidebar about one third)[obs EV-027]
Other widthsnot testednone

Not tested

  • Composer tabs other than Activity (notes would create records; email and WhatsApp reach people).
  • Changelog tab, products, labels, sequences, projects and the layout switcher.
  • Editing fields inline in Summary and Details.
  • Adding a follower or a person (reaches or involves real people).
  • Restore from the deleted state.
S-003

Pipeline editor

FeaturesF-008, F-009URL/pipeline/:id/add (new), /pipeline/:id/edit (existing)Statusdone

Create or change a pipeline in place, on top of the board: its name, whether deal-level probability is allowed, and per stage the name, the win probability and the rotting period. Deleting a pipeline or a stage starts here.

EV-008 Sandbox pipeline editor filled: 4 stages; probabilities 10/25/50/80; rotting 0 days on stage 2

Anatomy

  1. 1
    Top bar"Pipeline name" input; "Deal probability" toggle with info tooltip; Cancel; Save changes; "..." menu (Duplicate pipeline, Delete pipeline) on an existing pipeline
  2. 2
    Stage columnHeader with name, probability and rotting summary ("25% · 0 days"); drag handle; Name; Probability with tooltip; "Rotting in (days)" toggle and number; "Delete Stage" at the bottom
  3. 3
    Insert buttons"+" between columns to add a stage there
  4. 4
    Add new stageRight panel: "Pipeline stages represent the steps in your sales process" and "+ New stage"

More from this screen 8 screenshots

EV-003 New pipeline editor with its 5 default stages (100% each) and the Deal probability toggle on
EV-011 Board anatomy with numbered regions (annotate.js)
EV-004 Tooltip of the pipeline-level Deal probability toggle
EV-005 Tooltip of the stage Probability field
EV-006 Tooltip of the stage Rotting toggle
EV-007 Confirmation dialog when deleting an empty stage in the editor
Show 2 more
EV-060 Delete pipeline dialog with the default Move deals option
EV-061 Delete pipeline dialog with Delete deals selected and its warning

States

EmptyName "New pipeline"; five stages Qualified, Contact Made, Demo Scheduled, Proposal Made, Negotiations Started, each 100%, rotting off; deal probability on
TypicalFour stages 10/25/50/80%, rotting 0 days on one

Not reached: Loading, Many items, Long text, Error, No permission, Plan-gated

Full screen notes entry points, data shown, interactions, keyboard and accessibility, microcopy, rules, realtime and performance, responsive, not tested

Entry points

  • Pipeline selector > "+ New pipeline" opens a new pipeline with default stages [obs EV-003].
  • The pencil button on the board opens the current pipeline [obs EV-011].

Data shown

ElementEntity.fieldEvidence
Pipeline nameE-003 Pipeline.name[net EV-009]
Deal probability toggleE-003 Pipeline.is_deal_probability_enabled[net EV-009]
Stage name, probabilityE-004 Stage.name, deal_probability[net EV-009]
RottingE-004 Stage.is_deal_rot_enabled, days_to_rotten[net EV-009]

Interactions

TriggerResultRequestPersistence scopeEvidence
Turn rotting onA number field appears with 0; header shows "🔔 0 days"none until savecompany[obs EV-008]
Delete Stage on an empty stageDialog "Delete (stage) stage · There are no deals in this stage right now." Cancel / Delete stagenone until savecompany[obs EV-007]
Save changes on a new pipelinePipeline created; the board returns to the pipeline viewed beforenot capturedcompany[inf] Q-004
"..." > Delete pipelineDialog asks what to do with the N deals; see C-008not capturedcompany[obs EV-060] [obs EV-061]

Keyboard and accessibility

CheckResultEvidence
Tab ordernot testednone
Arrow keysnot testednone
Shortcutsnonenone
Focus visibleInputs show a blue focus ring[obs EV-003]
Escapenot testednone
Unlabeled controlsnot checkednone

Microcopy

ElementTextEvidence
Deal probability tooltipWhen enabled in a chosen pipeline, you'll be able to configure individual Deal probability. This type of probability overrides stage probability...[obs EV-004]
Stage probability tooltipThis represents your confidence in winning a deal by the expected close date... The default probability for each stage is 100%...[obs EV-005]
Rotting tooltipRotting feature · Deal rotting alerts you to inactive deals by coloring them red. Set the rotting period here.[obs EV-006]

Rules

Realtime and performance

CheckResultEvidence
A change in a second tab appears without reloadnot testednone
Loading pattern (skeleton, spinner, optimistic update)The editor replaces the board in place[obs EV-003]
Delays the user seesnone noticednone

Responsive

WidthChangeEvidence
1710 CSS pxFour stage columns and the add panel fit[obs EV-008]

Not tested

  • Reordering stages by drag, inserting a stage with "+", duplicating a pipeline.
  • Validation of empty names and out-of-range probabilities.
  • Deleting a stage that has deals (the docs say its deals are deleted).
  • Pipeline visibility settings (company configuration, A4).
S-004

Activities list

FeaturesF-010URL/activities/list/user/:idStatusdraft

A table of the user's activities across deals, filtered by period and type. Only the toolbar was studied: the rows are the team's real work.

EV-056 Activities list toolbar: type filter; period tabs; count; columns (rows blurred)

Anatomy

  1. 1
    View switchList and calendar icons
  2. 2
    Create C-003"+ Activity" split button; "Meeting scheduler" menu
  3. 3
    CountRefresh icon, "N activities", info icon
  4. 4
    Owner filterFilter chip with the current user and a clear button
  5. 5
    Type filter"All" and one icon per active activity type
  6. 6
    Period tabsTo-do (selected by default), Overdue, Today, Tomorrow, This week, Next week, Select period
  7. 7
    TableColumns Done, Subject, Deal, Priority, Outcome, Contact person, Email, Phone; overdue subjects in red

More from this screen 1 screenshot

EV-010 Sandbox board: four activity states; rotting card; weighted stage totals; default sort

States

TypicalRows with overdue subjects in red

Not reached: Empty, Loading, Many items, Long text, Error, No permission, Plan-gated

Full screen notes entry points, data shown, interactions, keyboard and accessibility, microcopy, rules, realtime and performance, responsive, not tested

Entry points

  • Sidebar > Activities (the badge counts the user's overdue and due-today activities) [obs EV-010] [obs EV-056].

Data shown

ElementEntity.fieldEvidence
RowsE-002 Activity with linked E-001 Deal and person[obs EV-056]

Interactions

TriggerResultRequestPersistence scopeEvidence
Anynot tested (rows are production data)nonenonenone

Keyboard and accessibility

CheckResultEvidence
Tab ordernot testednone
Arrow keysnot testednone
Shortcutsnot testednone
Focus visiblenot testednone
Escapenot testednone
Unlabeled controlsnot testednone

Microcopy

ElementTextEvidence
Period tabsTo-do, Overdue, Today, Tomorrow, This week, Next week, Select period[obs EV-056]

Rules

  • R-047 (rules/activities.md)

Realtime and performance

CheckResultEvidence
A change in a second tab appears without reloadnot testednone
Loading pattern (skeleton, spinner, optimistic update)not testednone
Delays the user seesnot testednone

Responsive

WidthChangeEvidence
anynot testednone

Not tested

  • Everything beyond the toolbar: rows show the team's real activities, so the study stayed on the sandbox deal pages.
  • Calendar view, bulk actions, inline done, column settings.

04Components

The reusable pieces of the interface. Solid pills are variants and states seen in the product; dashed ones were not observed. Hover a pill for detail.

EV-010 Sandbox board: four activity states; rotting card; weighted stage totals; default sort
C-001

Deal card

Product namedata-test=pipeline-deal-tileUsed inS-001Statusdone

Variants

RottingJust createdLong title

States 2 of 9 observed

DefaultHoverFocusPressedSelectedDisabledLoadingErrorDragging

Behavior

  • Clicking the title opens S-002. Clicking the status icon opens C-002's popover instead of the deal [obs EV-019].
  • Dragging starts the drop-zone mode (Delete, Lost, Won, Move to) [obs EV-054].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1TitleDeal title, bold, wraps without truncation[obs EV-010]
2Second lineOrganization name (or person) in grey[obs EV-010]
3FooterOwner avatar, rotting badge when rotten, value in bold[obs EV-010] [obs EV-016]
4Status iconC-002 on the right edge, vertically centered[obs EV-010]
5NEW badgeBlue pill after the title of a deal just created in this session view[obs EV-053]

Variants

VariantDifferenceEvidence
RottingPale pink background, red "<1d" pill before the value[obs EV-016]
Just createdNEW badge; placed first in its stage until reload[obs EV-053]
Long titleThree lines; card grows[obs EV-010]

States

StateVisual changeEvidence
DefaultWhite card, 8 px radius, light shadow[obs EV-002]
Hovernot measurednone
Focusnot measurednone
Pressednot measurednone
Selectednot measurednone
Disablednonenone
Loadingnonenone
Errornonenone
DraggingDrop zones appear at the bottom of the board[obs EV-054]

Measurements and tokens

PropertyValueTokenEvidence
Card sizeabout 342 × 75 px at 1710 px viewport (one-line title)none[obs EV-011]
Radius8 px--pd-radius-m[obs EV-002]
Shadowrgba(42, 54, 71, 0.05) 0 1px 2px 0none[obs EV-002]
TitleInter 14/21 600none[obs EV-002]
Secondary textInter 12/18 450, rgb(101, 104, 111)--pd-color-text-secondary[obs EV-002]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
none recordedtitle textnot testednot tested[obs EV-001]

Not tested

  • Hover, focus and selected styles; keyboard access to cards.
  • Card customization (up to 7 extra fields per user and pipeline per the docs [doc SRC-003]).
EV-019 Popover of a deal with three open activities (relative dates; done circles)
C-002

Activity status icon and popover

Product namedata-test=activity-status-indicator-:idUsed inS-001Statusdone

Variants

OverdueTodayFutureNone

States 4 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • The state follows the deal's earliest open activity; an activity due today whose time has passed is overdue (R-002).
  • Marking a row done updates the icon in place; if it was the last open activity the next-activity modal opens (R-013, R-014).
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Icon24 px circle: red with "<" (overdue), green with ">" (today), grey with ">" (future), yellow triangle with "!" (no open activity)[obs EV-010]
2TooltipOne line per state (see microcopy in S-001)[obs EV-012] [obs EV-013] [obs EV-014] [obs EV-015]
3Popover listOne row per open activity: done circle, type icon, subject, relative due ("Today at 09:00", "Tomorrow", "Due in 5 days") and owner[obs EV-019]
4Popover footer"+ Schedule an activity"[obs EV-019]
5Empty popover"You have no activities scheduled for this deal" and "+ Schedule an activity"[obs EV-018]

Variants

VariantDifferenceEvidence
OverdueRed; the overdue row's date in red[obs EV-019]
TodayGreen; date in green[obs EV-015]
FutureGrey[obs EV-014]
NoneYellow warning triangle[obs EV-013]

States

StateVisual changeEvidence
DefaultIcon only[obs EV-010]
HoverGrey halo and a dark tooltip[obs EV-012]
Focusnot measurednone
PressedPopover opens below[obs EV-019]
SelectedRow turns blue after its circle is clicked, subject struck through, green check[obs EV-020]
Disablednonenone
Loadingnone seennone
Errornonenone

Measurements and tokens

PropertyValueTokenEvidence
Icon size24 × 24 pxnone[obs EV-011]
Redrgb(216, 60, 56)--pd-color-negative-default[obs EV-002]
Greenrgb(45, 134, 71)--pd-color-primary-default[obs EV-002]
Yellowrgb(209, 184, 0)--pd-non-semantic-color-lemon-yellow-108[obs EV-002]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
buttontooltip textEscape closes the popovernot tested[obs EV-019]

Not tested

  • Keyboard opening of the popover; screen reader names of the rows.
EV-022 Schedule your next activity modal (form and day agenda)
C-003

Activity form modal

Product namedata-test=add-activity-formUsed inS-001, S-002, S-004Statusdone

Variants

Next activityWon follow-up

States 4 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Defaults: type = first active type in company order; date today; no time; Free; owner = current user; deal and organization from context (R-016).
  • Clicking the start time fills the next 15-minute slot after now and switches to Busy; the agenda scrolls to the new block (R-017).
  • Save creates the activity and shows "Activity added · View" (R-018). Cancel saves nothing.
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Title"Schedule your next activity" (after the last open activity is done) or "Schedule an activity" (other entry points)[obs EV-022] [obs EV-036]
2SubjectLarge input; placeholder is the selected type's name[obs EV-022]
3Type row12 type icons and a menu with the rest; the first type is selected[obs EV-022] [obs EV-036]
4WhenStart date, start time, end time, end date; date format "16 de out de 2026"[obs EV-022]
5PriorityMenu[obs EV-022]
6More"Add Location, Video call e Description" (progressive disclosure)[obs EV-022]
7AvailabilityFree/Busy menu with info icon[obs EV-022]
8NoteYellow text area[obs EV-022]
9OwnerUser menu, current user preselected[obs EV-022]
10LinksDeal (prefilled), People, Organization (prefilled from the deal)[obs EV-022]
11Footer"...", "Mark as done" checkbox, Cancel, Save[obs EV-022]
12Day agendaRight column: weekday and date with arrows, all-day items, hourly timeline, red current-time line, the user's other activities[obs EV-022]
13Context boxAfter winning: "Follow up after winning a deal · Schedule a follow-up activity to increase your chances for a deal with this client in the future. · Activity settings"[obs EV-036]

Variants

VariantDifferenceEvidence
Next activityTitle "Schedule your next activity"; opened by the system[obs EV-022]
Won follow-upTitle "Schedule an activity" with the context box[obs EV-036]

States

StateVisual changeEvidence
DefaultForm filled with defaults, Free[obs EV-022]
Hovernot measurednone
FocusSubject focused with a blue ring[obs EV-022]
Pressednonenone
SelectedTime chosen: 15-minute list with the chosen slot checked; Free becomes Busy[obs EV-023]
Disablednonenone
LoadingSkeleton bars for 2 to 3 seconds[obs EV-021]
Errornot testednone

Measurements and tokens

PropertyValueTokenEvidence
Modal widthabout 850 CSS px (form about 550, agenda about 300)none[net EV-025]
Note backgroundpale yellownot measured[obs EV-022]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
dialogtitle textEscape closes the time listyes (subject)[obs EV-023]

Not tested

  • Location, video call, description, guests (guests would receive invites), recurrence, "Mark as done" in the form, the "..." menu.
  • Validation errors (for example an end time before the start time).
EV-034 Won modal: celebration; deal card; close time; activities done; What's next choices
C-004

Won celebration modal

Product namenone recordedUsed inS-002Statusdone

Variants

Animation off

States 1 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • "Schedule follow-up activity" opens C-003 with the won context box (R-024).
  • "Don't show me this again" changes a personal preference (A3; not clicked).
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1IllustrationAnimated medal and confetti on a purple band (do not copy the art)[obs EV-034]
2Deal cardTitle, organization, owner avatar, WON pill, value, stage progress line[obs EV-034]
3Stats"Close time 0 days"; "Activities done 0"[obs EV-034]
4Question"What's next for this won deal?"[obs EV-034]
5Choices"Schedule follow-up activity · Plan next touchpoint"; "Create a project · Plan the delivery of the deal"[obs EV-034]
6Footer"Don't show me this again" checkbox; Close; close icon[obs EV-034]

Variants

VariantDifferenceEvidence
Animation offnot tested (personal preference)none

States

StateVisual changeEvidence
DefaultShown about 4 seconds after Won, after two report calls[obs EV-034]
Hovernot measurednone
Focusnot measurednone
Pressednonenone
Selectednonenone
Disablednonenone
Loadingnone seennone
Errornonenone

Measurements and tokens

PropertyValueTokenEvidence
Widthabout 600 px at 1502 px screenshot widthnone[obs EV-034]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
dialognot recordednot testednot testednone

Not tested

  • "Create a project", "Don't show me this again", Escape and keyboard order.
EV-038 Mark as Lost dialog
C-005

Mark as lost dialog

Product namenone recordedUsed inS-002Statusdone

Variants

Predefined reasons

States 4 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Submitting sends the reason and the status, then creates a note pinned to the deal from the comment (R-029).
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Title"Mark as Lost" with close icon[obs EV-038]
2Lost reasonSelect "Select a reason"; opens a searchable list of company reasons[obs EV-038] [obs EV-040]
3Comments"Comments (optional)" text area[obs EV-038]
4Link"Manage lost reasons on company settings page."[obs EV-038]
5Tip"Providing a lost reason can help you better understand trends or circumstances when you need to look back on your deal history." (dismissible)[obs EV-038]
6FooterCancel; red "Mark as lost"[obs EV-038]

Variants

VariantDifferenceEvidence
Predefined reasonsSearchable select; free text is not accepted[obs EV-041]

States

StateVisual changeEvidence
DefaultEmpty reason[obs EV-038]
Hovernot measurednone
FocusSearch input focused when the list opens[obs EV-040]
Pressednonenone
SelectedReason shown in the select[obs EV-042]
Disablednonenone
Loadingnonenone
ErrorRed border on the select when submitting without a reason; no message; nothing sent[obs EV-039]

Measurements and tokens

PropertyValueTokenEvidence
Error borderred--pd-color-negative-default[obs EV-039] [obs EV-002]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
comboboxLost reasonEnter does nothing when the search matches nothingyes[obs EV-041]

Not tested

  • Keyboard selection of a reason; the dialog with no predefined reasons (free-form text, Q-003).
EV-028 Stage bar tooltip of the current stage (time in stage)
C-006

Stage bar

Product namenone recordedUsed inS-002Statusdone

Variants

WonLostDeleted

States 4 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Stages before the one the deal was created in show as passed with "0 days" (R-031).
  • A click moves the deal without confirmation, after a required-field pre-check (R-030).
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Chevron per stage"N days · stage name"; past and current stages dark green, future grey with the name only[obs EV-027]
2TooltipCurrent: "stage · Been here for N minutes"; future: "This deal has not been in this stage yet"[obs EV-028] [obs EV-029]

Variants

VariantDifferenceEvidence
WonAll chevrons light green[obs EV-035]
LostAll chevrons light red[obs EV-042]
DeletedAll chevrons grey[obs EV-046]

States

StateVisual changeEvidence
DefaultOpen deal colors[obs EV-027]
HoverTooltip[obs EV-028]
Focusnot measurednone
PressedDeal moves to the clicked stage at once[obs EV-032]
SelectedCurrent stage is the last green chevron[obs EV-027]
Disablednot tested on closed dealsnone
Loadingnonenone
Errornonenone

Measurements and tokens

PropertyValueTokenEvidence
Heightabout 20 pxnone[obs EV-027]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
not recordednot recordednot testednot testednone

Not tested

  • Clicking a stage on a won or lost deal; moving back to an earlier stage; what the pre-check shows when a required field is missing.
EV-049 Add deal form: core fields column (cropped)
C-007

Add deal modal

Product namenone recordedUsed inS-001Statusdone

Variants

Unmatched organization

States 6 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Save sends POST /api/v1/deals with pipeline, stage, owner, title, organization and visibility, then refreshes the stage count (R-040).
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Contact personAutocomplete with info icon; focused on open[obs EV-049]
2OrganizationAutocomplete with info icon[obs EV-049]
3TitleText[obs EV-049]
4ValueNumber and currency select (company currency preselected); "Add products"[obs EV-049]
5PipelineCurrent pipeline[obs EV-049]
6Pipeline stageSegmented chevrons, first stage selected[obs EV-049]
7Label, Probability (%), Expected close date (DD/MM/YYYY), Owner, Source channel, Source channel IDFields[obs EV-049]
8Custom fieldsCompany deal fields, then Visible to[obs EV-052]
9Right columnPERSON (phone, email and person fields) and ORGANIZATION (organization fields) for new contacts[obs EV-050]
10FooterImport; usage counter "used/limit" with info icon; Cancel; Save[obs EV-050]

Variants

VariantDifferenceEvidence
Unmatched organizationNEW badge in the field; option "Add 'text' as new organization"[obs EV-051]

States

StateVisual changeEvidence
DefaultEmpty, contact person focused[obs EV-049]
Hovernot measurednone
FocusBlue ring[obs EV-049]
Pressednonenone
SelectedExisting organization chosen: NEW badge disappears[obs EV-051]
DisabledSave dims while validation errors show[obs EV-050]
LoadingSpinner in the organization field while searching[obs EV-051]
Error"A person or organization is required" under both fields[obs EV-050]

Measurements and tokens

PropertyValueTokenEvidence
Error textred, 12 px--pd-color-negative-default[obs EV-050] [obs EV-002]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
dialogAdd dealnot testedyes[obs EV-049]

Not tested

  • Creating a person from the right column; products; labels; import; custom field validation.
EV-061 Delete pipeline dialog with Delete deals selected and its warning
C-008

Delete confirmations

Product namenone recordedUsed inS-002, S-003, S-005Statusdone

Variants

Destructive

States 4 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • The deal dialog does not mention activities, and activities survive the deal (R-032).
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Deal"Are you sure you want to delete this deal? Any notes, files, documents and invoices linked to this deal will also be deleted." Info box: restore from Restore data within 30 days. Cancel / Delete deal[obs EV-045]
2Note"Are you sure you want to delete this note? This action cannot be undone." Cancel / Delete[obs EV-043]
3Activity"Are you sure you want to delete this event?" (a line about Restore data appeared on one occasion). Cancel / Delete[obs EV-048]
4Stage (editor)"Delete (stage) stage · There are no deals in this stage right now." Cancel / Delete stage[obs EV-007]
5Pipeline"Delete (pipeline) pipeline · Before deleting this pipeline, please specify the following: 1. What would you like to do with the N deals in this pipeline?" Radio: Move deals to another pipeline (default, with a pipeline and stage select) / Delete deals; Delete pipeline disabled until valid[obs EV-060]
6Pipeline, delete dealsWarning: deleting removes the deals; restorable within 30 days; "View deals" link[obs EV-061]
7Organization"Are you sure you want to delete (name)? All notes, files, documents and invoices on this contact organization are deleted as well. Other linked items may remain but without a linked organization." Restore within 30 days[obs EV-062]

Variants

VariantDifferenceEvidence
DestructiveRed primary button with a trash icon[obs EV-061]

States

StateVisual changeEvidence
DefaultCentered dialog over a dimmed page[obs EV-045]
Hovernot measurednone
Focusnot measurednone
Pressednonenone
SelectedRadio checked[obs EV-061]
Disabled"Delete pipeline" pale until a choice is valid[obs EV-060]
LoadingFade-in of about half a second[obs EV-060]
Errornonenone

Measurements and tokens

PropertyValueTokenEvidence
Danger buttonrgb(216, 60, 56)--pd-color-negative-default[obs EV-002]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
dialogtitle textnot testednot testednone

Not tested

  • Escape and Enter on these dialogs; deleting a person.

05User flows

Step by step journeys. Each step shows the screen, what the user does and what the product answers; branches follow the steps.

FL-001

Complete an activity and schedule the next one

User goalfinish today's task and keep the deal movingFeaturesF-003, F-004Statusdone

5 steps. On a wide screen, scroll the strip sideways to see them all.

  1. Click the green or red status icon on a cardPopover lists the open activitiesEV-019
  2. Click the done circle of the only open activityToast "Activity marked as done (subject)"; modal skeletonEV-021
  3. Wait"Schedule your next activity" with deal and organization linked, first type, today, Free, day agendaEV-022
  4. Click the start timeNext 15-minute slot filled; BusyEV-023
  5. Type a subject and Save"Activity added · View"; activity in FocusEV-030

Branches and errors

Step 2
The deal has other open activitiesNo modal; the icon shows the next one
Step 3
User clicks CancelNothing saved; card shows the yellow warning; Focus empty state
Step 1
Done from the deal page Focus blockSame modal
!
Not tested

From the Activities list or calendar; with a person linked (participants); with guests.

Diagram source mermaid
flowchart LR
    A[Open activity due] --> B[Mark done]
    B --> C{Other open activities?}
    C -- yes --> D[Icon shows next activity]
    C -- no --> E[Schedule your next activity]
    E -- Save --> F[New activity in Focus]
    E -- Cancel --> G[Deal without next step: yellow warning]
FL-002

Win a deal

User goalrecord a closed sale and plan the next touchpointFeaturesF-005Statusdone
  1. Click WonStatus won: WON badge, Reopen, light green stage bar, Won timeEV-035
  2. Wait about 4 secondsCelebration modal with close time, activities done and "What's next for this won deal?"EV-034
  3. Choose "Schedule follow-up activity""Schedule an activity" form with the won context box, today and the first typeEV-036
  4. Cancel or SaveBack to the won deal; open activities remain openEV-035

Branches and errors

Step 2
Choose "Create a project"not tested
Step 1
Later, click ReopenDeal open again
!
Not tested

Won from the board drop zone or the Won dropdown ("Mark as won and create a project" [doc SRC-013]).

Diagram source mermaid
flowchart LR
    A[Open deal] -->|Won| B[Won state]
    B --> C[Celebration modal]
    C -->|Follow-up| D[Activity form]
    C -->|Close| B
    B -->|Reopen| A
FL-003

Lose a deal

User goalclose a deal as lost and keep the reasonFeaturesF-006Statusdone
  1. Click LostMark as Lost dialogEV-038
  2. Click "Mark as lost" without a reasonRed border on the reason; nothing sentEV-039
  3. Open the reason list and pick a reasonSearchable list of company reasonsEV-040
  4. Type a comment and confirmStatus lost with the reason; comment saved as a pinned note; LOST badge and ReopenEV-042

Branches and errors

Step 3
Typed text matches no reasonNo option to use it; Enter does nothing
!
Not tested

Lost from the board drop zone; reopening a lost deal (tested on a won deal only).

Diagram source mermaid
flowchart LR
    A[Open deal] -->|Lost| B[Dialog]
    B -->|no reason| B
    B -->|reason + comment| C[Lost state + pinned note]
    C -->|Reopen| A
FL-004

Create a deal from the board

User goaladd a new opportunity to a stageFeaturesF-007Statusdone
  1. Click "+ Deal"Add deal form, contact person focused, current pipeline and first stageEV-049
  2. Type a title and Save"A person or organization is required" on both fieldsEV-050
  3. Type an organization nameSuggestions; NEW badge while unmatchedEV-051
  4. Pick the existing organization, set Visible to, SaveToast with View; card on top of the stage with NEWEV-052 EV-053

Branches and errors

Step 3
User saves with unmatched textA new organization would be created
!
Not tested

Creating a person in the form; the "+" in a stage column; the quick add shortcut D.

Diagram source mermaid
flowchart LR
    A[+ Deal] --> B[Form]
    B -->|no person or org| B
    B -->|valid| C[Deal created at top of stage]

06How it behaves

Business rules observed in the product, each with its evidence. They become the acceptance tests of the new product.

Activities and the next-activity prompt 10 rules

R-013 Completing an activity while others remain open does not prompt

Given
a deal with three open activities
When
the user marks one done from the card popover
Then
the row is struck through with a green check, the toast "Activity marked as done (subject)" appears, no modal opens, and the card icon updates to the next open activity
Evidence: [obs EV-020] [net EV-025]Feature: F-004 · Screen: S-001

R-014 Completing the last open activity prompts for the next one

Given
a deal with exactly one open activity
When
the user marks it done from the card popover or from the deal page Focus block
Then
the modal "Schedule your next activity" opens, linked to the deal and its organization, after a short skeleton
Evidence: [obs EV-021] [obs EV-022] [obs EV-030] [net EV-025] [doc SRC-010]Feature: F-004 · Screen: S-001, S-002
ProbeInputResultEvidence
From the card popoverDeal EModal opened[obs EV-022]
From deal page FocusDeal CModal opened; saved[obs EV-030]
With other open activitiesDeal FNo modal[obs EV-020]

R-015 Cancelling the prompt leaves the deal without a next step

Given
the "Schedule your next activity" modal
When
the user clicks Cancel
Then
nothing is created, the card shows the yellow warning icon, and the deal page Focus shows "No focus items yet" with "+ Schedule an activity"
Evidence: [obs EV-024] [obs EV-058]Feature: F-004 · Screen: S-001, S-002

R-016 The prompt defaults to the first activity type, today and no time

Given
the prompt opens after completing a call
When
it renders
Then
the selected type is the first active type in the company's type order (not the type just completed), the subject placeholder is that type's name, the date is today, the time is empty, availability is Free, the owner is the current user, and the deal and organization are linked
Evidence: [obs EV-022] [net EV-031]Feature: F-004 · Screen: S-001, S-002

R-017 Choosing a time fills the next 15-minute slot and switches to Busy

Given
the activity form with no time
When
the user clicks the start time at 13:19
Then
13:30 is filled, a list of 15-minute slots opens, Free becomes Busy, and the day agenda shows the new block at 13:30
Evidence: [obs EV-023]Feature: F-003 · Screen: S-001

R-018 Saving the prompt creates the activity and confirms it

Given
the prompt with a subject
When
the user clicks Save
Then
the activity is created, the toast "Activity added · View" appears, and the activity shows in Focus
Evidence: [obs EV-030] [net EV-031]Feature: F-004 · Screen: S-002

R-019 API defaults for activities

Given
an activity created through the API
When
it has a due time
Then
busy is true; without a time busy is false; participants is empty when no person is linked; due_time is stored in UTC
Evidence: [net EV-009]Feature: F-003 · Screen: S-002

R-020 The deal page marks overdue activities

Given
an open activity due yesterday
When
the deal page opens
Then
the Focus item shows a red OVERDUE badge and a red "Yesterday at 10:00"
Evidence: [obs EV-057]Feature: F-003 · Screen: S-002

R-021 Done activities move from Focus to History

Given
an activity in Focus
When
it is marked done
Then
it leaves Focus and appears in History with a green check, and the History filter shows "Activities (1)"
Evidence: [obs EV-030]Feature: F-003 · Screen: S-002

R-047 The activities list opens on To-do with period tabs and a type filter

Given
the Activities list
When
it opens
Then
the To-do tab is selected, the other tabs are Overdue, Today, Tomorrow, This week, Next week and Select period, a type filter row offers All plus one icon per type, and a count shows "N activities"
Evidence: [obs EV-056]Feature: F-010 · Screen: S-004

Pipeline board 12 rules

R-001 Each card shows one of four activity states

Given
an open deal on the board
When
the board renders
Then
the card icon is red with "<" if its earliest open activity is overdue, green with ">" if it is due today, grey with ">" if it is in the future, and a yellow warning triangle if the deal has no open activity
Evidence: [obs EV-010] [obs EV-012] [obs EV-013] [obs EV-014] [obs EV-015] [doc SRC-002]Feature: F-001 · Screen: S-001
ProbeInputResultEvidence
Activity due yesterday 10:00Deal BRed icon, "View overdue activity"[obs EV-012]
Activity due today, no timeDeal EGreen icon, "View activity scheduled for today"[obs EV-015]
Activity in 5 daysDeal DGrey icon, "View upcoming activity"[obs EV-014]
No activityDeals A, KYellow triangle, "Schedule an activity"[obs EV-013]

R-002 An activity due today whose time has passed counts as overdue

Given
a deal whose only overdue candidate is an activity due today at 09:00, viewed at 13:15
When
the board renders
Then
the card icon is red and the popover shows "Today at 09:00" in red
Evidence: [obs EV-010] [obs EV-019]Feature: F-001 · Screen: S-001

R-003 The default order is overdue, today, no activity, future

Given
a stage whose deals are in different activity states and the sort "Next activity (default)"
When
the board loads
Then
the cards are ordered overdue first, then due today, then deals with no open activity, then deals whose next activity is in the future
Evidence: [obs EV-010] [obs EV-026] [doc SRC-002]Feature: F-001 · Screen: S-001
ProbeInputResultEvidence
Lead in stageB overdue, A and K none, D futureB, K, A, D[obs EV-010]
Proposal stage after one changeC today, E none, F futureC, E, F[obs EV-026]

R-004 Within "today", an activity without a time comes before a timed one

Given
two deals with activities due today, one without a time and one at 17:00
When
the board loads
Then
the deal whose activity has no time is listed first
Evidence: [obs EV-010]Feature: F-001 · Screen: S-001

R-005 Ties are broken by the newest deal first

Given
deals in the same activity state and due date
When
the board loads
Then
the most recently created deal comes first
Evidence: [obs EV-010] [obs EV-059]Feature: F-001 · Screen: S-001
ProbeInputResultEvidence
Three future deals due the same dayH, I, J created in that orderJ, I, H[obs EV-010]
Five deals with no activityA, B, D, K, L created in that orderL, K, D, B, A[obs EV-059]

R-006 The board does not re-sort after an in-place change until reload

Given
a card whose activity state changes from the popover, or a deal just created
When
the change is saved
Then
the card keeps its position (a new deal goes to the top with a NEW badge) until the page is reloaded
Evidence: [obs EV-024] [obs EV-053] [obs EV-026]Feature: F-001 · Screen: S-001

R-007 The stage header shows the weighted value of its deals

Given
deals with values in a stage with probability P and no deal-level probability
When
the board renders
Then
the header shows Σ value × P ÷ 100 and the number of deals
Evidence: [obs EV-010] [doc SRC-006]Feature: F-001 · Screen: S-001
ProbeInputResultEvidence
10% stage1.000 + 30.000 + 0 + 1.234.567,89R$ 126.556,79 · 4 deals[obs EV-010]
25% stage3.000R$ 750 · 1 deal[obs EV-010]
50% stage8.000 + 2.000 + 5.000R$ 7.500 · 3 deals[obs EV-010]
80% stage100 + 20.000 + 50.000R$ 56.080 · 3 deals[obs EV-010]

R-008 A stage with rotting at 0 days marks deals rotten at once

Given
a stage with rotting on and 0 days
When
a deal enters it
Then
the card turns pale pink and shows a red "<1d" badge whose tooltip reads "No actions for <1 days"
Evidence: [obs EV-010] [obs EV-016] [net EV-009]Feature: F-001 · Screen: S-001

R-009 Closed and deleted deals leave the board

Given
a pipeline with a lost deal and a deleted deal
When
the board loads
Then
neither card is shown and the deal count excludes them
Evidence: [obs EV-053] [doc SRC-001]Feature: F-001 · Screen: S-001

R-010 The status icon opens the deal's activity list

Given
a card
When
the user clicks its status icon
Then
a popover lists the open activities with relative dates and done circles, plus "+ Schedule an activity"; with no activity it reads "You have no activities scheduled for this deal"
Evidence: [obs EV-018] [obs EV-019] [net EV-025]Feature: F-001 · Screen: S-001

R-011 Dragging a card shows four drop zones

Given
the board
When
the user starts dragging a card
Then
four zones appear along the bottom: Delete, Lost, Won, Move to
Evidence: [obs EV-054] [doc SRC-001]Feature: F-001 · Screen: S-001

R-012 The Activities badge counts the user's overdue and due-today activities

Given
the user's open activities
When
one is created, completed or becomes due
Then
the navigation badge equals the number of the user's open activities that are overdue or due today
Evidence: [obs EV-010] [obs EV-020] [obs EV-024] [obs EV-030]Feature: F-003 · Screen: S-001
ProbeInputResultEvidence
Created 1 overdue and 3 due-today activitiesbadge 25 before29[obs EV-010]
Completed one due today2928[obs EV-020]
Completed another due today2827[obs EV-024]
Completed a third due today and created a follow-up due today2727 (net zero)[obs EV-030]

Creating deals and visibility 5 rules

R-037 A deal needs a person or an organization in the form

Given
the Add deal form with only a title
When
the user clicks Save
Then
both contact fields show "A person or organization is required" with red borders and Save dims
Evidence: [obs EV-050]Feature: F-007 · Screen: S-001

R-038 Unmatched organization text creates a new organization

Given
text typed in the Organization field
When
it does not exactly match an existing organization
Then
the field shows a NEW badge and the list offers "Add 'text' as new organization"; picking the existing match removes the badge
Evidence: [obs EV-051]Feature: F-007 · Screen: S-001

R-039 New deal defaults

Given
the Add deal form opened from a pipeline board
When
it opens
Then
the pipeline is the current one, the first stage is selected, the owner is the current user, the currency is the company currency, and Visible to is "Item owner's visibility group"
Evidence: [obs EV-049] [obs EV-052]Feature: F-007 · Screen: S-001

R-040 A saved deal appears at the top of its stage

Given
a valid Add deal form
When
the user saves
Then
the deal is created, the toast 'New deal "title" created · View' appears, the details view does not open, and the card shows at the top of its stage with a NEW badge until reload
Evidence: [obs EV-053] [net EV-063]Feature: F-007 · Screen: S-001

R-048 Visibility levels of an item

Given
the Visible to field
When
it opens
Then
it offers Item owner (owner, Deals admins, followers, parent visibility groups), Item owner's visibility group, Item owner's visibility group and sub-groups, and All users
Evidence: [obs EV-052] [net EV-009]Feature: F-012 · Screen: S-001

Stages, won, lost, reopen and deletion 15 rules

R-022 Won is one click and needs no confirmation

Given
an open deal on its detail page
When
the user clicks Won
Then
the deal becomes won at once: WON badge and Reopen replace the buttons, the stage bar turns light green, "Create project" turns green, and Won time appears in Details
Evidence: [obs EV-035]Feature: F-005 · Screen: S-002

R-023 Winning shows a celebration with next steps

Given
the personal preference for the celebration is on
When
a deal is marked won on its detail page
Then
about 4 seconds later a modal shows the deal card, "Close time" and "Activities done", and asks "What's next for this won deal?" with "Schedule follow-up activity" and "Create a project", plus "Don't show me this again"
Evidence: [obs EV-034]Feature: F-005 · Screen: S-002

R-024 The won follow-up opens with today and the first type

Given
the company setting for the won follow-up popup names a type and a delay
When
the user chooses "Schedule follow-up activity"
Then
the form "Schedule an activity" opens with a "Follow up after winning a deal" box, today's date and the first activity type selected; the configured type and delay are not applied (setting read during the preflight, Q-018)
Evidence: [obs EV-036]Feature: F-005 · Screen: S-002

R-025 Open activities stay open when a deal is won or lost

Given
a deal with one open activity
When
the deal is marked won or lost
Then
the activity remains open in Focus; nothing asks what to do with it
Evidence: [obs EV-035] [obs EV-042] [doc SRC-030]Feature: F-005, F-006 · Screen: S-002

R-026 Reopen returns a closed deal to open

Given
a won deal
When
the user clicks Reopen
Then
the deal is open again at once, the Won and Lost buttons return and Won time disappears
Evidence: [obs EV-037] [net EV-063]Feature: F-005 · Screen: S-002

R-027 Losing a deal requires a reason

Given
the Mark as Lost dialog with no reason selected
When
the user clicks "Mark as lost"
Then
the reason select gets a red border, no message is shown and no request is sent
Evidence: [obs EV-039]Feature: F-006 · Screen: S-002

R-028 With predefined reasons, the reason must come from the list

Given
the company has predefined lost reasons and the setting "Allow free-form reasons" on
When
the user types text that matches no reason and presses Enter
Then
the list stays empty, no option to use the text appears, and the reason remains unset
Evidence: [obs EV-040] [obs EV-041]Feature: F-006 · Screen: S-002

R-029 The lost comment becomes a note pinned to the deal

Given
a reason and a comment in the dialog
When
the user marks the deal lost
Then
the deal gets status lost with the reason, and a note with the comment is created and pinned: it shows in Focus (yellow) and History, and Details shows Lost time and Lost reason
Evidence: [obs EV-042] [net EV-063] [doc SRC-011]Feature: F-006 · Screen: S-002

R-030 Clicking a stage moves the deal at once

Given
an open deal
When
the user clicks a later stage in the stage bar
Then
the app checks the target stage's required fields, moves the deal without confirmation, and may show a "Recommended first automation" banner for that stage
Evidence: [obs EV-032] [net EV-033]Feature: F-002 · Screen: S-002

R-031 The stage bar shows time per stage

Given
a deal created directly in the third stage
When
its page opens
Then
the first three chevrons are green with "0 days", the current stage tooltip reads "Been here for N minutes", and a later stage reads "This deal has not been in this stage yet"
Evidence: [obs EV-027] [obs EV-028] [obs EV-029]Feature: F-002 · Screen: S-002

R-032 Deleting a deal does not delete its activities

Given
an open deal with one open activity
When
the user deletes the deal from its "..." menu
Then
the dialog mentions notes, files, documents and invoices but not activities; the deal page turns to a deleted state with Restore and a permanent deletion date 30 days later; the activity stays open and not deleted (the docs say it is deleted)
Evidence: [obs EV-045] [obs EV-046] [net EV-047] [doc SRC-014]Feature: F-009 · Screen: S-002

R-033 Activities of a deleted deal can be deleted from its page

Given
a deleted deal that still lists an open activity in Focus
When
the user chooses Delete in the activity's menu and confirms
Then
the activity is deleted (the API reports is_deleted true)
Evidence: [obs EV-048] [net EV-047]Feature: F-009 · Screen: S-002

R-034 Deleting a note asks for confirmation and cannot be undone

Given
a pinned note on a deal
When
the user chooses Delete in its menu
Then
the dialog says "This action cannot be undone"; after confirming, the note disappears from Focus and History
Evidence: [obs EV-043]Feature: F-009 · Screen: S-002

R-035 Deleting a pipeline requires a decision about its deals

Given
a pipeline with deals
When
the user chooses Delete pipeline in the editor
Then
the dialog asks what to do with the N deals: "Move deals to another pipeline" (default, needs a pipeline and stage) or "Delete deals" (warning: restorable within 30 days); the delete button stays disabled until the choice is complete
Evidence: [obs EV-060] [obs EV-061]Feature: F-009 · Screen: S-003

R-036 Deleting an organization keeps other linked items

Given
an organization
When
the user deletes it
Then
the dialog says its notes, files, documents and invoices are deleted, other linked items remain without the organization, and it can be restored within 30 days
Evidence: [obs EV-062]Feature: F-009 · Screen: S-005

Pipeline editor 4 rules

R-041 A new pipeline starts with five default stages

Given
the pipeline selector
When
the user chooses New pipeline
Then
the editor opens with the name "New pipeline", deal probability on, and five stages (Qualified, Contact Made, Demo Scheduled, Proposal Made, Negotiations Started) at 100% with rotting off
Evidence: [obs EV-003]Feature: F-008 · Screen: S-003

R-042 Rotting accepts zero days

Given
a stage in the editor
When
the user turns rotting on
Then
the days field starts at 0, the header shows "0 days", and saving keeps 0
Evidence: [obs EV-008] [net EV-009]Feature: F-008 · Screen: S-003

R-043 Deleting an empty stage asks for confirmation

Given
a stage with no deals in the editor
When
the user clicks Delete Stage
Then
a dialog says "There are no deals in this stage right now" with Cancel and Delete stage
Evidence: [obs EV-007]Feature: F-008 · Screen: S-003

R-046 Quick add offers one-key shortcuts

Given
the "+" button in the top bar
When
the user opens it
Then
it lists Person P, Organization O, Activity A, Deal D, Lead L, Note N, Product R, Project E
Evidence: [obs EV-055] [doc SRC-016]Feature: F-011 · Screen: S-001

07Data model

The entities behind the screens: fields, types, relations and who may do what.

E-001 Deal

Product term: Deal · Parent: E-004 Stage (within E-003 Pipeline) · Status: draft

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idintsystem[net EV-009]
titlestringyesfree text; 120+ characters and emoji accepted[net EV-009] [obs EV-010]
valuenumberno0shown as R$ 1.234.567,89[net EV-009] [obs EV-010]
currencystringyescompany currencyISO 4217[net EV-009] [obs EV-049]
pipeline_idintyescurrent pipeline in the form[net EV-009] [net EV-063]
stage_idintyesfirst stage of the pipeline[net EV-009] [obs EV-049]
statusenumsystemopenopen, won, lost (filters also accept deleted)[net EV-009] [doc SRC-019]
owner_idintyescurrent user[net EV-009] [obs EV-049]
creator_user_idintsystem[net EV-009]
person_idint or nullone of person or organization in the UI[net EV-009] [obs EV-050]
org_idint or nullone of person or organization in the UI[net EV-009] [obs EV-050]
probabilitynumber or nullnonull0-100, only when the pipeline allows deal probability[net EV-009] [doc SRC-006]
expected_close_datedate or nullno[net EV-009]
lost_reasonstring or nullwhen lost (UI)from the company list when predefined reasons exist[net EV-009] [obs EV-039]
visible_tointyes3 (owner's visibility group)1 item owner, 3 owner's group, 5 group and sub-groups, 7 all users[net EV-009] [obs EV-052]
label_idsint[]no[][net EV-009]
custom_fieldsobjectdepends on quality ruleskeyed by 40-hex field key[net EV-009]
origin, origin_id, channel, channel_idstring or nullsystemorigin "Marketplace" for API-created deals[net EV-009]
acv, arr, mrrnumber or nullno[net EV-009]
is_archived, archive_timebool, datetimesystemfalse[net EV-009]
is_deletedboolsystemfalsesoft delete, purged after 30 days[net EV-009] [obs EV-046]

Relations

RelationTargetCardinalityOn deleteSource
in stageE-004 Stagemany to onepipeline deletion asks to move or delete the deals[obs EV-060]
ownerE-010 Usermany to onenot tested[net EV-009]
organizationE-005 Organizationmany to onedeleting the organization keeps the deal without it (dialog text)[obs EV-062]
personE-006 Personmany to onenot tested[doc SRC-017]
activitiesE-002 Activityone to manydeleting the deal leaves its activities open and not deleted[obs EV-046] [net EV-047]
notesE-007 Noteone to manythe dialog says notes are deleted with the deal[obs EV-045]
followersE-010 Usermany to manyowner follows by default[obs EV-027]

Lifecycle

stateDiagram-v2
    [*] --> open: create (form or API)
    open --> won: Won button, drag to Won
    open --> lost: Mark as lost (reason required)
    won --> open: Reopen
    lost --> open: Reopen
    open --> deleted: Delete
    won --> deleted: Delete (pipeline delete with Delete deals)
    lost --> deleted: Delete (pipeline delete with Delete deals)
    deleted --> open: Restore within 30 days
    deleted --> [*]: purged after 30 days

Evidence: won [obs EV-035], lost [obs EV-042], reopen [obs EV-037], deleted with restore and purge date [obs EV-046].

System fields

FieldSet whenSource
add_timecreation (UTC)[net EV-009]
update_timeany change[net EV-009]
stage_change_timestage move[net EV-009] [net EV-033]
won_time, lost_time, close_timestatus change[net EV-009] [obs EV-035] [obs EV-042]
local_won_date, local_lost_date, local_close_datestatus change, in the company time zone[net EV-009]
next_activity_id, next_activity_date, next_activity_time (v1)activity created, completed or deleted[net EV-025]
undone_activities_count, done_activities_count, activities_count (v1)activity changes[net EV-025]
first_won_time (v1)first win[net EV-025]

Rules

Not tested

  • Products, labels, sequences, projects, archive, merge, duplicate, convert to lead.
  • Deal-level probability values and their effect on weighted totals.
E-002 Activity

Product term: Activity · Parent: E-001 Deal (optional) · Status: draft

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idintsystem[net EV-009]
subjectstringno (placeholder is the type name)[net EV-009] [obs EV-022]
typestringyesfirst active type in company orderE-008 ActivityType.key_string[net EV-009] [net EV-031]
owner_idintyescurrent user[net EV-009] [obs EV-022]
creator_user_idintsystem[net EV-009]
deal_id, org_id, person_id, lead_id, project_idint or nullnofrom context[net EV-009]
due_datedateyestodayYYYY-MM-DD[net EV-009] [obs EV-022]
due_timetime or nullnonullHH:MM in UTC; the UI offers 15-minute slots[net EV-009] [obs EV-023]
durationtime or nullnonullHH:MM[net EV-009]
doneboolyesfalse[net EV-009]
busyboolyestrue with a time, false withoutFree/Busy in the UI[net EV-009] [obs EV-023]
marked_as_done_timedatetime or nullsystemnullset when done[net EV-009] [net EV-025]
participantsarray of {person_id, primary}no[]persons, not users[net EV-009]
attendeesarray or nullnonullguests; invites need calendar sync[net EV-025] [doc SRC-009]
priorityint or nullnonull[net EV-009] [obs EV-022]
outcomeint or nullnonullper type[net EV-009]
noteHTML or nullnonullyellow note area in the form[net EV-009] [obs EV-022]
public_descriptionstring or nullnonull[net EV-009]
locationobject or nullnonull[net EV-009]
conference_meeting_client, _url, _idstring or nullnonull[net EV-009]
privateboolnofalse[net EV-009]
is_deletedboolsystemfalse[net EV-009] [net EV-047]

Relations

RelationTargetCardinalityOn deleteSource
dealE-001 Dealmany to onesurvives the deal's deletion[net EV-047]
organizationE-005 Organizationmany to onenot tested[net EV-009]
typeE-008 ActivityTypemany to onenot tested[net EV-025]
ownerE-010 Usermany to onenot tested[net EV-009]

Lifecycle

Open (done false) to done (done true, marked_as_done_time set) to deleted (is_deleted true). Reverting a done activity was not tested. Evidence: [obs EV-020] [net EV-025] [net EV-047].

System fields

FieldSet whenSource
add_time, update_timecreation, change[net EV-009]
marked_as_done_timemarked done[net EV-025]

Rules

Not tested

  • Recurrence, guests and invites, location, video call links, outcomes, priorities.
E-003 Pipeline

Product term: Pipeline · Parent: none · Status: draft

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idintsystem[net EV-009]
namestringyes"New pipeline"emoji accepted[net EV-009] [obs EV-003]
is_deal_probability_enabledboolyestrue in a new pipeline[net EV-009] [obs EV-003]
order_nrintsystemlowest is the default pipeline[doc SRC-017]
is_deletedboolsystemfalse[doc SRC-017]

Relations

RelationTargetCardinalityOn deleteSource
stagesE-004 Stageone to many, ordereddeleted with the pipeline[net EV-009]
dealsE-001 Dealone to manymove to another pipeline or delete (required choice)[obs EV-060] [obs EV-061]

Lifecycle

Created in the editor, edited in place, deleted from the editor's menu. Evidence: [obs EV-003] [obs EV-060].

System fields

FieldSet whenSource
add_time, update_timecreation, change[doc SRC-017]

Rules

Not tested

  • Pipeline visibility per visibility group (company setting), duplicate pipeline, reordering.
E-004 Stage

Product term: Stage · Parent: E-003 Pipeline · Status: draft

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idintsystem[net EV-009]
namestringyesdefault names in a new pipeline[net EV-009] [obs EV-003]
deal_probabilityintyes1000-100[net EV-009] [obs EV-005]
is_deal_rot_enabledboolyesfalse[net EV-009]
days_to_rottenint or nullwhen rotting on00 accepted[net EV-009] [obs EV-008]
order_nrintsystemposition in the editor[doc SRC-017]

Relations

RelationTargetCardinalityOn deleteSource
pipelineE-003 Pipelinemany to one[net EV-009]
dealsE-001 Dealone to manyan empty stage asks for confirmation; the docs say deleting a stage deletes its deals[obs EV-007] [doc SRC-004]

Lifecycle

Created, renamed and deleted in the pipeline editor. Evidence: [obs EV-008].

System fields

FieldSet whenSource
add_time, update_timecreation, change[doc SRC-017]

Rules

Not tested

  • Deleting a stage that holds deals.
E-005 Organization

Product term: Organization · Parent: none · Status: draft

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idintsystem[net EV-009]
namestringyes[net EV-009]
owner_idintyescurrent user[net EV-009]
visible_tointyesowner's visibility group1, 3, 5, 7[net EV-009]
addressobject or nullno[net EV-009]
website, linkedinurl or nullno[net EV-009]
industry, annual_revenue, employee_countint or nullno[net EV-009]
label_idsint[]no[][net EV-009]
custom_fieldsobjectno[net EV-009]
is_deletedboolsystemfalse30-day restore[net EV-009] [obs EV-062]

Relations

RelationTargetCardinalityOn deleteSource
dealsE-001 Dealone to manydeals remain without the organization[obs EV-062]
personsE-006 Personone to manynot tested[doc SRC-017]
notes, files, documents, invoicesE-007 Note and othersone to manydeleted with the organization[obs EV-062]

Lifecycle

Created from the Add deal form (NEW badge) or the API; deleted from its page with a 30-day restore. Evidence: [obs EV-051] [obs EV-062].

System fields

FieldSet whenSource
add_time, update_timecreation, change[net EV-009]

Rules

Not tested

  • Enrichment ("Enrich" buttons), merging duplicates, the organization page itself.
E-006 Person

Product term: Person (contact person) · Parent: E-005 Organization (optional) · Status: draft

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idintsystem[doc SRC-017]
name, first_name, last_namestringname[doc SRC-017]
emails, phonesarray of {value, primary, label}nolabels such as work, mobile[doc SRC-017] [obs EV-050]
org_id, owner_idintno, yescurrent user[doc SRC-017]
visible_to, label_idsint, int[]yes, no[doc SRC-017]
marketing_statusenumnono_consent, unsubscribed, subscribed, archived[doc SRC-017]
custom_fieldsobjectno[doc SRC-017]

Relations

RelationTargetCardinalityOn deleteSource
organizationE-005 Organizationmany to onenot tested[doc SRC-017]
dealsE-001 Dealone to manynot tested[doc SRC-017]
activity participationE-002 Activitymany to manynot tested[net EV-009]

Lifecycle

Not studied: the study created no persons (no real or fake contact data in production).

System fields

FieldSet whenSource
add_time, update_timecreation, change[doc SRC-017]

Rules

Not tested

  • Everything observable: persons were out of scope to avoid contact records in production.
E-007 Note

Product term: Note · Parent: E-001 Deal, E-005 Organization or E-006 Person · Status: draft

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idintsystem[net EV-063] [doc SRC-022]
contentHTML stringyessanitized[net EV-063] [doc SRC-022]
deal_id, org_id, person_id, lead_id, project_idint or nullat least one link[net EV-063] [doc SRC-022]
pinned_to_deal_flag (and _organization_, _person_, _lead_, _project_)boolnofalse; true for lost comments[net EV-063]
user_idintsystemcurrent user[doc SRC-018]
active_flagboolsystemtruefalse when deleted[doc SRC-018]

Relations

RelationTargetCardinalityOn deleteSource
dealE-001 Dealmany to onethe deal dialog says notes are deleted with the deal[obs EV-045]

Lifecycle

Created from the Notes tab or as the lost comment; deleted with a confirmation that says it cannot be undone. Evidence: [obs EV-042] [obs EV-043].

System fields

FieldSet whenSource
add_time, update_timecreation, change[doc SRC-018]

Rules

Not tested

  • Notes tab editor, comments on notes ("Add a comment"), unpinning.
E-008 Activity type

Product term: Activity type · Parent: none (company list) · Status: draft

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idintsystem[net EV-025]
namestringyesshown as the subject placeholder[net EV-025] [obs EV-022]
key_stringstringsystemgenerated from the nameActivity.type[net EV-025] [doc SRC-021]
order_nrintyesthe first active type is the default for new activities[net EV-025] [obs EV-022]
icon_keystringyesone of about 40 icons (call, task, meeting, email...)[net EV-025] [doc SRC-021]
active_flagboolyestrueinactive types are hidden in the form[net EV-025]
is_custom_flagboolsystem[net EV-025]
colorstring or nullnonull[net EV-025]

Relations

RelationTargetCardinalityOn deleteSource
activitiesE-002 Activityone to manydeactivated types stay on old activities (settings text)[doc SRC-008]

Lifecycle

Managed in Company settings > Activities (A4; read only in this study).

System fields

FieldSet whenSource
add_time, update_timecreation, change[net EV-025]

Rules

Not tested

  • Creating, reordering or deactivating types.
E-009 Lost reason

Product term: Lost reason · Parent: none (company list) · Status: draft

Fields

FieldTypeRequiredDefaultConstraints or enumSource
labelstringyesup to 100 predefined reasons per company[obs EV-040] [doc SRC-011]
allow free-form (company flag)boolno"Allow free-form reasons"[doc SRC-012]

The deal stores the chosen text in Deal.lost_reason [net EV-063]. No public endpoint for the list was found [inf] Q-003.

Relations

RelationTargetCardinalityOn deleteSource
dealsE-001 Dealby textnot tested[net EV-063]

Lifecycle

Managed in Company settings > Lost reasons (A4; read only).

System fields

FieldSet whenSource
none observed[obs EV-040]

Rules

Not tested

  • Editing the list; the dialog with no predefined reasons.
E-010 User

Product term: User (seat) · Parent: company · Status: draft

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idintsystem[net EV-025]
name, emailstringyes[net EV-025]
locale, timezone_name, default_currencystringyesdrive date and number formats[net EV-025]
active_flag, is_deletedboolsystem[net EV-025]
is_adminnumbersystem[net EV-025]
accessarray of {app, admin, permission_set_id}systemapps such as sales, campaigns, projects[net EV-025]
is_youboolsystemmarks the current user ("(You)")[net EV-025]

Relations

RelationTargetCardinalityOn deleteSource
owns deals, activities, organizationsE-001, E-002, E-005one to manynot tested[net EV-009]
follows dealsE-001 Dealmany to manynot tested[obs EV-027]

Lifecycle

Managed in Settings > Manage users (seats are billed; A5 to add).

System fields

FieldSet whenSource
created, modified, last_loginaccount events[net EV-025]

Rules

Not tested

  • Roles, permission sets and visibility groups in practice (needs a second user).

Permissions

Observed with one user only (the operator, an admin). Everything else comes from the docs or the visibility options and needs a second account (L1) to confirm.

ActionItem ownerUsers in the owner's visibility groupDeals adminsFollowersEvidence
See a deal with visibility "Item owner"yesnoyesyes[obs EV-052]
See a deal with visibility "Item owner's visibility group"yesyesyesyes[obs EV-052]
See a deal with visibility "All users"yesyesyesyes[obs EV-052]
Edit pipelines and stagesadmins only per the docsnoyesno[doc SRC-004]
Delete dealswith a matching permissionnot testedyesnot tested[doc SRC-001]
Define lost reasonsnonoyesno[doc SRC-012]
TypeScript types
// Pipedrive data model as observed (E-001 to E-010). Field names follow the public API v2 where it exists.
// Evidence for each field is in data-model/entities/*.md.

export type Visibility = 1 | 3 | 5 | 7; // item owner | owner's group | group and sub-groups | all users

export type DealStatus = 'open' | 'won' | 'lost';

export interface Deal {
  id: number;
  title: string;
  value: number;
  currency: string; // ISO 4217
  pipeline_id: number;
  stage_id: number;
  status: DealStatus;
  owner_id: number;
  creator_user_id: number;
  person_id: number | null;
  org_id: number | null; // the form requires person_id or org_id
  probability: number | null; // 0-100, only when the pipeline allows it
  expected_close_date: string | null; // YYYY-MM-DD
  lost_reason: string | null;
  visible_to: Visibility;
  label_ids: number[];
  custom_fields: Record<string, unknown>;
  origin: string | null;
  channel_id: string | null;
  add_time: string; // ISO 8601 UTC
  update_time: string | null;
  stage_change_time: string | null;
  won_time: string | null;
  lost_time: string | null;
  close_time: string | null;
  is_archived: boolean;
  is_deleted: boolean; // soft delete, restorable for 30 days
}

export interface Activity {
  id: number;
  subject: string;
  type: string; // ActivityType.key_string; defaults to the first active type
  owner_id: number;
  creator_user_id: number;
  deal_id: number | null;
  org_id: number | null;
  person_id: number | null;
  lead_id: string | null;
  project_id: number | null;
  due_date: string; // YYYY-MM-DD
  due_time: string | null; // HH:MM, UTC
  duration: string | null; // HH:MM
  done: boolean;
  busy: boolean; // true when due_time is set
  marked_as_done_time: string | null;
  participants: { person_id: number; primary: boolean }[];
  priority: number | null;
  outcome: number | null;
  note: string | null; // HTML
  private: boolean;
  is_deleted: boolean;
}

export interface Pipeline {
  id: number;
  name: string;
  is_deal_probability_enabled: boolean;
  order_nr: number;
  is_deleted: boolean;
}

export interface Stage {
  id: number;
  pipeline_id: number;
  name: string;
  order_nr: number;
  deal_probability: number; // 0-100, default 100
  is_deal_rot_enabled: boolean;
  days_to_rotten: number | null; // 0 accepted
}

export interface Organization {
  id: number;
  name: string;
  owner_id: number;
  visible_to: Visibility;
  website: string | null;
  label_ids: number[];
  custom_fields: Record<string, unknown>;
  is_deleted: boolean;
}

export interface Person {
  id: number;
  name: string;
  org_id: number | null;
  owner_id: number;
  emails: { value: string; primary: boolean; label: string }[];
  phones: { value: string; primary: boolean; label: string }[];
  visible_to: Visibility;
  is_deleted: boolean;
}

export interface Note {
  id: number;
  content: string; // HTML
  deal_id: number | null;
  org_id: number | null;
  person_id: number | null;
  pinned_to_deal_flag: boolean;
  user_id: number;
  active_flag: boolean;
}

export interface ActivityType {
  id: number;
  name: string;
  key_string: string;
  order_nr: number; // lowest active one is the default
  icon_key: string;
  active_flag: boolean;
  is_custom_flag: boolean;
}

export interface LostReasonList {
  labels: string[]; // up to 100
  allow_free_form: boolean;
}

export interface User {
  id: number;
  name: string;
  email: string;
  locale: string;
  timezone_name: string;
  default_currency: string;
  is_admin: number;
  active_flag: boolean;
}

// Derived values the UI computes
export type ActivityState = 'overdue' | 'today' | 'future' | 'none'; // R-001, R-002
Entity relationships mermaid
erDiagram
    PIPELINE ||--|{ STAGE : "has ordered"
    STAGE ||--o{ DEAL : "holds"
    USER ||--o{ DEAL : "owns"
    USER }o--o{ DEAL : "follows"
    ORGANIZATION ||--o{ DEAL : "linked to"
    PERSON ||--o{ DEAL : "contact of"
    ORGANIZATION ||--o{ PERSON : "employs"
    DEAL ||--o{ ACTIVITY : "has"
    ORGANIZATION ||--o{ ACTIVITY : "has"
    PERSON }o--o{ ACTIVITY : "participates in"
    USER ||--o{ ACTIVITY : "owns"
    ACTIVITY_TYPE ||--o{ ACTIVITY : "classifies"
    DEAL ||--o{ NOTE : "has"
    ORGANIZATION ||--o{ NOTE : "has"
    PERSON ||--o{ NOTE : "has"
    LOST_REASON ||--o{ DEAL : "explains (by text)"

08API

What the web app asks its server for each action, with the shape of the data and no real values.

IDs in paths are :id. Shapes and types only; no real values. The web app calls the same host as the page (/api/v1/...) and passes a session_token query parameter on every call [net EV-025]; the public API (v1 and v2) is documented in SRC-017 and SRC-018. Deprecated v1 endpoints with v2 replacements are out of support since 2026-08-01 [doc SRC-026], so a compatible clone should model v2 and treat these web-app v1 calls as the UI's private contract.

MethodTemplateTriggered byRequest shapeResponse shapeEvidence
GET/api/v1/deals/:id/activities?done&startCard status icon popovernone{data: Activity(v1)[]}[net EV-025]
PUT/api/v1/activities/:idDone circle (popover, Focus){done: boolean}{data: Activity(v1)} with marked_as_done_time[net EV-025]
GET/api/v1/activities/:idAfter marking donenone{data: Activity(v1)}[net EV-025]
POST/api/v1/activitiesSave in the activity form{subject, type, busy_flag, due_date, attendees[], assigned_to_user_id, done, deal_id, participants[], person_id, org_id}201, {data: Activity(v1)}[net EV-031]
DELETE/api/v1/activities/:idActivity menu > Deletenone200[obs EV-048] [net EV-047]
GET/api/v1/activities?start_date&end_date&user_id&limit&include_duration&include_private&include_recurringDay agenda in the activity formnone{data: Activity(v1)[]}[net EV-025]
GET/api/v1/scheduler/timeslots?start_date&end_date&is_activeDay agendanone{data: [], related_objects: {events: []}}[net EV-025]
GET/api/v1/activityTypesActivity formnone{data: ActivityType[]}[net EV-025]
GET/api/:id/fields/activity?activeOnlyActivity formnone{data: Field[]} with mandatory and visibility flags[net EV-025]
GET/api/v1/users?include_deleted_usersOwner pickernone{data: User[]}[net EV-025]
GET/api/v1/deals/:idPrefill links; reload a dealnone{data: Deal(v1)} with next_activity_* and counts[net EV-025]
PUT/api/v1/deals/:id?include_projectsStage bar click; Won; Reopen{pipeline_id, stage_id} or {status}{data: Deal(v1)}[net EV-033] [net EV-063]
PUT/api/v1/deals/:idMark as lost{lost_reason, status}{data: Deal(v1)}[net EV-063]
POST/api/v1/notesLost comment{deal_id, content, pinned_to_deal_flag}{data: Note}[net EV-063]
POST/api/v1/dealsSave in the Add deal form{pipeline_id, visible_to, user_id, stage_id, title, org_id, origin, origin_id, channel, channel_id}201, {data: Deal(v1)} (81 keys)[net EV-063]
GET/api/:id/deals/count?archived_status&pipeline_id&quick_filter_id&statusAfter creating a dealnonecount[net EV-063]
DELETE/api/v1/deals/:idDeal menu > Deletenone200[net EV-047]
GET/api/v1/data-police/dataQualityRules/missingRequiredFields?deal_id&new_stage_idBefore a stage movenone{dealId, missingDealFields, missingPersonFields, missingOrganizationFields, personId, organizationId}[net EV-033]
GET/api/v1/data-police/dataQualityRules?enabledDeal pagenone{importantFields, requiredFields}[net EV-031]
POST/api/:id/automation-suggestions/suggestions/triggerAfter a stage move{pattern[], stageId}{success, data}[net EV-033]
GET/api/:id/automation-suggestions/suggestions?experimentVariant&onlyVisible&patternsDeal pagenonesuggestions[net EV-033]
POST/proactive-cards-service/api/v1/triggersAfter marking done[{triggerType}]{data: []}[net EV-025]
POST/api/v1/insights-api/deals/chart and /activities/chartWon modal statisticsreport filter objectschart data[net EV-063]
GET/api/v1/fastis/sync/active, /api/v1/fastis/sync/:id/statusActivity form (calendar sync check)none204 or {data: {status}}[net EV-025]
GET/api/v1/deals/:id/participants?limit&startActivity formnone{data: null} when none[net EV-025]

Public API facts a clone that offers an API should match:

  • v2 base https://api.pipedrive.com/api/v2, cursor pagination with limit (max 500) and additional_data.next_cursor [doc SRC-024] [net EV-009].
  • Daily token budget per company, scaled by plan and seats; HTTP 429 when exhausted [doc SRC-025].
  • Webhooks v2 with meta, data and previous; retries at 3, 30 and 150 seconds [doc SRC-027].
  • OAuth access tokens last 60 minutes [doc SRC-028].

Third-party scripts seen on the page: Segment, FullStory, Intercom, Google Tag Manager, Gainsight PX, Grafana Faro (front-end telemetry) [obs EV-001].

09Design system

Colors, typography, spacing, radius, shadow and motion as the product uses them.

Color

surfacergb(255, 255, 255)--pd-color-fill-white-static
app backgroundrgb(245, 245, 246)--pd-color-surface-app-background
text primaryrgb(33, 35, 44)--pd-color-text-black-static
text secondaryrgb(101, 104, 111)--pd-color-text-secondary
dividerrgba(33, 35, 44, 0.14)--pd-color-divider-medium-rgba
navigationrgb(33, 28, 82)--pd-color-navigation-background
primary (green)rgb(45, 134, 71)--pd-color-primary-default
negative (red)rgb(216, 60, 56)--pd-color-negative-default
warning (yellow)rgb(209, 184, 0)--pd-non-semantic-color-lemon-yellow-108
inforgb(13, 104, 197)--pd-color-info-strong
info backgroundrgb(239, 246, 255)--pd-color-info-background-light
learn (purple)rgb(97, 80, 225)--pd-color-secondary-strong

Theme(s) studied: light only. Window: 1710 × 925 CSS px (screenshots at 1502 × 812). Values come from tokens.js on the production board [obs EV-002]; the stylesheet declares 971 custom properties named --pd-*.

Color

TokenLightDarkVariableUsed forEvidence
surfacergb(255, 255, 255)not studied--pd-color-fill-white-staticcards, dialogs[obs EV-002]
app backgroundrgb(245, 245, 246)not studied--pd-color-surface-app-backgroundboard background, columns[obs EV-002]
text primaryrgb(33, 35, 44)not studied--pd-color-text-black-statictitles[obs EV-002]
text secondaryrgb(101, 104, 111)not studied--pd-color-text-secondarysecond lines, icons[obs EV-002]
dividerrgba(33, 35, 44, 0.14)not studied--pd-color-divider-medium-rgbaborders[obs EV-002]
navigationrgb(33, 28, 82)not studied--pd-color-navigation-backgroundsidebar[obs EV-002]
primary (green)rgb(45, 134, 71)not studied--pd-color-primary-default"+ Deal", Won, today icon, Save[obs EV-002]
negative (red)rgb(216, 60, 56)not studied--pd-color-negative-defaultLost, overdue icon, errors, delete buttons[obs EV-002]
warning (yellow)rgb(209, 184, 0)not studied--pd-non-semantic-color-lemon-yellow-108no-activity triangle[obs EV-002]
inforgb(13, 104, 197)not studied--pd-color-info-stronglinks, active sort[obs EV-002]
info backgroundrgb(239, 246, 255)not studied--pd-color-info-background-lightinfo boxes[obs EV-002]
learn (purple)rgb(97, 80, 225)not studied--pd-color-secondary-strongtip banners[obs EV-002]

Typography

TokenFamilySizeWeightLine heightUsed forEvidence
body smallInter12px45018pxcard second lines[obs EV-002]
bodyInter14px45021pxtext[obs EV-002]
body strongInter14px60021pxcard titles[obs EV-002]
headingInter16px60024pxstage names[obs EV-002]
labelInter11px60016pxbadges[obs EV-002]

Spacing, radius, shadow

TokenValueVariableUsed forEvidence
space 14pxnonemost paddings[obs EV-002]
space 28pxnonecard padding[obs EV-002]
space 1.56pxnonecompact controls[obs EV-002]
space 312pxnonesections[obs EV-002]
radius m8px--pd-radius-mcards, buttons[obs EV-002]
radius xs4px--pd-radius-xsinputs[obs EV-002]
shadow cardrgba(42, 54, 71, 0.05) 0 1px 2px 0nonecards[obs EV-002]
shadow popover0 0 2px rgba(0,0,0,0.24), 0 16px 24px 2px rgba(0,0,0,0.05), 0 6px 30px 5px rgba(0,0,0,0.06), 0 8px 10px -5px rgba(0,0,0,0.1)nonemenus, popovers[obs EV-002]

Motion

TokenDurationEasingUsed forEvidence
hover0.1scubic-bezier(0.5, 0, 0.2, 1)background and shadow on hover[obs EV-002]
dialog fadeabout 0.5snot measureddelete dialogs[obs EV-060]

Z-index layers

LayerValueUsed forEvidence
base1-2sticky headers[obs EV-002]
overlay50toolbar layers[obs EV-002]

Icons

NameSizeWhere usedEvidence
activity status (four states)24 pxdeal card[obs EV-010]
balance (weighted value)12 pxstage header[obs EV-010]
bell (rotting)12 pxstage header in the editor[obs EV-008]
activity type icons16 pxform type row, popover rows[obs EV-022]

Do not copy the icon files or the won illustration; draw new ones.

Breakpoints and layout

WidthChangeEvidence
1710 CSS pxSidebar 210 px; four stage columns of about 350 px[obs EV-011]
other widthsnot testednone

10Build plan

What to build and in what order, the acceptance tests, and what to copy, avoid and improve.

Updated: 2026-10-16 · Status: draft

Problem and users

Small and medium B2B sales teams in Brazil (2 to 50 sellers) need a pipeline that tells each seller what to do next, every day, and makes closing a deal fast. The studied product does this with one rule: every open deal should have a next activity. The clone keeps that rule and its signals, and adds what Brazilian teams need to buy it: WhatsApp, Portuguese, BRL, local invoicing and LGPD compliance.

Users: sellers (daily board and activities), sales managers (pipelines, stages, lost reasons), company admins (users, visibility, billing).

Launch blockers

From clone/barriers.md, severity blocks launch and adds lead time, with who clears each one and when.

BarrierSeverityOwnerStart by
BR-007 LGPD processor duties (DPA, records, incident process)blocks launchfounder with counselmonth 1
BR-009 NFS-e and CBS/IBS for the clone's own invoicesblocks launchfounder with an accountantmonth 1
BR-001 Terms of the studied productblocks launchcounselbefore building on this study
BR-005 WhatsApp Business Platform onboardingblocks feature (required to sell)engineering leadmonth 1
BR-002 Google restricted scopes and CASAblocks featureengineering leadmonth 1
BR-004 Microsoft publisher verification and Graphadds lead timeengineering leadmonth 2
BR-003 Google Calendar sensitive scopesadds lead timeengineering leadmonth 2
BR-008 Transfer clauses or São Paulo hostingadds lead timefoundermonth 1

Core loop

  1. The seller opens the board of a pipeline (S-001). Each card shows whether its next activity is overdue, today, in the future or missing (R-001), and the board is ordered by urgency (R-003).
  2. The seller works the top cards: from the card icon or the deal page, completes today's activity (R-013).
  3. When it was the last open activity, the product asks for the next one with sensible defaults and the day's agenda beside the form (R-014, R-016, R-017). Cancel is allowed and leaves a visible warning (R-015).
  4. The seller moves deals through stages in one click (R-030) and closes them as won or lost (R-022, R-027).
  5. The badge in the navigation keeps the count of overdue and due-today activities (R-012).

Scope by priority

PriorityFeatureRulesScreensNotes
P1F-001 Pipeline boardR-001 to R-011S-001Four activity states, urgency order, weighted totals, rotting
P1F-003 ActivitiesR-012, R-017, R-019 to R-021, R-047S-001, S-002, S-004Form with day agenda and 15-minute slots
P1F-004 Next-activity ruleR-013 to R-018S-001, S-002Improve the default type (see implications)
P1F-002 Deal detailR-030, R-031S-002Stage bar, Focus, History
P1F-005 WonR-022 to R-026S-002Ask what to do with open activities
P1F-006 LostR-027 to R-029S-002Reason list; comment kept as a note
P2F-007 Add dealR-037 to R-040S-001Person or organization required
P2F-008 Pipeline editorR-041 to R-043S-003Reject rotting of 0 days
P2F-009 Delete and restoreR-032 to R-036S-002, S-003Delete activities with their deal
P2F-015 WhatsAppnone observednoneRequired to sell in Brazil; waits for BR-005
P3F-011 Quick addR-046S-001One-key shortcuts
P4F-012 VisibilityR-048S-001Four levels from day one
P5F-013 Email sync, F-014 Calendar syncnone observednoneAfter BR-002, BR-003, BR-004
P5F-016 E-signaturenone observednoneThrough a Brazilian provider (BR-006)

Non-goals

  • Copying the studied product's brand, icons, illustrations or text (BR-014).
  • Leads inbox, campaigns, projects, products, AI assistant and reports in the first release.
  • Unofficial WhatsApp automation (BR-005).

Data model

See data-model/erd.mmd and data-model/types.ts.

Build order

  1. Start long lead-time approvals and launch blockers (they run in parallel): BR-007, BR-009, BR-005, BR-002, BR-008, then BR-004 and BR-003. Get counsel's answer on BR-001.
  2. Data model and persistence: E-001 to E-010, soft delete with 30-day restore, visibility levels.
  3. Core loop screens: S-001, S-002, C-003.
  4. Rules in clone/parity.md, P1 first (board, activities, next-activity rule, won, lost).
  5. Secondary features after the barriers they depend on: WhatsApp, email and calendar sync, e-signature.

Open questions

See questions.md.

Acceptance tests

One test per rule the clone must reproduce. A test passes when the clone shows the same behavior as the rule. Write each as an automated test before implementing it. Rows marked "differs on purpose" document the original behavior; the clone implements the improvement in clone/implications.md instead, and its test asserts the improved behavior.

TestRuleFeatureSummaryClone status
T-001R-001F-001Each card shows one of four activity states. Given an open deal on the board; when the board renders; then the card icon is red with "<" if its earliest open activity is overdue, green with ">" if it is due today, grey with ">" if it is in the future, and a yellow warning triangle if the deal has no open activitytodo
T-002R-002F-001An activity due today whose time has passed counts as overdue. Given a deal whose only overdue candidate is an activity due today at 09:00, viewed at 13:15; when the board renders; then the card icon is red and the popover shows "Today at 09:00" in redtodo
T-003R-003F-001The default order is overdue, today, no activity, future. Given a stage whose deals are in different activity states and the sort "Next activity (default)"; when the board loads; then the cards are ordered overdue first, then due today, then deals with no open activity, then deals whose next activity is in the futuretodo
T-004R-004F-001Within "today", an activity without a time comes before a timed one. Given two deals with activities due today, one without a time and one at 17:00; when the board loads; then the deal whose activity has no time is listed firsttodo
T-005R-005F-001Ties are broken by the newest deal first. Given deals in the same activity state and due date; when the board loads; then the most recently created deal comes firsttodo
T-006R-006F-001The board does not re-sort after an in-place change until reload. Given a card whose activity state changes from the popover, or a deal just created; when the change is saved; then the card keeps its position (a new deal goes to the top with a NEW badge) until the page is reloadeddiffers on purpose: see B-006 and clone/implications.md
T-007R-007F-001The stage header shows the weighted value of its deals. Given deals with values in a stage with probability P and no deal-level probability; when the board renders; then the header shows Σ value × P ÷ 100 and the number of dealstodo
T-008R-008F-001A stage with rotting at 0 days marks deals rotten at once. Given a stage with rotting on and 0 days; when a deal enters it; then the card turns pale pink and shows a red "<1d" badge whose tooltip reads "No actions for <1 days"todo
T-009R-009F-001Closed and deleted deals leave the board. Given a pipeline with a lost deal and a deleted deal; when the board loads; then neither card is shown and the deal count excludes themtodo
T-010R-010F-001The status icon opens the deal's activity list. Given a card; when the user clicks its status icon; then a popover lists the open activities with relative dates and done circles, plus "+ Schedule an activity"; with no activity it reads "You have no activities scheduled for this deal"todo
T-011R-011F-001Dragging a card shows four drop zones. Given the board; when the user starts dragging a card; then four zones appear along the bottom: Delete, Lost, Won, Move totodo
T-012R-012F-003The Activities badge counts the user's overdue and due-today activities. Given the user's open activities; when one is created, completed or becomes due; then the navigation badge equals the number of the user's open activities that are overdue or due todaytodo
T-013R-013F-004Completing an activity while others remain open does not prompt. Given a deal with three open activities; when the user marks one done from the card popover; then the row is struck through with a green check, the toast "Activity marked as done (subject)" appears, no modal opens, and the card icon updates to the next open activitytodo
T-014R-014F-004Completing the last open activity prompts for the next one. Given a deal with exactly one open activity; when the user marks it done from the card popover or from the deal page Focus block; then the modal "Schedule your next activity" opens, linked to the deal and its organization, after a short skeletontodo
T-015R-015F-004Cancelling the prompt leaves the deal without a next step. Given the "Schedule your next activity" modal; when the user clicks Cancel; then nothing is created, the card shows the yellow warning icon, and the deal page Focus shows "No focus items yet" with "+ Schedule an activity"todo
T-016R-016F-004The prompt defaults to the first activity type, today and no time. Given the prompt opens after completing a call; when it renders; then the selected type is the first active type in the company's type order (not the type just completed), the subject placeholder is that type's name, the date is today, the time is empty, availability is Free, the owner is the current user, and the deal and organization are linkeddiffers on purpose: see B-002 and clone/implications.md
T-017R-017F-003Choosing a time fills the next 15-minute slot and switches to Busy. Given the activity form with no time; when the user clicks the start time at 13:19; then 13:30 is filled, a list of 15-minute slots opens, Free becomes Busy, and the day agenda shows the new block at 13:30todo
T-018R-018F-004Saving the prompt creates the activity and confirms it. Given the prompt with a subject; when the user clicks Save; then the activity is created, the toast "Activity added · View" appears, and the activity shows in Focustodo
T-019R-019F-003API defaults for activities. Given an activity created through the API; when it has a due time; then busy is true; without a time busy is false; participants is empty when no person is linked; due_time is stored in UTCtodo
T-020R-020F-003The deal page marks overdue activities. Given an open activity due yesterday; when the deal page opens; then the Focus item shows a red OVERDUE badge and a red "Yesterday at 10:00"todo
T-021R-021F-003Done activities move from Focus to History. Given an activity in Focus; when it is marked done; then it leaves Focus and appears in History with a green check, and the History filter shows "Activities (1)"todo
T-022R-022F-005Won is one click and needs no confirmation. Given an open deal on its detail page; when the user clicks Won; then the deal becomes won at once: WON badge and Reopen replace the buttons, the stage bar turns light green, "Create project" turns green, and Won time appears in Detailstodo
T-023R-023F-005Winning shows a celebration with next steps. Given the personal preference for the celebration is on; when a deal is marked won on its detail page; then about 4 seconds later a modal shows the deal card, "Close time" and "Activities done", and asks "What's next for this won deal?" with "Schedule follow-up activity" and "Create a project", plus "Don't show me this again"todo
T-024R-024F-005The won follow-up opens with today and the first type. Given the company setting for the won follow-up popup names a type and a delay; when the user chooses "Schedule follow-up activity"; then the form "Schedule an activity" opens with a "Follow up after winning a deal" box, today's date and the first activity type selected; the configured type and delay are not applied (setting read during the preflight, Q-018)differs on purpose: see B-001 and clone/implications.md
T-025R-025F-005, F-006Open activities stay open when a deal is won or lost. Given a deal with one open activity; when the deal is marked won or lost; then the activity remains open in Focus; nothing asks what to do with itdiffers on purpose: see B-004 and clone/implications.md
T-026R-026F-005Reopen returns a closed deal to open. Given a won deal; when the user clicks Reopen; then the deal is open again at once, the Won and Lost buttons return and Won time disappearstodo
T-027R-027F-006Losing a deal requires a reason. Given the Mark as Lost dialog with no reason selected; when the user clicks "Mark as lost"; then the reason select gets a red border, no message is shown and no request is senttodo
T-028R-028F-006With predefined reasons, the reason must come from the list. Given the company has predefined lost reasons and the setting "Allow free-form reasons" on; when the user types text that matches no reason and presses Enter; then the list stays empty, no option to use the text appears, and the reason remains unsetdiffers on purpose: see B-005 and clone/implications.md
T-029R-029F-006The lost comment becomes a note pinned to the deal. Given a reason and a comment in the dialog; when the user marks the deal lost; then the deal gets status lost with the reason, and a note with the comment is created and pinned: it shows in Focus (yellow) and History, and Details shows Lost time and Lost reasontodo
T-030R-030F-002Clicking a stage moves the deal at once. Given an open deal; when the user clicks a later stage in the stage bar; then the app checks the target stage's required fields, moves the deal without confirmation, and may show a "Recommended first automation" banner for that stagetodo
T-031R-031F-002The stage bar shows time per stage. Given a deal created directly in the third stage; when its page opens; then the first three chevrons are green with "0 days", the current stage tooltip reads "Been here for N minutes", and a later stage reads "This deal has not been in this stage yet"todo
T-032R-032F-009Deleting a deal does not delete its activities. Given an open deal with one open activity; when the user deletes the deal from its "..." menu; then the dialog mentions notes, files, documents and invoices but not activities; the deal page turns to a deleted state with Restore and a permanent deletion date 30 days later; the activity stays open and not deleted (the docs say it is deleted)differs on purpose: see B-003 and clone/implications.md
T-033R-033F-009Activities of a deleted deal can be deleted from its page. Given a deleted deal that still lists an open activity in Focus; when the user chooses Delete in the activity's menu and confirms; then the activity is deleted (the API reports is_deleted true)todo
T-034R-034F-009Deleting a note asks for confirmation and cannot be undone. Given a pinned note on a deal; when the user chooses Delete in its menu; then the dialog says "This action cannot be undone"; after confirming, the note disappears from Focus and Historytodo
T-035R-035F-009Deleting a pipeline requires a decision about its deals. Given a pipeline with deals; when the user chooses Delete pipeline in the editor; then the dialog asks what to do with the N deals: "Move deals to another pipeline" (default, needs a pipeline and stage) or "Delete deals" (warning: restorable within 30 days); the delete button stays disabled until the choice is completetodo
T-036R-036F-009Deleting an organization keeps other linked items. Given an organization; when the user deletes it; then the dialog says its notes, files, documents and invoices are deleted, other linked items remain without the organization, and it can be restored within 30 daystodo
T-037R-037F-007A deal needs a person or an organization in the form. Given the Add deal form with only a title; when the user clicks Save; then both contact fields show "A person or organization is required" with red borders and Save dimstodo
T-038R-038F-007Unmatched organization text creates a new organization. Given text typed in the Organization field; when it does not exactly match an existing organization; then the field shows a NEW badge and the list offers "Add 'text' as new organization"; picking the existing match removes the badgetodo
T-039R-039F-007New deal defaults. Given the Add deal form opened from a pipeline board; when it opens; then the pipeline is the current one, the first stage is selected, the owner is the current user, the currency is the company currency, and Visible to is "Item owner's visibility group"todo
T-040R-040F-007A saved deal appears at the top of its stage. Given a valid Add deal form; when the user saves; then the deal is created, the toast 'New deal "title" created · View' appears, the details view does not open, and the card shows at the top of its stage with a NEW badge until reloadtodo
T-041R-041F-008A new pipeline starts with five default stages. Given the pipeline selector; when the user chooses New pipeline; then the editor opens with the name "New pipeline", deal probability on, and five stages (Qualified, Contact Made, Demo Scheduled, Proposal Made, Negotiations Started) at 100% with rotting offtodo
T-042R-042F-008Rotting accepts zero days. Given a stage in the editor; when the user turns rotting on; then the days field starts at 0, the header shows "0 days", and saving keeps 0differs on purpose: see B-007 and clone/implications.md
T-043R-043F-008Deleting an empty stage asks for confirmation. Given a stage with no deals in the editor; when the user clicks Delete Stage; then a dialog says "There are no deals in this stage right now" with Cancel and Delete stagetodo
T-044R-046F-011Quick add offers one-key shortcuts. Given the "+" button in the top bar; when the user opens it; then it lists Person P, Organization O, Activity A, Deal D, Lead L, Note N, Product R, Project Etodo
T-045R-047F-010The activities list opens on To-do with period tabs and a type filter. Given the Activities list; when it opens; then the To-do tab is selected, the other tabs are Overdue, Today, Tomorrow, This week, Next week and Select period, a type filter row offers All plus one icon per type, and a count shows "N activities"todo
T-046R-048F-012Visibility levels of an item. Given the Visible to field; when it opens; then it offers Item owner (owner, Deals admins, followers, parent visibility groups), Item owner's visibility group, Item owner's visibility group and sub-groups, and All userstodo

Copy

AreaItemWhyRefs
BoardFour-state activity icon on every card, clickable, opening the deal's activity listOne glance tells the seller what needs actionR-001, R-010
BoardDefault order: overdue, today, no next step, future; newest first on tiesPuts the day's work at the topR-003, R-004, R-005
ActivitiesPrompt for the next activity when the last open one is done; allow Cancel; leave a visible warningKeeps every deal moving without blocking the sellerR-014, R-015
ActivitiesForm with the day agenda beside it, next 15-minute slot, Busy on timed activitiesConflicts are visible before savingR-017
ActivitiesGlobal badge of overdue and due-today activitiesDaily workload in one numberR-012
LostRequired reason from a list; comment kept as a pinned noteClean loss analysisR-027, R-029
PipelineDeleting a pipeline forces a decision about its dealsPrevents silent data lossR-035
DeleteDeleted items keep a page with the purge date and RestoreEasy recoveryR-032
Stage barDays per stage and one-click movesSpeed and visibility of cycle timeR-030, R-031

Avoid

AreaItemWhyRefs
ActivitiesDefaulting the next activity to the first type in the listSellers change it almost every timeB-002
WonIgnoring the configured follow-up type and delayThe setting looks brokenB-001
DeleteLeaving activities open when their deal is deleted, and not saying soOrphaned tasks on calendars and countsB-003
Won and lostLeaving open activities pending on closed deals without askingStale tasksB-004
LostA free-form setting that the dialog does not honorConfusing configurationB-005
Pipeline editorAccepting rotting of 0 daysEvery deal looks rottenB-007
Pipeline deleteDefaulting to moving deals into another pipelineEasy to pollute a live pipelineB-009
LocaleMixing the interface language with another language's dates and wordsLooks unfinishedB-008
InterfaceSeveral tip and upsell banners on the same pageNoiseB-010

Improve

AreaItemHowRefs
Next activitySuggest the next type and date from the stage playbook or the activity just completedStore a default next step per stage; preselect it in the promptR-016, B-002
ClosingAsk what to do with open activities on won, lost and deleteOptions: complete, cancel, keep; default to cancel for lost and deleteB-003, B-004
SignalsShow the same activity state in every view (list, deal page header, API)Expose a computed next_step_state field: overdue, today, future, noneR-001, R-020
Rule in the domainEnforce the next-activity rule in the API, not only in the UIAPI responses and webhooks flag deals with no next step; integrations and agents see itR-014
BoardRe-sort in place after a change, with a short animationRemoves the stale order until reloadB-006
WhatsAppFirst-class WhatsApp activity and conversation linked to the dealThe channel Brazilian SMBs use; requires BR-005BR-005
BrazilPortuguese interface, BRL, NFS-e for the clone's own billing, São Paulo hostingLocal fit and complianceBR-007, BR-008, BR-009

11Before you launch

Approvals, licenses and certifications to start early, and what a new product cannot copy. Building can start now; these decide when you can sell.

Clone target market: see 00-charter.md (SMBs in Brazil). Not legal advice. A legal reading without a source is [inf] with a question for counsel in questions.md.

Summary

Launch blockers first. One row per barrier; details below.

BarrierCategorySeverityMarket weightBlocksLead time
BR-007 LGPD processor dutiesRegulationblocks launchrequired to sellSelling to any businessweeks (contracts and processes)
BR-009 Service invoices and the tax reformThe clone's own operationblocks launchrequired to sellCharging customersweeks (accountant, invoicing provider)
BR-001 Pipedrive terms on reverse engineeringIntellectual property and termsblocks launchn/aUsing this study to build a competitoruntil counsel decides
BR-005 WhatsApp Business PlatformPermissioned integrationblocks featurerequired to sellF-015days to weeks
BR-002 Gmail restricted scopesPermissioned integrationblocks featureimportantF-013 (Gmail)several weeks, yearly
BR-004 Microsoft 365 mail and calendarPermissioned integrationadds lead timeimportantF-013, F-014 (Microsoft)days
BR-003 Google Calendar scopesPermissioned integrationadds lead timeimportantF-014 (Google)3-5 business days
BR-008 International transferRegulationadds lead timeimportantHosting outside Brazilweeks (contracts)
BR-010 Recurring billing methodsThe clone's own operationadds costrequired to sellSubscriptionsdays (PSP onboarding)
BR-006 E-signaturesRegulationadds costimportantF-016days (provider integration)
BR-012 Bulk email sender rulesDistribution gatekeepersblocks featureimportantEmail sending from the CRMdays (DNS)
BR-011 Security certificationsCertificationsadds costminorLarger buyersmonths
BR-013 Enterprise controlsCertificationsadds costminorF-012 at scalemonths
BR-015 Ecosystem and dataData and network effectsmoatimportantSwitching from the productongoing
BR-014 Brand and assetsIntellectual propertymoatn/aCopying UI assetsnone (do not copy)

BR-001 Pipedrive's terms forbid reverse engineering and building a competing product

  • Category: intellectual property and terms
  • Blocks: using this knowledge base to build and sell a competing CRM without legal clearance
  • Gatekeeper: Pipedrive's Terms of Service, s.4.1 "Prohibited Activities"
  • Severity: blocks launch (legal risk until counsel decides)
  • Market weight: n/a
  • What it takes: the Terms bar copying and derivative works, use for competitive analysis or to build a competing product, reverse engineering, and access by direct competitors [doc SRC-031]; the AUP bans harvesting data about others [doc SRC-032]. Whether behavior observed in the user's own account may inform a new product is a legal question [inf] Q-010
  • Lead time and cost: counsel review
  • Mitigation: rebuild from behavior, not assets (clean room); write new copy and art; record the decision in STATUS.md
  • Evidence: [doc SRC-031] [doc SRC-032]

BR-002 Gmail sync needs restricted-scope verification and a yearly security assessment

  • Category: permissioned integration
  • Blocks: F-013 for Gmail and Google Workspace mailboxes
  • Gatekeeper: Google OAuth verification and the App Defense Alliance CASA assessment
  • Severity: blocks feature
  • Market weight: important (Google Workspace is common among Brazilian SMBs) [inf] Q-014
  • What it takes: all Gmail read and modify scopes are restricted; an app that stores that data on its servers needs a security assessment by an authorized lab, repeated at least every 12 months; also a public homepage, privacy policy, domain verification and a demo video [doc SRC-046] [doc SRC-048] [doc SRC-050] [doc SRC-047]
  • Lead time and cost: verification "can potentially take several weeks"; Google publishes no fee [doc SRC-046]; cost from labs is open [inf] Q-013. Unverified apps are capped at 100 users [doc SRC-049]
  • Mitigation: start verification in month one; launch with IMAP or forwarding (BCC) capture until approved; keep scopes minimal
  • Evidence: [doc SRC-046] [doc SRC-048] [doc SRC-049] [doc SRC-050]

BR-003 Google Calendar sync needs sensitive-scope verification

  • Category: permissioned integration
  • Blocks: F-014 for Google calendars
  • Gatekeeper: Google OAuth verification
  • Severity: adds lead time
  • Market weight: important [inf] Q-014
  • What it takes: reading calendar events is a sensitive scope; review typically takes 3-5 business days and needs the same brand and privacy materials [doc SRC-047]
  • Lead time and cost: 3-5 business days; no fee published [doc SRC-047]
  • Mitigation: submit together with BR-002; start with one-way sync
  • Evidence: [doc SRC-047] [doc SRC-037]

BR-004 Microsoft 365 mail and calendar need Graph, publisher verification and tenant consent

  • Category: permissioned integration
  • Blocks: F-013 and F-014 for Microsoft mailboxes
  • Gatekeeper: Microsoft Entra and Microsoft Graph
  • Severity: adds lead time
  • Market weight: important [inf] Q-016
  • What it takes: publisher verification (free, needs a Microsoft AI Cloud Partner Program account) [doc SRC-051]; delegated Mail and Calendars permissions need no admin consent but tenants can restrict user consent [doc SRC-052] [doc SRC-053]; optional yearly Microsoft 365 Certification [doc SRC-054]; Exchange Web Services is being disabled from October 2026 and fully in April 2027, so the clone must use Graph [doc SRC-055]
  • Lead time and cost: days for verification; certification months and paid (no public price) [doc SRC-054]
  • Mitigation: build on Graph only; do publisher verification before the first pilot
  • Evidence: [doc SRC-051] [doc SRC-052] [doc SRC-053] [doc SRC-054] [doc SRC-055]

BR-005 WhatsApp needs Meta's Business Platform: verification, templates and per-message fees

  • Category: permissioned integration
  • Blocks: F-015
  • Gatekeeper: Meta, WhatsApp Business Platform
  • Severity: blocks feature
  • Market weight: required to sell (Brazilian SMB sales run on WhatsApp) [inf] Q-014
  • What it takes: Tech Provider onboarding with business verification and App Review [doc SRC-058]; approved message templates (review up to 24 hours) [doc SRC-059]; messaging limits from 250 recipients per day for new portfolios [doc SRC-060]; per-message pricing since July 2025, billed in BRL for Brazilian customers from July 2026 [doc SRC-056]; Pipedrive itself integrates through this platform [doc SRC-038]. Meta's s.4.7 restricts providers whose main product is AI; in Brazil CADE suspended that restriction [doc SRC-057] [doc SRC-062]
  • Lead time and cost: days to weeks for verification; per-message fees paid by each customer [doc SRC-056]
  • Mitigation: start Tech Provider onboarding on day one or partner with a Business Solution Provider; never automate WhatsApp Web (the WhatsApp terms ban unofficial automation and accounts get disabled [doc SRC-061])
  • Evidence: [doc SRC-056] [doc SRC-058] [doc SRC-059] [doc SRC-060] [doc SRC-061]

BR-006 E-signatures: validity rules in Brazil and a signature provider

  • Category: regulation and licensing
  • Blocks: F-016
  • Gatekeeper: MP 2.200-2/2001 and Lei 14.063/2020; signature providers
  • Severity: adds cost
  • Market weight: important
  • What it takes: non-ICP signatures are valid when the parties accept them (MP 2.200-2 Art. 10 §2) [doc SRC-064] [doc SRC-065]; Lei 14.063 defines simple, advanced and qualified signatures and its Chapter II does not apply between private parties [doc SRC-063]; some acts need a qualified (ICP-Brasil) signature [doc SRC-063]. Pipedrive's Smart Docs offer "basic digital signing" [doc SRC-039]. Whether this covers the buyers' contracts is a question for counsel [inf] Q-012
  • Lead time and cost: integrate an existing provider (Clicksign, D4Sign with an ICP-Brasil option) [doc SRC-066] [doc SRC-067]
  • Mitigation: integrate a Brazilian provider instead of building signing; add an acceptance clause to the clone's templates
  • Evidence: [doc SRC-063] [doc SRC-064] [doc SRC-065] [doc SRC-066] [doc SRC-067]

BR-007 LGPD: the clone is a processor of its customers' contact data

  • Category: regulation and licensing
  • Blocks: selling the clone to any business
  • Gatekeeper: LGPD and the ANPD
  • Severity: blocks launch
  • Market weight: required to sell
  • What it takes: processor duties (records of processing, follow instructions, security, joint liability) [doc SRC-068]; incidents: the controller reports within 3 business days, the processor alerts the controller without undue delay [doc SRC-070]; an encarregado is optional for a processor but expected for the clone's own data [doc SRC-071]; small agents get simplified duties and doubled deadlines [doc SRC-069]; Pipedrive's own DPA is the benchmark [doc SRC-035]
  • Lead time and cost: weeks to prepare a DPA, records, incident runbook and privacy notice
  • Mitigation: publish a DPA naming the customer as controller, a subprocessor list and an incident process before the first paying customer
  • Evidence: [doc SRC-068] [doc SRC-069] [doc SRC-070] [doc SRC-071] [doc SRC-035]

BR-008 Hosting outside Brazil needs a transfer mechanism

  • Category: regulation and licensing
  • Blocks: hosting the clone outside Brazil
  • Gatekeeper: ANPD Resolution 19/2024
  • Severity: adds lead time
  • Market weight: important
  • What it takes: standard contractual clauses adopted without changes, and a transfer notice [doc SRC-072]; only the EU is recognized as adequate [doc SRC-073]. Pipedrive has no Brazil region; Brazilian accounts default to the US [doc SRC-034], and its DPA includes the Brazil clauses [doc SRC-035]
  • Lead time and cost: contract work
  • Mitigation: host in São Paulo (also a selling point) or include the clauses in the DPA
  • Evidence: [doc SRC-072] [doc SRC-073] [doc SRC-034] [doc SRC-035]

BR-009 Service invoices (NFS-e) and the 2026 tax reform for the clone's own sales

  • Category: the clone's own operation
  • Blocks: charging Brazilian customers
  • Gatekeeper: municipalities (ISS, NFS-e), Receita Federal and CGIBS (CBS and IBS)
  • Severity: blocks launch
  • Market weight: required to sell
  • What it takes: issue NFS-e for each subscription invoice; the national NFS-e standard is pushed by LC 214/2025 art. 62 [doc SRC-074] [doc SRC-075]; from 2026 invoices carry an informational CBS/IBS highlight, optional at first on NFS-e and from 2027 for Simples Nacional [doc SRC-076] [doc SRC-077]; which ISS item applies to SaaS varies by city [doc SRC-085] [inf] Q-011
  • Lead time and cost: weeks with an accountant and an invoicing API provider
  • Mitigation: use an NFS-e issuing provider from day one; confirm the ISS item with an accountant
  • Evidence: [doc SRC-074] [doc SRC-075] [doc SRC-076] [doc SRC-077]

BR-010 Recurring billing methods buyers expect

  • Category: the clone's own operation
  • Blocks: subscription billing
  • Gatekeeper: Banco Central do Brasil (through licensed payment providers)
  • Severity: adds cost
  • Market weight: required to sell [inf] Q-015
  • What it takes: Pix Automático (launched June 2025) needs a receiver with an active CNPJ and a receiving provider [doc SRC-078] [doc SRC-079]; collecting your own subscriptions through a licensed provider needs no Central Bank license [doc SRC-084]
  • Lead time and cost: provider fees per transaction
  • Mitigation: integrate a provider with Pix Automático, boleto and card
  • Evidence: [doc SRC-078] [doc SRC-079] [doc SRC-084]

BR-011 Security certifications larger buyers ask for

  • Category: certifications buyers require
  • Blocks: deals with larger or regulated buyers
  • Gatekeeper: auditors (ISO 27001, SOC 2)
  • Severity: adds cost
  • Market weight: minor for SMBs [inf] Q-017
  • What it takes: Pipedrive holds ISO 27001:2022, ISO 27701, SOC 2 Type 2 and SOC 3 [doc SRC-033]
  • Lead time and cost: months and audit fees
  • Mitigation: publish a security page and controls first; certify when upmarket deals need it
  • Evidence: [doc SRC-033]

BR-012 Email sent from the CRM must meet bulk sender rules

  • Category: distribution gatekeepers
  • Blocks: campaigns, sequences and bulk email from the clone
  • Gatekeeper: Gmail, Yahoo, Outlook.com
  • Severity: blocks feature
  • Market weight: important
  • What it takes: SPF, DKIM and DMARC, one-click unsubscribe, spam rate under 0.3% for bulk senders [doc SRC-080] [doc SRC-081]; Outlook.com rejects non-compliant high-volume mail with 550 5.7.515 [doc SRC-082]
  • Lead time and cost: DNS setup per customer domain; deliverability monitoring
  • Mitigation: send through each user's own mailbox for one-to-one email; a managed sending domain with compliance checks for bulk
  • Evidence: [doc SRC-080] [doc SRC-081] [doc SRC-082]

BR-013 Enterprise controls are part of the higher plans

  • Category: certifications buyers require
  • Blocks: F-012 at scale (teams that need permission sets and audit)
  • Gatekeeper: buyers' IT
  • Severity: adds cost
  • Market weight: minor for SMBs
  • What it takes: SAML SSO on all plans [doc SRC-044]; security rules and the audit log on Ultimate [doc SRC-042] [doc SRC-043]; visibility groups and permission sets on Premium and Ultimate [doc SRC-041]
  • Lead time and cost: engineering
  • Mitigation: build the visibility model (four levels) early; SSO and audit later
  • Evidence: [doc SRC-041] [doc SRC-042] [doc SRC-043] [doc SRC-044]

BR-014 Brand, icons, illustrations and copy cannot be copied

  • Category: intellectual property and terms
  • Blocks: copying UI assets
  • Gatekeeper: Pipedrive's rights in its materials
  • Severity: moat
  • Market weight: n/a
  • What it takes: the Terms forbid copying Pipedrive materials [doc SRC-031]; the won illustration and icons are assets [obs EV-034]
  • Lead time and cost: design work for new assets and copy
  • Mitigation: new names, icons, illustrations and microcopy; keep only the behavior
  • Evidence: [doc SRC-031] [obs EV-034]

BR-015 The ecosystem and the customers' data are a moat

  • Category: data, content and network effects
  • Blocks: matching integrations and switching
  • Gatekeeper: Pipedrive Marketplace; customers' existing data
  • Severity: moat
  • Market weight: important
  • What it takes: Pipedrive cites 400+ Marketplace apps with a reviewed developer program [doc SRC-045] [doc SRC-029]; a public API with webhooks and OAuth [doc SRC-027] [doc SRC-028]
  • Lead time and cost: ongoing
  • Mitigation: importers for Pipedrive exports and spreadsheets; a public API and webhooks from the start; focus on WhatsApp and Brazilian integrations
  • Evidence: [doc SRC-045] [doc SRC-029] [doc SRC-027] [doc SRC-028]

12Cross-cutting topics

Behavior that spans many screens: search, notifications, permissions and more.

Topic: deletion and restore

Features: F-009 · Status: draft

Summary

Deletes are soft for 30 days. The confirmations say what goes with each item, but deals and activities do not behave as the deal dialog and the docs say: activities survive their deal.

Behavior

  • Deal: dialog lists notes, files, documents and invoices; after delete the page shows a permanent deletion date 30 days later and a Restore button; activities stay open (R-032) [obs EV-045] [obs EV-046] [net EV-047].
  • Docs say deleting a deal deletes its activities, notes and attachments [doc SRC-014]; observed behavior differs for activities.
  • Activity: deletable from the deleted deal's page (R-033) [obs EV-048].
  • Note: "cannot be undone" (R-034) [obs EV-043].
  • Pipeline: move or delete its deals, with a warning when deleting (R-035) [obs EV-060] [obs EV-061].
  • Organization: linked items remain without it (R-036) [obs EV-062].
  • Restore data keeps deleted leads, deals, people and organizations for 30 days [doc SRC-015]; whether activities can be restored there is open (Q-002).

Scope and configuration

SettingScopeDefaultEvidence
Retentioncompany30 days[obs EV-046] [doc SRC-015]

Rules

Not tested

  • Restoring anything; bulk delete from lists; deleting persons.
Topic: hidden writes

Actions in this product that change data or state without a Save button.

PatternWhereClassEvidence
Clicking a done circle completes the activity at once (no Save)Card popover, FocusA2[obs EV-020]
Completing the last open activity opens a modal; Cancel saves nothingCard popover, FocusA1[obs EV-024]
Clicking a stage chevron moves the deal at onceDeal pageA2[obs EV-032]
Won and Reopen apply on one clickDeal pageA2[obs EV-035] [obs EV-037]
Lost comments create a pinned noteMark as LostA2[obs EV-042]
Unmatched organization text creates a new organization on SaveAdd deal formA2[obs EV-051]
Deleting a deal leaves its activities openDeal pageA2[net EV-047]
Deleting a pipeline defaults to moving its deals into another pipelinePipeline editorA2[obs EV-060]
After deleting a pipeline the app opens another one, which becomes where Deals opens by defaultBoardA3[inf] Q-005
Banners and tips ("Don't show me this again", close icons) change personal preferencesDeal page, won modalA3[obs EV-034]

Not tested

  • Whether sort, filter and view choices persist per user (not changed).
  • Whether opening a deal records it in "recently viewed".
Topic: locale and formats

Features: F-001, F-002, F-003 · Status: draft

Summary

The account used English (US) for the interface with a Brazilian region setting and BRL. Numbers, dates and some sentence glue follow the regional setting, so the English interface shows Portuguese dates and words.

Behavior

  • Money: R$ 1.234.567,89 (dot thousands, comma decimals) on cards and headers [obs EV-010].
  • Short dates in forms: 16 de out de 2026, pattern D [de] MMM [de] YYYY [obs EV-022].
  • Long dates: 10 de outubro de 2026 in the deal summary [obs EV-027].
  • Agenda header: sexta-feira, outubro 16º (Portuguese weekday with an English-style ordinal) [obs EV-022].
  • History: Hoje às 13:11 next to English labels [obs EV-027].
  • Form copy: "Add Location, Video call e Description" (Portuguese "e") [obs EV-022].
  • Expected close date input placeholder DD/MM/YYYY [obs EV-049].
  • API times are UTC; the UI shows local time (UTC−03:00) [net EV-009] [obs EV-019].

Scope and configuration

SettingScopeDefaultEvidence
Interface languageuserEnglish (US) in this account[obs EV-001]
Regional formatuserBrazilian Portuguese formats[obs EV-022]
Default currencyuser and companyBRL[obs EV-049]

Rules

Not tested

  • Portuguese interface language; other regional settings; time zone changes.
Topic: visibility and permissions

Features: F-012 · Status: draft

Summary

Every deal, organization and person has a visibility level. Pipelines are visible by visibility group: an account with one default group shows every pipeline to every user. Creating a group or changing pipeline access is a company setting.

Behavior

  • Four levels: Item owner; Item owner's visibility group (default for new deals); group and sub-groups; All users. "Item owner" still shows the item to Deals admins, followers and parent groups (R-048) [obs EV-052].
  • API values 1, 3, 5, 7 [net EV-009].
  • Visibility groups and permission sets: 15 each on Premium, 25 on Ultimate, none on Lite and Growth [doc SRC-041].
  • Only deal admins edit pipelines [doc SRC-004].

Scope and configuration

SettingScopeDefaultEvidence
Item visibilityitemowner's visibility group[obs EV-052]
Pipeline accessvisibility groupall pipelines in the default group[doc SRC-041]

Rules

Not tested

  • The view of a second user (needs L1 with two accounts).

13Findings

Problems and strengths noticed in the product during the study.

Problems

IDFindingSeverityWhereEvidence
B-001The won follow-up form ignores the company's configured activity type and delay: it opens with today and the first typeMediumC-003 after C-004[obs EV-036]
B-002The next activity always defaults to the first type in the company list, not the type just completed; with many custom types the seller changes it almost every timeMediumC-003[obs EV-022] [net EV-031]
B-003Deleting a deal leaves its activities open and not deleted, and the confirmation does not mention activities; the docs say they are deletedMediumS-002[obs EV-045] [net EV-047] [doc SRC-014]
B-004Winning or losing a deal does not ask what to do with its open activities; they stay pending on a closed dealMediumS-002[obs EV-035] [obs EV-042]
B-005Free-form lost reasons cannot be entered even with "Allow free-form reasons" on, when predefined reasons existLowC-005[obs EV-041]
B-006The board does not re-sort after an in-place change; a deal that just lost its next step stays at the top until reloadLowS-001[obs EV-024]
B-007Rotting accepts 0 days, which marks every deal in the stage as rotten the moment it entersLowS-003[obs EV-008] [obs EV-016]
B-008English interface mixed with Portuguese dates and words ("e", "Hoje às", "outubro 16º")LowS-002, C-003[obs EV-022] [obs EV-027]
B-009Pipeline deletion defaults to moving the deals into another pipeline; a hurried confirm can push test or old deals into a live pipelineLowC-008[obs EV-060]
B-010Several tip and upsell banners on one deal page (automation suggestion, field descriptions, pipeline-specific fields)LowS-002[obs EV-032] [obs EV-035]
B-011The won modal waits about 4 seconds for report calls before it appearsLowC-004[obs EV-034] [net EV-063]

Strengths

  • One clear sales rule in the product: every open deal should have a next activity, enforced by a prompt at the exact moment the last one is completed, never by blocking [obs EV-022].
  • One icon with four states on every card, and the warning icon is itself the button to schedule [obs EV-013] [obs EV-018].
  • Default order by urgency: overdue, today, no next step, future [obs EV-010].
  • Activity form with the day agenda beside it, the next free 15-minute slot, and Busy set automatically [obs EV-023].
  • A global badge of overdue and due-today activities [obs EV-010].
  • Lost requires a reason from a list; the comment is kept as a pinned note [obs EV-042].
  • Pipeline deletion forces a decision about its deals [obs EV-060].
  • Deleted deals keep a page with a clear permanent deletion date and a Restore button [obs EV-046].
  • The stage bar shows time spent per stage and moves the deal in one click [obs EV-028].

14Open questions

What the study could not confirm, and how to answer it.

IDQuestionWhy it mattersHow to answerStatus
Q-001Confirm: the first click on Won, Lost, "+ Deal" and item menus was often ignored. Product bug or an artifact of driving a browser window that was not in front?An earlier study reported it as a product bugA person clicks the same controls by hand in a focused windowopen
Q-002Confirm: can deleted activities be restored? The activity delete dialog points to Restore data, which listed leads, deals, people, organizations, products and projects, but no activitiesTeardown and the clone's trash designIn L1, delete an activity and look for it in Restore dataopen
Q-003Confirm: is a free-form lost reason offered only when the company has no predefined reasons? Is there an API for the reason list?R-028 and E-009In L1, remove the predefined reasons and mark a deal lost; check the API referenceopen
Q-004Confirm: after saving a new pipeline, the board returns to the pipeline viewed before (seen in this session, not captured)S-003 behaviorCreate a pipeline in L1 and capture the board after Saveopen
Q-005Confirm: after deleting a pipeline, the app opens another pipeline, and that becomes where Deals opens by default (seen and restored in this session, not captured)Hidden write on a user preferenceRepeat in L1 and capture /deals-default before and afteropen
Q-006Confirm: what another user sees of "Item owner" deals and of a new pipelineVisibility model (R-048)L1 with a second useropen
Q-007Confirm: does the next-activity prompt also open for activities linked only to a person or organization, and from the Activities list?Scope of R-014Test in L1open
Q-008Confirm: what resets the rotting timer (docs say done activities, notes, files and emails)R-008 for longer periodsSet rotting to 1 day in L1 and test over two daysopen
Q-009Confirm: does a change in one tab or by another user appear without reload?Realtime requirementTwo tabs and two users in L1open
Q-010For counsel: the Terms forbid reverse engineering and using the service to build a competing product (SRC-031 s.4.1). Can this study be used to build and sell a clone?Launch risk BR-001Legal review by the user's counselopen
Q-011For counsel: which ISS service item applies to a CRM SaaS in the clone's city, and is the NFS-e national standard mandatory there?BR-009Municipal tax rules; accountantopen
Q-012For counsel: are simple or advanced e-signatures enough for the contracts the clone's buyers sign, and does CPC art. 784 §4 apply?BR-006Legal reviewopen
Q-013Confirm: cost and lead time of Google's CASA assessment for Gmail restricted scopesBR-002 budgetQuotes from authorized labsopen
Q-014Confirm: how many Brazilian SMB buyers require WhatsApp inside the CRMMarket weight of BR-005Customer interviews or a surveyopen
Q-015Confirm: which payment methods SMB buyers expect for a SaaS subscription (Pix Automático, boleto, card)BR-010Customer interviews; PSP dataopen
Q-016Confirm: do target customers' Microsoft 365 tenants restrict user consent or require Microsoft 365 Certification?BR-004Ask pilot customers' ITopen
Q-017Confirm: do SMB buyers in Brazil ask for SOC 2 or ISO 27001 before buying a CRM?Market weight of BR-011Sales callsopen
Q-018Confirm: the company setting for the won follow-up popup (type and "in 3 months") was read during the preflight but not captured, to keep company configuration out of the KBEvidence for R-024 and B-001In L1, set the type and delay, win a deal and capture bothopen

15About this study

The goal, scope and terms of the study, the vocabulary of the product, and every public source used.

Charter

Date: 2026-10-16

ItemValue
GoalDocument Pipedrive's deals pipeline, activities and won/lost flows well enough that a team that never used it can rebuild them, and list what would stop a sellable CRM clone from launching
Requested byThe repository owner, through an orchestrating agent session (the result is published as a public example of the skill)
ScopeDeals pipeline board and deal detail view; activities and the "schedule next activity" prompt; marking deals won and lost. Barrier scan for these features and for a sellable CRM clone: email and calendar sync, WhatsApp, e-signature, data protection, the clone's own billing and invoices
Out of scopeLeads inbox, contact screens beyond what deals need, Insights and reports, Sales Inbox (email), Campaigns, Projects, the Smart Docs editor, the AI assistant, the automations editor (A4), company settings (A4), anything that needs a second user (L1)
Clone target marketSmall and medium businesses in Brazil: B2B sales teams of 2 to 50 sellers, selling in BRL, Portuguese-speaking users. Assumption written by the agent from the request
PrioritiesP1: pipeline board, deal detail, activities and the next-activity rule, won and lost. P2: deal creation, the pipeline editor, deletion and restore. P5: the settings that drive these rules, read only
ModeUnattended: no questions to the user; blocks go to "Needs human" in STATUS.md
Environment levelL3: a sandbox pipeline 🧪 [RE] Sandbox inside the production company. No L1 account exists; "Add company" starts a new subscription (A5), so L2 is not available
Write authorizationThe request: run "a real reverse engineering study" in the production company, "use L3, a pipeline named 🧪 [RE] Sandbox", keep company-wide settings untouched, assign activities to the operator only, create no persons with real data, and remove the whole sandbox before the session ends
KB languageEnglish (the example is public)
Terms of servicehttps://www.pipedrive.com/en/terms-of-service (current as of 16 September 2026), s.4.1 "Prohibited Activities": no copying or derivative works, no use for competitive analysis or to develop a competing product, no reverse engineering, no security testing; direct competitors may not use the service (SRC-031). Listed under "Needs human" in STATUS.md: the decision belongs to the user

Glossary

TermDefinitionEvidence
PipelineAn ordered list of stages a deal moves through. A company has several; the board shows one at a time[obs EV-008] [doc SRC-004]
StageA column of a pipeline with a name, a win probability (0-100%) and an optional rotting period[obs EV-008] [net EV-009]
DealA sales opportunity with a title, value, owner, stage and status (open, won, lost), linked to a person or an organization[obs EV-027] [net EV-009]
Board (pipeline view)The kanban screen: one column per stage, one card per open deal[obs EV-011]
ActivityA dated task linked to a deal, organization or person, with a type, an owner and a done flag[obs EV-019] [net EV-009]
Activity typeA company-defined list of kinds of activity (call, task, custom types) with icons; its order decides the default type[obs EV-022] [net EV-025]
Next activityThe earliest open activity of a deal; it drives the card icon and the board order[obs EV-010] [doc SRC-002]
Activity status iconThe round icon on a card: red overdue, green today, grey future, yellow warning when the deal has no open activity[obs EV-012] [obs EV-013] [obs EV-014] [obs EV-015]
Schedule your next activityThe modal that opens when the last open activity of a deal is marked done[obs EV-022]
FocusThe deal page block that lists open activities and pinned notes[obs EV-027] [obs EV-058]
HistoryThe deal page timeline of done activities, notes and changes, with filters[obs EV-030]
Stage barThe chevron bar on the deal page that shows days per stage and moves the deal on click[obs EV-028] [obs EV-032]
Won / LostThe two closing statuses of a deal; both can be reopened[obs EV-035] [obs EV-042] [obs EV-037]
Lost reasonThe required reason when a deal is lost, picked from a company list[obs EV-039] [obs EV-040]
RottingA per-stage period after which an inactive deal is marked: pink card and a red "<Nd" badge[obs EV-016] [doc SRC-005]
Weighted valueValue × probability; the stage header sums it for its deals[obs EV-010] [doc SRC-006]
Visibility (visible to)Who can see an item: item owner, owner's visibility group, group and sub-groups, all users[obs EV-052]
Visibility groupA company-level group of users that decides which pipelines and items they see[doc SRC-041]
FollowerA user who follows a deal; the owner follows by default and followers can see owner-only items[obs EV-052]
Restore dataThe settings page that keeps deleted items for 30 days[doc SRC-015] [obs EV-045]
Quick addThe "+" menu in the top bar with one-key shortcuts for new items[obs EV-055]

Sources

All read on 2026-10-16 with web search and web fetch (no logged-in browser). "Search excerpt" means only the search result snippet was readable. Recheck anything older than six months before relying on it.

IDTitleURLTypeRead onGives
SRC-001Pipeline view: manage deals lifecyclehttps://support.pipedrive.com/en/article/pipeline-viewdocs2026-10-16Board basics, add, move, close, delete, filters
SRC-002Pipeline view: how to prioritize dealshttps://support.pipedrive.com/en/article/how-are-deals-ordered-in-the-pipeline-viewdocs2026-10-16Default order and the four activity status icons
SRC-003Deal card customization and sortinghttps://support.pipedrive.com/article/deal-card-customization-sortingdocs2026-10-16Up to 7 card fields per user and pipeline; sort options
SRC-004Pipeline: how to design your sales processhttps://support.pipedrive.com/article/how-can-i-customize-my-pipeline-stagesdocs2026-10-16Stage editing, probability, rotting, deleting stages
SRC-005The Rotting featurehttps://support.pipedrive.com/en/article/the-rotting-featuredocs2026-10-16Rotting setup and what resets the timer
SRC-006Probability in Pipedrivehttps://support.pipedrive.com/en/article/probability-in-pipedrivedocs2026-10-16Weighted value formulas
SRC-007Deal detail viewhttps://support.pipedrive.com/article/deal-detail-viewdocs2026-10-16Stage bar, sidebar, Focus, History, Changelog
SRC-008Activitieshttps://support.pipedrive.com/en/article/activitiesdocs2026-10-16Default types, scheduling window, Busy/Free, done
SRC-009Activity inviteshttps://support.pipedrive.com/en/article/activity-invitesdocs2026-10-16Guests and invites need calendar sync
SRC-010How can I disable the follow-up activity pop-up?https://support.pipedrive.com/en/article/how-can-i-disable-the-follow-up-activity-pop-updocs2026-10-16The next-activity prompt and its plan-gated setting
SRC-011Lost reasonshttps://support.pipedrive.com/en/article/lost-reasonsdocs2026-10-16Mark-as-lost dialog; comments saved as a note; up to 100 reasons
SRC-012How can I enable predefined lost reasons?https://support.pipedrive.com/en/article/how-can-i-enable-predefined-lost-reasonsdocs2026-10-16Predefined list and the free-form option
SRC-013Projects by Pipedrivehttps://support.pipedrive.com/en/article/projects-by-pipedrivedocs2026-10-16"Mark as won and create a project" in the Won dropdown
SRC-014How can I delete items in Pipedrive?https://support.pipedrive.com/en/article/how-can-i-delete-items-in-pipedrivedocs2026-10-16States that deleting a deal deletes its activities, notes and attachments
SRC-015How can I restore data?https://support.pipedrive.com/en/article/restore-datadocs2026-10-16Restore data page, 30-day retention, linked items
SRC-016Pipedrive interface (keyboard shortcuts)https://support.pipedrive.com/en/article/quick-actions-in-pipedrivedocs2026-10-16Quick add keys and navigation shortcuts
SRC-017API v2 OpenAPI specificationhttps://developers.pipedrive.com/docs/api/v1/openapi-v2.yamlAPI spec2026-10-16v2 schemas: deals, activities, pipelines, stages, persons, organizations, fields
SRC-018API v1 OpenAPI specificationhttps://developers.pipedrive.com/docs/api/v1/openapi.yamlAPI spec2026-10-16v1 schemas: notes, users, activity types, v1-only deal fields
SRC-019API reference: Dealshttps://developers.pipedrive.com/docs/api/v1/DealsAPI ref2026-10-16Deal endpoints, statuses, include_fields
SRC-020API reference: Activitieshttps://developers.pipedrive.com/docs/api/v1/ActivitiesAPI ref2026-10-16Activity body parameters and token costs
SRC-021API reference: ActivityTypeshttps://developers.pipedrive.com/docs/api/v1/ActivityTypesAPI ref2026-10-16key_string links to Activity.type; icon keys
SRC-022API reference: Noteshttps://developers.pipedrive.com/docs/api/v1/NotesAPI ref2026-10-16Note links and pin flags
SRC-023Pipedrive API v2 migration guidehttps://pipedrive.readme.io/docs/pipedrive-api-v2-migration-guidedev guide2026-10-16v1 to v2 field changes; weighted value and next_activity fields removed
SRC-024Paginationhttps://pipedrive.readme.io/docs/core-api-concepts-paginationdev guide2026-10-16Cursor pagination in v2, offset in v1
SRC-025Rate limitinghttps://pipedrive.readme.io/docs/core-api-concepts-rate-limitingdev guide2026-10-16Daily token budget per company and burst limits
SRC-026Deprecated API v1 endpoints are out of supporthttps://developers.pipedrive.com/changelog/post/deprecated-apiv1-endpoints-become-out-of-supportchangelog2026-10-16v1 endpoints with v2 replacements unsupported from 2026-08-01
SRC-027Guide for Webhooks v2https://pipedrive.readme.io/docs/guide-for-webhooks-v2dev guide2026-10-16Webhook events, payload, retries, limits
SRC-028OAuth authorizationhttps://pipedrive.readme.io/docs/marketplace-oauth-authorizationdev guide2026-10-16OAuth flow and token lifetimes
SRC-029Marketplace app approval processhttps://pipedrive.readme.io/docs/marketplace-app-approval-processdev guide2026-10-16Review up to 21 business days
SRC-030Community: deleting open activities when a deal is won or losthttps://community.pipedrive.com/discussion/comment/14922community (search excerpt)2026-10-16Open activities are not removed automatically
SRC-031Pipedrive Terms of Servicehttps://www.pipedrive.com/en/terms-of-serviceterms2026-10-16s.4.1 Prohibited Activities: reverse engineering, competing products
SRC-032Pipedrive Acceptable Use Policyhttps://www.pipedrive.com/en/legal/aupterms2026-10-16Bans harvesting data about others
SRC-033Pipedrive Trust Centerhttps://trustcenter.pipedrive.com/vendor2026-10-16ISO 27001, ISO 27701, SOC 2 Type 2, SOC 3; AWS
SRC-034Pipedrive sub-processorshttps://www.pipedrive.com/en/subprocessorsvendor2026-10-16Hosting regions; no Brazil region
SRC-035Pipedrive Data Processing Agreementhttps://www.pipedrive.com/en/privacy/dpaterms2026-10-16EU SCCs and Brazil SCCs (ANPD Res. 19)
SRC-036Help: Email synchttps://support.pipedrive.com/en/article/email-syncdocs2026-10-16Plans and providers for email sync
SRC-037Help: Calendar synchttps://support.pipedrive.com/en/article/calendar-syncdocs2026-10-16Calendar providers, one-way or two-way
SRC-038Help: WhatsApp integrationhttps://support.pipedrive.com/en/article/whatsapp-integrationdocs2026-10-16Integration through Meta's WhatsApp Business Platform
SRC-039Help: Smart Docs eSignatureshttps://support.pipedrive.com/en/article/sales-documents-esignatures-betadocs2026-10-16Basic digital signing; plans
SRC-040Pipedrive pricing (Portuguese page)https://www.pipedrive.com/pt/pricingpricing2026-10-16Plans and per-seat prices in USD
SRC-041Help: Usage limitshttps://support.pipedrive.com/en/article/usage-limits-in-pipedrivedocs2026-10-16Limits per plan (fields, deals, visibility groups)
SRC-042Help: Security ruleshttps://support.pipedrive.com/en/article/security-rules-access-restrictionsdocs2026-10-16Security rules are Ultimate-only
SRC-043Help: Security dashboardhttps://support.pipedrive.com/article/security-dashboarddocs2026-10-16Audit log on Ultimate
SRC-044Help: Single sign-onhttps://support.pipedrive.com/en/article/single-sign-ondocs2026-10-16SAML SSO on all plans
SRC-045Pipedrive Marketplace: abouthttps://www.pipedrive.com/en/marketplace/aboutvendor2026-10-16"400+ apps"
SRC-046Google: restricted scope verificationhttps://developers.google.com/identity/protocols/oauth2/production-readiness/restricted-scope-verificationdocs2026-10-16Security assessment, yearly reassessment, "several weeks"
SRC-047Google: sensitive scope verificationhttps://developers.google.com/identity/protocols/oauth2/production-readiness/sensitive-scope-verificationdocs2026-10-163-5 business days; submission requirements
SRC-048Google Cloud Help: security assessmenthttps://support.google.com/cloud/answer/13465431docs2026-10-16Assurance levels; yearly revalidation
SRC-049Google Cloud Help: unverified appshttps://support.google.com/cloud/answer/7454865docs2026-10-16100-user cap for unverified apps
SRC-050Gmail API scopeshttps://developers.google.com/workspace/gmail/api/auth/scopesdocs2026-10-16Which Gmail scopes are restricted
SRC-051Microsoft: publisher verificationhttps://learn.microsoft.com/en-us/entra/identity-platform/publisher-verification-overviewdocs2026-10-16Requirements; free
SRC-052Microsoft Graph permissions referencehttps://learn.microsoft.com/en-us/graph/permissions-referencedocs2026-10-16Mail and Calendars consent requirements
SRC-053Microsoft Entra: configure user consenthttps://learn.microsoft.com/en-us/entra/identity/enterprise-apps/configure-user-consentdocs2026-10-16Tenant consent policies
SRC-054Microsoft 365 App Compliancehttps://learn.microsoft.com/en-us/microsoft-365-app-certification/overviewdocs2026-10-16Publisher attestation and yearly certification
SRC-055Deprecation of EWS in Exchange Onlinehttps://learn.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/deprecation-of-ews-exchange-onlinedocs2026-10-16EWS disabled from October 2026, fully April 2027
SRC-056WhatsApp Business Platform pricinghttps://developers.facebook.com/docs/whatsapp/pricingdocs2026-10-16Per-message pricing; BRL billing for Brazil
SRC-057Meta Terms for WhatsApp Business Platformhttps://www.facebook.com/legal/Meta-Terms-for-WhatsApp-Business-Platformterms2026-10-16s.4.7 AI Providers
SRC-058WhatsApp: get started for Tech Providershttps://developers.facebook.com/documentation/business-messaging/whatsapp/solution-providers/get-started-for-tech-providersdocs2026-10-16Business verification and App Review
SRC-059WhatsApp: templates overviewhttps://developers.facebook.com/documentation/business-messaging/whatsapp/templates/overviewdocs2026-10-16Template review up to 24 hours
SRC-060WhatsApp: messaging limitshttps://developers.facebook.com/documentation/business-messaging/whatsapp/messaging-limitsdocs2026-10-16250 recipients per day for new portfolios
SRC-061WhatsApp Terms of Servicehttps://www.whatsapp.com/legal/terms-of-serviceterms2026-10-16Bans unofficial automation
SRC-062CADE keeps the preventive measure on WhatsApp termshttps://www.gov.br/cade/pt-br/assuntos/noticias/tribunal-do-cade-mantem-medida-preventiva-sobre-novos-termos-de-uso-do-whatsappregulator2026-10-16AI-provider ban suspended in Brazil
SRC-063Lei 14.063/2020 (updated text)https://www2.camara.leg.br/legin/fed/lei/2020/lei-14063-23-setembro-2020-790659-normaatualizada-pl.htmllaw2026-10-16Simple, advanced, qualified signatures; scope
SRC-064MP 2.200-2/2001https://www.gov.br/cti/pt-br/trajetoria-historica/base-legal/base-legal-legis-pdf/2001-08-24-mp-2-200-2-institui-icp-brasil-e-transforma-iti.pdflaw2026-10-16Art. 10 §2: non-ICP signatures accepted by the parties
SRC-065ITI FAQ: digital certificationhttps://www.gov.br/iti/pt-br/acesso-a-informacao/perguntas-frequentes/certificacao-digitalregulator2026-10-16Validity of non-ICP signatures
SRC-066Clicksign developer docshttps://developers.clicksign.com/docsdocs2026-10-16E-signature API with sandbox and webhooks
SRC-067D4Sign API referencehttps://docapi.d4sign.com.br/referencedocs2026-10-16E-signature API with an ICP-Brasil option
SRC-068LGPD, Lei 13.709/2018https://www2.camara.leg.br/legin/fed/lei/2018/lei-13709-14-agosto-2018-787077-publicacaooriginal-156212-pl.htmllaw2026-10-16Controller and processor duties; transfers
SRC-069Resolution CD/ANPD 2/2022https://www.gov.br/anpd/pt-br/acesso-a-informacao/institucional/atos-normativos/regulamentacoes_anpd/resolucao-cd-anpd-no-2-de-27-de-janeiro-de-2022regulator2026-10-16Small processing agents
SRC-070Resolution CD/ANPD 15/2024https://bibliotecadigital.mj.gov.br/bitstream/1/12879/2/RES_ANPD_2024_15.htmlregulator2026-10-16Incident reporting in 3 business days
SRC-071Resolution CD/ANPD 18/2024https://www.tjba.jus.br/extrajudicial/wp-content/uploads/2024/08/RESOLUCAO-ANPD-No-18-Encarregado-de-Dados.pdfregulator2026-10-16Data protection officer (encarregado)
SRC-072Resolution CD/ANPD 19/2024https://www.gov.br/anpd/pt-br/acesso-a-informacao/institucional/atos-normativos/regulamentacoes_anpd/resolucao-cd-anpd-no-19-de-23-de-agosto-de-2024regulator2026-10-16Standard contractual clauses for international transfers
SRC-073ANPD: international data transferhttps://www.gov.br/anpd/pt-br/assuntos/assuntos-internacionais/transferencia-internacional-de-dadosregulator2026-10-16Transfer mechanisms; EU adequacy
SRC-074Portal Nacional da NFS-ehttps://www.gov.br/nfse/pt-brregulator2026-10-16National service invoice issuer and APIs
SRC-075NFS-e: municipalities without adherence face blocked transfershttps://www.gov.br/nfse/pt-br/noticias/municipios-sem-adesao-ou-parametrizacao-da-nfs-e-ja-estao-sujeitos-a-bloqueio-de-transferenciasregulator2026-10-16LC 214/2025 art. 62
SRC-076CGIBS and RFB guidance on CBS and IBS from 2026https://www.cgibs.gov.br/comite-gestor-do-ibs-e-receita-federal-divulgam-orientacoes-sobre-a-entrada-em-vigor-da-cbs-e-do-ibs-em-1-de-janeiro-de-2026regulator2026-10-162026 informational highlight on invoices
SRC-077CGIBS: tax reform adaptation periodhttps://www.cgibs.gov.br/reforma-tributaria-comeca-em-2026-com-periodo-de-adaptacao-destaque-informativo-dos-novos-tributos-e-dispensa-de-penalidadesregulator2026-10-16Optional highlight on NFS-e; Simples Nacional from 2027
SRC-078BCB FAQ: Pix Automáticohttps://www.bcb.gov.br/content/estabilidadefinanceira/pix/pix-automatico-FAQ-participantes.pdfregulator2026-10-16Receiver rules and fees
SRC-079Pix Automático launch datehttps://www.gov.br/fazenda/pt-br/composicao/orgaos/orgaos-colegiados/crsfn/acesso-a-informacao/noticias/2024/bc-aperfeicoa-mecanismos-de-seguranca-do-pix-e-divulga-nova-data-de-lancamento-do-pix-automaticoregulator2026-10-16Launch on 16 June 2025
SRC-080Gmail email sender guidelineshttps://support.google.com/a/answer/81126docs2026-10-16Bulk sender requirements
SRC-081Yahoo sender best practiceshttps://senders.yahooinc.com/best-practices/docs2026-10-16Bulk sender requirements
SRC-082Microsoft: fix NDR 550 5.7.515https://support.microsoft.com/en-us/outlook/fix-ndr-error-550-5-7-515-in-outlook-comdocs2026-10-16Outlook.com high-volume sender rules
SRC-083Help: multiple company accountshttps://support.pipedrive.com/en/article/can-i-be-in-multiple-pipedrive-company-accountsdocs2026-10-16Each company account is billed separately
SRC-084BCB: payment institution modelshttps://www.bcb.gov.br/content/publicacoes/boxe_relatorio_de_economia_bancaria/reb2023b3p.pdfregulator (search excerpt)2026-10-16Payment institution types
SRC-085STF ADI 5.659 publicationhttps://legis.senado.leg.br/norma/34722497/publicacao/34722533law (search excerpt)2026-10-16ISS on software and SaaS

16Evidence

Every statement cites its evidence: [obs EV-###] seen in the product, [net EV-###] captured on the network, [doc SRC-###] public documentation, [inf] an inference with an open question.

EV-003 New pipeline editor with its 5 default stages (100% each) and the Deal probability toggle on
EV-004 Tooltip of the pipeline-level Deal probability toggle
EV-005 Tooltip of the stage Probability field
EV-006 Tooltip of the stage Rotting toggle
EV-007 Confirmation dialog when deleting an empty stage in the editor
EV-008 Sandbox pipeline editor filled: 4 stages; probabilities 10/25/50/80; rotting 0 days on stage 2
EV-010 Sandbox board: four activity states; rotting card; weighted stage totals; default sort
EV-011 Board anatomy with numbered regions (annotate.js)
EV-012 Tooltip of the red overdue icon
EV-013 Tooltip of the yellow no-activity icon
EV-014 Tooltip of the grey upcoming icon
EV-015 Tooltip of the green today icon
EV-016 Rotting badge and its tooltip
EV-017 Tooltip of the info icon next to the deal count
EV-018 Popover of the no-activity icon
EV-019 Popover of a deal with three open activities (relative dates; done circles)
EV-020 Marking one of three activities done: strike-through; toast; no modal; icon turns grey; badge 29 to 28
EV-021 Marking the last open activity done: toast and modal skeleton while loading
EV-022 Schedule your next activity modal (form and day agenda)
EV-023 Clicking the time field fills the next 15-minute slot and switches Free to Busy; agenda shows the new block
EV-024 After Cancel: the deal shows the yellow no-activity icon; board not re-sorted until reload
EV-026 Sort menu (14 options; Next activity default) and the board re-sorted after reload
EV-027 Deal detail anatomy: header; stage bar; summary; composer tabs; Focus; History
EV-028 Stage bar tooltip of the current stage (time in stage)
EV-029 Stage bar tooltip of a stage the deal has not reached
EV-030 After saving the next activity from the modal: toast; Focus shows the new activity; History shows the done one
EV-032 Stage moved by one click on the stage bar; Recommended first automation banner
EV-034 Won modal: celebration; deal card; close time; activities done; What's next choices
EV-035 Won state: WON badge; Reopen; light stage bar; open activity still in Focus; Won time field
EV-036 Follow-up form opened from the won modal: info box; date today; first type selected
EV-037 Deal reopened: Won and Lost buttons back; stage bar dark
EV-038 Mark as Lost dialog
EV-039 Mark as lost with no reason: red border on the reason select; nothing sent
EV-040 Lost reason list with search (company reasons blurred)
EV-041 Free text typed in the reason search: no match and no option to use the text
EV-042 Lost state: LOST badge; Reopen; light red stage bar; comment saved as a pinned note; activity still open
EV-043 Delete note confirmation (cannot be undone)
EV-044 Deal more-actions menu
EV-045 Delete deal confirmation: lists notes; files; documents; invoices; not activities; 30-day restore
EV-046 Deleted deal page: banner with permanent deletion date; DELETED badge; Restore; open activity still listed
EV-048 Delete activity confirmation on a deleted deal
EV-049 Add deal form: core fields column (cropped)
EV-050 Add deal validation: A person or organization is required on both fields
EV-051 Organization autocomplete: NEW badge on unmatched text and the Add as new organization option
EV-052 Visible to options of a new deal
EV-053 Deal created from the form: toast with View; card on top of its stage with a NEW badge
EV-054 Dragging a card shows four drop zones at the bottom: Delete; Lost; Won; Move to
EV-055 Quick add menu with one-key shortcuts
EV-056 Activities list toolbar: type filter; period tabs; count; columns (rows blurred)
EV-057 Deal page Focus with a red OVERDUE badge on an activity due yesterday
EV-058 Deal page Focus empty state after the last activity is done
EV-059 Board with every deal lacking an activity: newest first in each stage
EV-060 Delete pipeline dialog with the default Move deals option
EV-061 Delete pipeline dialog with Delete deals selected and its warning
EV-062 Delete organization confirmation (cropped)

Captures that are not images

Network shapes, script output and notes, kept in the knowledge base folder.

IDShowsFileSize
EV-001inventory.js on the pipeline board: React; test IDs; routes; SDKs; storage key namesevidence/EV-001-inventory-board.json4.6 KB
EV-002tokens.js on the pipeline board (light theme): colors with variable names; type scale; spacing; radius; shadows; motionevidence/EV-002-tokens-board.json3.1 KB
EV-009Response shapes of deal; activity; organization; pipeline with stages (types only)evidence/EV-009-api-v2-shapes-deal-activity-pipeline.json3.1 KB
EV-025Network calls for mark-as-done and the next-activity modal (shapes only)evidence/EV-025-net-mark-done-and-next-activity-modal.json3.8 KB
EV-031Network call that creates the activity from the modal (shapes only)evidence/EV-031-net-create-activity-from-modal.json1.6 KB
EV-033Network calls of a stage move (shapes only)evidence/EV-033-net-stage-move.json1.3 KB
EV-047Network call of the deal delete and the API state of its activity afterwardsevidence/EV-047-net-deal-delete-activity-survives.json0.6 KB
EV-063Network calls for lost; reopen; won statistics; deal creation (shapes only)evidence/EV-063-net-close-reopen-create.json2.0 KB