Start free trial
Tallify › Security

Security and compliance, built into every layer.

Where client data lives, what leaves the practice server, what never does, and how the controls map to POPIA and FAIS. Written for the compliance officer and the IT reviewer.

Updated 2026-10-27. Reflects the current release.

Tallify handles the most sensitive information a practice holds: who its clients are, what they earn and own, what cover they have and what advice they were given. This page sets out where that information lives, what leaves the practice server, what never does, and how the controls map to POPIA and FAIS. It is written to be read by a compliance officer or an IT reviewer and to be reused in a practice's own records.

In one paragraph

Every identifiable record lives on one server in South Africa: one the practice controls, or one Tallify operates for it. Each practice is its own installation, with its own database, document vault and backups. Before anything leaves the server for an outside model, the software removes names, identity numbers, dates of birth, contact details and addresses on that server by code, and a fail-closed check stops any request that still carries them. Claude, from Anthropic, reads the de-identified facts and drafts the Record of Advice, the needs analysis, client replies and fund-movement notices, and the weekly cover briefing, and reads the free-text answers of a fact find that the rules on the server could not read (a practice may choose rules only); the names go back in on the practice's server. Local models on the server build the search index, run an extra check for names before anything is sent to Claude (without one running, the code's own removal and the check still apply), read an uploaded Astute CCP report, and read the assisted channel (photos and notes sent over WhatsApp or uploaded in the console); nothing they read leaves the server, and the onboarding fact find does not depend on them. Messages and emails the practice sends and receives pass through its WhatsApp and mail providers, listed under Third parties. Nothing is filed, and no drafted reply, reminder or update goes to a client, without a named person approving it, unless the practice chooses to let a kind of WhatsApp notice go without approval (none does by default); the practice's templated emails (onboarding pack, review sheet, signed-letter copy, receipts, welcome) wait for approval too, and only the one-time signing code goes at once. Every change, sign-in and communication is logged.

Where it runs

A server the practice controls

The practice's own hardware or a private server it rents in South Africa, joined to the practice's private network. A GPU is needed only if the practice uses the assisted channel; without one, the names check and the Astute CCP reader fall back to code. The practice owns the server and everything on it. Tallify installs and updates the software over the private network and has no standing access to client data beyond what the practice grants for support.

Hosted by Tallify in South Africa

A server in South Africa that Tallify operates, under an operator agreement, with the same controls. Each hosted practice is its own installation, with its own database, document vault, backups, services, settings and sign-in. One server can run several practices' installations side by side. Client data, vaults and backups sit on an encrypted volume. The practice's console has its own web address, reached through a Cloudflare tunnel. The practice remains the responsible party under POPIA and Tallify acts as its operator in the POPIA sense, on written instructions.

What is never shared

No practice shares a database, a document vault, a backup or a sign-in with another practice.

How client data moves

1
Identity stays on the serverNames, ID numbers, contact details, addresses and dates of birth are removed by code before anything leaves the server (before any outside model sees it). A fail-closed leak check withholds any request that still carries identity.
POPIA minimisation
2
Claude reads and draftsClaude, from Anthropic, reads the de-identified facts and drafts the Record of Advice, the needs analysis, client replies and fund-movement notices, and the weekly cover briefing. It also reads, scrubbed, the free-text answers of a fact find that the rules could not read. No training on the data. Names go back in on the server.
No identifiers
3
Local models on the serverSearch, a names check before anything is sent to Claude, an uploaded Astute CCP report, and the assisted channel: photos, PDFs and notes sent over WhatsApp or uploaded in the console. The onboarding fact find does not depend on them.
On the server

Identity never leaves

Everything that identifies a client is kept on the practice's server and never sent to an outside model: names, ID numbers, dates of birth, contact details, addresses, policy and account numbers, and the ID and proof of address the client sends through the onboarding link. The fact find the client completes through that link is read by code on the same server, so the identity in it is known field by field before anything else happens.

Before any request is sent to Claude, that identity is removed by code. A leak check then looks again, for the names on file and for any email address, ID number, phone number or policy or account number. If anything is still there, the request is not sent: a draft stops, with an error that names no identity, a fact-find answer stays on the server for the adviser to read, and a fund notice or the weekly cover briefing is shown as withheld, with the reason.

