Skip to content
Customers and people

Five records, and one person

The same person entered five times, each system holding one piece. The customer who is a family, not a company. The agent who replies without knowing whether he is talking to the account holder. bFocus keeps who signs apart from who uses — and holds one record per person, even when she shows up in several customers and several of your systems.

  • One record per person
  • The same person across customers
  • Company or individual customers
The record

What merges on its own, and what waits for you

Merging the wrong records is worse than keeping two. That is why one single field merges people without asking: the CPF, the Brazilian individual tax number.

The CPF proves who she is

The same CPF is the same person, in any customer and in any of your systems. An identifier nobody has seen before arrives carrying a CPF that already exists? It lands on that person, and the new identifier starts leading to her.

Email and phone prove nothing

Typing an email into a browser does not hand you somebody else account. Unsigned data coming from outside never merges records: it becomes a hint in the clean-up screen, for the team to decide.

A different CPF stops everything

If the record already has a CPF and another one arrives, the write stops and returns the conflict. Changing somebody CPF is a decision for a person, not for an integration.

Every system keeps its own id

One person is found by several identifiers. The ERP uses its own, the store uses its own, and the old code keeps working after a merge.

Several emails and phones

One primary and whatever extras arrive. Search matches all of them: the work address and the personal one lead to the same person.

Staff accounts stay out of it

If the email that arrived already belongs to someone on your team, the sync neither adopts nor changes that account. The person is created without that contact, and a hint is left for somebody to look at calmly.

The house rule is simple: nothing merges on a hunch. With no CPF, two similar records go into the possible-duplicates queue and a human decides.

Company or individual

The customer is whoever signs, not whoever writes the ticket

Some customers are companies with thirty employees, and some are a family. The database takes both without contortions — and without turning a person into a company of herself.

  • The customer type is Company or Individual; if you do not say, bFocus infers it from the document
  • The labels switch with it: Trade name becomes Full name and CNPJ becomes CPF, both when creating and on the record
  • Company: legal name when it differs from the trade name, plus state registration (which accepts the Brazilian exempt marker) and municipal registration
  • Individual: the Brazilian ID document with its issuing authority, as free text, because the format changes from state to state
  • An individual account can hold more than one person: the Account holder shows at the top of the record, and next to it whoever else is on this account — when the holder cannot be told apart, the record simply lists everybody
  • Customer and person stay separate: the wife who opens a ticket on her husband account is herself, with her own record, access and history

The same fields in the API

kind, legal_name, state_registration, municipal_registration and id_document come through the public API and the spreadsheet with the same meaning they have on screen.

See the public API
One record, many customers

Linking is not taking her away

The accountant serves four companies. The consultant shows up in three. When two of your systems send that person, she cannot bounce from company to company.

  • Sending a person who already exists under another customer links her to one more customer; it removes her from none
  • When all that arrives is an email that already belongs to somebody at another company, the API refuses and says why, instead of guessing which link it is
  • Access belongs to the link: switching her access off at one company does not touch her access at the other
  • She only loses access for good when no customer grants it any more
  • Unlinking from one customer keeps the other customers, the identifiers and the ticket history
  • Real transfers still exist, but they are a deliberate act on screen — an integrated system never transfers anyone by itself
  • Name, email and CPF hold across all of her customers; job title and notes belong to each customer

The end of the ping-pong

With four products writing into the same company, automatic transfer moved the person to a different customer on every load — and the source system never noticed, because from its side nothing had changed.

The People screen

Every person, in one place

Not every person arrives with a company attached. The list shows those who belong to some customer and those who belong to none yet.

Search by any identifier

Name, email, phone or identifier — the primary one and the extras. Paste the code from your ERP and the person shows up.

Filters that answer real questions

With access, Without access, In more than one customer, Without customer. And you can pin the list to one customer.

The panel opens beside it

Her customers, her access at each one, identifiers, tickets and history, without leaving the list.

Link and unlink right there

Link to one more customer, remove access at a single one, unlink from a customer. Before you confirm, the screen says what will happen and what stays.

A history of what changed

Linked to one more customer, unlinked, transferred, records merged, identifier added, removed or promoted to primary.

The link leads to the person

The open person lives in the page address: you can send the link to a colleague, and the browser back button closes the panel.

Clean up the database

The duplicate queue, settled by a decision

