Communication

Communication

Nzinga asks people for their voice and pays them for it. Every word has to earn trust: say what happens, say what cannot be undone, and leave the decision with the member.

Voice

apps/mobile/CLAUDE.md (copy rules) apps/mobile/app/** (screen copy)

Nzinga sounds like a fair person who respects you: someone from your own circle who knows how the system works and tells you straight. The voice stays the same everywhere; the tone changes with the moment.

Plain

Short sentences, everyday words, one idea at a time.

"Your starting choice. You can change it on every recording."

Straight

Says what happens, including what cannot be undone and what it costs.

"Models already trained cannot forget it. You keep what you were paid."

On your side

The member decides. Copy says "you choose", "your recordings", never "we will use".

"You decide who can use it."

Warm, not chatty

A greeting in your own language, then straight to the point. No exclamation marks, no hype.

"Habari, Amara" then "Record now".

Tone by Moment

app/(join)/welcome.tsx app/(setup)/consent-choose.tsx lib/recordings.ts lib/api.ts (errorMessage) lib/payouts.ts

MomentToneWhat the app says
WelcomeConfident, brief, proud of the language."Your language. Your voice. Your terms." · "Record voice notes in the languages you speak, on the phone you already have."
ConsentCalm and exact. No nudging; the suggested choice is marked, not pushed."You decide who can use it." · "Choose for every recording: only you, Nzinga, approved partners or everyone. Change it any time."
RecordingQuiet and encouraging. Out of the way."A recording is still running." · "The microphone stopped. Your recording so far is kept."
RejectionKind and specific, never blaming. Always a next step."Usually this means background noise, a very short recording, or speech in a different language from the one chosen." · Record it again
PaymentPrecise. Amounts, dates and who does what."Requested on this phone; Nzinga confirms by SMS." · "Money is added to your balance the moment a recording is accepted."
WithdrawRespectful and honest about limits."Your voice is removed from all future training and licensing. Models already trained cannot forget it. You keep what you were paid."
ErrorsSay what happened and what to do, in one breath."No connection. Check your internet and try again." · "Something in the form is not right. Check it and try again."
Recording
Recorded28 Oct
Not acceptedBackground noise or other voices

Usually this means background noise, a very short recording, or speech in a different language from the one chosen.

Rejection: what usually causes it, then the way forward.

Wallet
Could not load your wallet
No connection. Check your internet and try again.

Error: a plain title, the reason, and Try again.

Writing Rules

apps/mobile/CLAUDE.md §5 SCREENS.md (design rules) lib/consent-copy.ts lib/money.ts lib/recordings.ts

  1. Short, plain sentences. One idea each. If a sentence needs a comma to breathe, it may be two sentences.
  2. Title Case for screen and page titles. "Who Can Use Your Recordings", "Payout Method", "Consent and Privacy". Buttons start with a verb and say what happens: "Send for review", "Save method", "Record it again".
  3. The four choices use their exact names: "Only me", "Nzinga's models", "Nzinga and approved partners", "Everyone". Never shortened, reordered or renamed.
  4. No jurisdiction-specific content. Nothing that names one country's law, regulator, phone format or service as the rule. Country-specific parts (payouts, legal text) are modules.
  5. No placeholder text in anything a member can see, and no invented numbers or claims.
  6. The brand is Nzinga, the product line Nzinga Network.
  7. Example languages. When one example language is needed, use Swahili, then Hausa, then Yoruba. Do not single out any one language as the default member.

Words to Replace

NeverSay insteadWhy
tier, consent tierwho can use itThe code's word, not the member's. Members choose who can use a recording.
for nowwhat is true today: "kept on this phone", "not built yet"Vague about the future; say the fact.
Nzinga VoiceNzinga · Nzinga NetworkThe brand name.
user, contributor, data subjectmember, youPeople join Nzinga; they are members.
upload (when audio stays on the phone)send the details · saved on this phoneAudio is not uploaded today. Never imply it is.
earn up to, free moneythe rate, from the server: "$0.20 for each accepted minute"Promises the ledger does not make.
anonymous, secret (of hashed numbers)scrambled on your phone; Nzinga keeps none of themA plain hash of a number can be reversed by trying every number.

Numbers, Money and Dates

Money

Always through formatMoney(minor, currency) with the server's currency: $0.42, signed in activity: +$0.42, −$5.00. Never rounded up.

Durations

Minutes and seconds as 3:12 on rows and players. In sentences, words: "Two to three minutes", "About a minute".

Dates

"Today", "Yesterday", a weekday within the week, else a short date: "28 Oct". Long form on headers: "Tuesday 3 November".

Do

"The minimum payout is $5.00. You have $3.10 available."

Both numbers, from the ledger, in one breath.

Don't

"Almost there! Just a little more to go before you can cash out."

Hides the numbers the member needs.

Languages and Localisation

apps/mobile/lib/languages.ts packages/core/src/profile.ts packages/core/src/consent.ts SPEC.md

  • Members choose from 42 languages: the most widely spoken languages of the continent plus shared languages many members also speak. Each is stored as an ISO 639-3 code (swh, hau, yor) with its name and a short greeting.
  • No language has a special place. Pickers sort alphabetically and put the member's own languages first. Dialect is asked for, with its reason: "Speech models work better when they learn each variety of a language."
  • The interface itself is in English today; translation of the interface is not built.

Scripts and Direction

Arabic script

Arabic is in the list, and its greeting is set right to left. When the interface is translated into a right-to-left language, mirror the layout: back arrows, chevrons and progress run the other way; numbers and the cowrie do not flip.

Ge'ez script

Amharic and Tigrinya greetings are written in Ge'ez (ሰላም). Test on real devices that the platform font renders every character, and never fall back to transliteration without the member's choice.

Every consent records the exact text shown, by version and SHA-256 hash. A translated agreement is a new text: it gets its own version and hash, a review by a native speaker, and legal review in the market where it is used. Never show members a machine translation of the agreement or of the four choices.

Notifications and SMS

app/screens/notifications-settings.tsx apps/api/src/otp.ts lib/payouts.ts apps/mobile/CLAUDE.md

In the app today

Four switches, kept on the phone: Recording reviewed, Payment, Invite accepted, New ideas to record. Sending notifications from a server is not built yet.

SMS

Sign-in codes are six digits, valid for 10 minutes, five tries. Nzinga confirms every payout by SMS before any money moves. The SMS provider is chosen per market.

  • Lead with the fact, in one sentence. Name the recording by its title; never quote what was said.
  • No urgency, no streaks, no "don't miss out". "New ideas to record" is occasional.
  • An SMS never asks the member to reply with a code, a PIN or a payout number. Nzinga sends codes; it never asks for them.