What Claude receives is the case without the person: ages, relationships, marital regime, income, expenses, assets, liabilities, existing cover, goals and risk profile, with the people named by role ("the client", "the spouse"). The figures the needs analysis rests on are calculated on the server by code. Claude reads those facts and writes; the names go back in on the practice's server after it has finished. When a fact find arrives, its free-text answers that the rules on the server could not read (a note, the wording of a goal) are scrubbed the same way and sent to Claude to place in the right fields; it never overrides an answer, and a practice may choose rules only.

How identity is removed

Before a request to Claude is built, the software:

Every release passes a test gate before it is deployed. The de-identification tests put fictional clients with planted names, ID numbers, contact details and everyday words that are also names through the whole pipeline, and assert that no request carries anyone on file. An early run found a name inside a nested list, which is why the scrub recurses.

The model provider is Anthropic PBC, used through its API under commercial terms that exclude training on customer data. Because the payload contains no identifiers it is not personal information in the POPIA sense, and section 72 on cross-border transfer is engaged only as a matter of caution; practices are advised to record Anthropic as a recipient of de-identified data in their own records.

Local models and the assisted channel

Local models run on the practice's server, and the files they read never leave it. They build the search index, make the names check above, read an Astute CCP report uploaded on an intake, and read what comes through the assisted channel. The onboarding fact find does not depend on them. A GPU is needed only if the assisted channel is used: without one, the names check and the CCP reader fall back to code.

The assisted channel is for an adviser who has a photo of a form, a PDF, a Word file or typed notes rather than a completed fact find. The adviser sends it over WhatsApp or uploads it in the console, and a model on the server reads it into the same fact-find fields, then makes a second pass against the source and flags disagreements. There is no accuracy promise: every figure is checked by the adviser on the review form before the client is committed, and the form will not commit while a flag is open. The assisted intake documentation covers the details.

What is open to the internet

SurfaceWho uses itHow it is protected
The practice's sign-inAdvisers and staffOn a practice's own server, reachable only over its private network. On a hosted practice, its own web address. Either way: a hashed password, five failed tries in fifteen minutes block the address (twenty block the username, and its owner is emailed), and a six-digit code sent by email after the password.
The client's onboarding linkOne clientA personal link carrying 32 random bytes; only its hash is stored. It expires after 30 days and a new link cancels the old one. Each link and each address is rate limited, and signing the disclosure letter needs a one-time code sent to the client's email address.
The sign-up formNew clientsRate limited per address and overall, a hidden honeypot field, a size limit, and no new sends accepted while ten wait in the queue. An email address, cell number or ID number typed here is never taken as proof of who sent it: a form matched that way is flagged for the adviser to confirm, an ID number alone links it to nobody, and it does not count as the client's fact find until the adviser commits it.
connect.tallify.co.zaThe practice, once, to connect its WhatsApp numberA one-use link an administrator creates in the console, valid for seven days; only its hash is stored. The Meta sign-in is checked on the server against the practice's WhatsApp Business account, and Meta's own callbacks are signed and checked.
The WhatsApp webhooksTwilio and MetaA request larger than a webhook needs is refused before it is read, and the signature on every request is checked; an unsigned or wrongly signed request is refused.

Besides these, a health check that carries no client data, and the practice's blank disclosure letter, blank fact-find spreadsheet and logo, which the pack email and the sign-up page link to and which hold no client data.

Access control

The approval gate and consent

Replies to client emails and WhatsApps, review and birthday reminders, welcome messages, fund notices and market updates all wait in the approval queue until a named adviser approves them. A practice can choose, in writing, to send a kind of WhatsApp notice (a birthday greeting, for example) without approval; none is set by default. The practice's templated emails (the fact-find pack, the review sheet, the thank-you for a returned fact find or document, the signed copy of the disclosure letter, the welcome email) wait in a Review email approvals queue, where the wording can be edited before a named adviser sends them. The only message that reaches a client without an adviser's step is the one-time code for signing the disclosure letter, which the client sets off. Consent is checked when a message is drafted and again when it is approved. Every update the practice starts (fund notices, reminders, birthday and welcome messages, market updates) and every WhatsApp reply needs recorded consent, and the skip is logged when it is missing. A reply to a client's own email is drafted without it, because the client wrote first, and the fact-find pack goes because the person asked for it. Withdrawing consent is a single flag: it stops new drafts from the next run, and anything already waiting is refused at approval. No advice is given by automated means; the FAIS representative signs every Record of Advice, and every draft is marked as not valid until reviewed, amended and signed by the adviser.

Audit and evidence

Together these produce what a regulator or a compliance officer asks for: who did what, when, what the client received, and on whose approval.