When a hunch is not enough, the pair waits for a human. Four steps, no side spreadsheet.

  1. 1

    The data quality band

    At the top of the customer list: how many have a document, an email and people with access, how many possible duplicates exist and how many people arrived with no company attached. Every number filters the list.

  2. 2

    The reason, and how likely it is

    Each pair comes with the why — same tax number, same email, same phone, very similar name, same CNPJ root for a branch office — and a Very likely or Likely mark.

  3. 3

    Side by side, and you decide

    For customers the merge goes field by field: you choose which side each one comes from, anything empty on the survivor is filled in from the one leaving, both sets of emails and phones stay, and to confirm you type the name of the record that goes. For people you choose who stays and the rest follows.

  4. 4

    Not a duplicate

    One click takes the pair out of the queue for good. Keeping two records costs far less than merging the records of two different people.

Outside the queue: people who arrived with no company attached get a customer suggestion — from the customer contact list, from their tickets or from their corporate email domain, never from gmail and the like — and the consistency check lists what is out of place, with a one-click fix whenever the fix is safe.

Bring what you already have

The spreadsheet today and the API tomorrow

Nobody starts from zero. The records you already have come in by spreadsheet, and your systems keep sending through the API.

  • XLSX with a Customers tab and a People tab, or CSV — up to 5,000 rows and 10 MB
  • Columns are recognised on their own (tax numbers, legal name, state registration, ID document, your system identifier) and you can check which column feeds which field
  • The preview shows, row by row, what will be created, what will be updated, what is unchanged and what has an error. Nothing is deleted
  • Rows with errors are left out and come back as a spreadsheet, for you to fix and send again
  • Extra columns on the Customers tab become custom fields on the customer
  • In the public API a person carries her own CPF, custom fields and access; her identifiers and the person batch load have routes of their own
  • Batch loads of up to 500 per call: the item that fails comes back with its own error, in the same order, without taking the others down
  • The response says what happened to each one: linked when the person now counts at one more customer, merged_into when your code became an alias of an existing record, unlinked when she left this customer and stays at the others

For whoever integrates

Seven official SDKs, extra identifiers that come back readable, and deleting a contact is explicit: null and absent still mean “do not touch”.

See the API and the SDKs
Data protection

Personal data has an owner and a record

A good database is also one you can account for. What exists today, with no dressing up.

  • An administrator exports one person data as a file — that is what answers an access request
  • The export is logged: who downloaded it, about whom and when
  • Opening a customer full profile is logged too
  • Each company sees only its own records; no query crosses that border
  • On a merge, a snapshot of the record that leaves is kept in the history of the one that stays
  • bFocus does not go out filling in personal data: what is on a record was sent by you or by one of your systems

The rest of the security story

Isolation per company, passwordless login, identity verified by signature and scoped keys are on the security page.

See security and privacy

Questions about the customer database

Is this a CRM?

No. This is records plus support: who signs, who her people are, and the history of tickets, conversations and projects. Prospecting and leads live in the Commercial module, which is another page.

Do you fill in a person data for me?

No. What sits on a person record was sent by you, by your spreadsheet or by one of your systems. bFocus does have enrichment, but it belongs to the Commercial module, it works on the lead company (tax number and domain, from public sources) and not on the person.

Two of my systems use different codes for the same record. Now what?

Each one sends its own code. One becomes the primary identifier and the other stays as an extra identifier: both lead to the same record, and the list shows which is which and where it came from.

What if I send a CPF that differs from the one on the record?

The write stops and returns a conflict. Nothing is swapped quietly: someone on your team looks at it and decides on screen.

Do I have to fill in everybody tax number?

No. Without it the database works just the same — it simply will not merge anyone on a hunch. Two similar records wait in the clean-up queue.

Can a person have access at one customer and not at another?

Yes. Access belongs to the link: removing it at one company does not touch the other. She is only switched off for good when no customer grants her access.

What happens when I merge two records?

Everything from the one leaving moves to the one that stays: tickets, conversations, projects, tasks, notes and files. The identifier of the one leaving keeps working as an extra identifier, so the widget and the API still using that code do not break. It cannot be undone, which is why merging customers asks you to type the name of the one that goes.

Find out how many times your customer is in there

Import the spreadsheet, look at the preview and open the duplicate queue. No card and no onboarding project.