Backups and continuity

A consistent snapshot of the database and an archive of the whole vault are taken twice a day and kept permanently on the practice server. A second machine on the private network can pull every backup it does not yet have, once a day, with nothing ever deleted on either side. Restores are tested and recorded; a practice-sized restore takes seconds. A monitor checks the service, the local models, disk, backup age, job completion and network state every fifteen minutes and alerts on change.

POPIA conditions, mapped

ConditionHow Tallify meets it
1. AccountabilityNamed roles and scoping; every change logged to a named user; the practice's information officer named in its notice.
2. Processing limitationLawful basis is the advisory relationship; consent governs communications; identity removed by code before any external processing; notices carry a first name and a holding value only.
3. Purpose specificationPurposes stated in the privacy notice: advice records, needs analysis, monitoring, factual updates, regulatory record keeping. Advice records retained for the FAIS minimum of five years, versioned not overwritten.
4. Further processing limitationNo marketing, profiling for sale or model training. The only processing by an outside model is Claude reading and drafting on de-identified data, compatible with the advisory purpose.
5. Information qualityFacts read from the client's own fact find by code; a second-pass check and an adviser review of anything read through the assisted channel; controlled vocabularies; date, number and identity-number validation; identity resolution against the register; every draft marked as requiring review.
6. OpennessA public privacy notice covering website visitors and practice deployments; reusable wording for the practice's own client notice.
7. Security safeguardsResidency in South Africa; a private network, or a sign-in with a code sent by email; hashed passwords, session limits, rate limiting and drafting limits; strict browser security headers; uploads checked by content; role and scope checks; identity removed by code with a fail-closed check before anything is sent to the model provider; TLS to the model provider with a de-identified payload; signed webhooks; twice-daily backups; monitoring; secrets outside code; full audit.
8. Data subject participationEvery record visible and editable in the console; deletion an audited administrator action; consent flag for objection; no decision affecting a client made solely by automated means.

Special personal information

Health information can appear in a fact find or in notes. It stays on the practice server with the client's identity; whatever reaches Claude carries no identity. Children appear as relationship and age. Advisers are asked to keep clinical detail out of notes unless it changes the advice.

FAIS

The Record of Advice is drafted to section 9 of the General Code of Conduct, in the practice's own layout, with the products considered, the recommendation and its reasons, and the replacement comparison where one applies. Every draft is checked for the section 9 items, and filing is refused while an adviser flag is still open. The adviser reviews, amends and signs; the signed document is filed on the register with its version history; records are kept for at least five years. Tallify does not give advice and is not a financial services provider; the representative remains responsible for the advice.

Third parties

PartyWhat forWhat it receives
Anthropic PBC (Claude)Reads the de-identified facts; drafts the Record of Advice, the needs analysis, client replies and fund-movement notices, and the weekly cover briefingDe-identified facts only; no training on the data under its commercial terms
Twilio Inc. and Meta Platforms (WhatsApp)WhatsApp messages to and from the practiceThe message and the phone number, when the practice uses WhatsApp
Cloudflare, Inc.Hosted practices only: the tunnel to the server, DNS and TLS terminationThe hosted practice's web traffic. TLS ends at Cloudflare, so the traffic passes through Cloudflare's network
GoDaddyPractice and Tallify mail: Tallify's mailboxes (such as advice@tallify.co.za, read over IMAP) and any practice or adviser mailbox hosted at GoDaddyThe emails sent and received
TailscaleThe private network for an own-server practice's console, and the relay that brings WhatsApp webhooks to the serverNetwork metadata; connections are encrypted end to end

A practice can connect its own mailbox (Google Workspace, Microsoft 365 or GoDaddy), and its own mail provider then carries its client email. Fund price vendors and Astute deliver files that the practice loads, and receive nothing from Tallify.

Incidents and support

Security incidents are handled under BlueBird Digital's incident response policy and the practice is told without undue delay, with what is known, what was affected and what has been done, so that it can meet its own notification duties under section 22 of POPIA. Support is by email to michael@tallify.co.za during South African business hours. Reports of a vulnerability are welcome at the same address.

Read more

The documentation covers the day-to-day: consent, the approval queue, the audit log, backups and scheduled jobs. The privacy notice and terms of use set out the legal position, including the operator arrangement for hosted practices.

Review it on your own terms.

Bring your compliance officer to the setup call. We will show every control and run the de-identification evaluation in front of you, then you have seven days free on your own installation.

Start free trial