Civitas Etymos
Credential Flow Specification

Refugee Lending Pilot

Verified credentials for thin-file applicants — Kakuma and Nairobi

Client
Tala · Kenya
Partners
Civitas ID · Etymos · RLOs (TUSA, KI4BLI, Cohere)
Author
Nick Mason, Etymos
Version
Revision 6 · 27 August 2026
Status
13 open questions · 2 gating the ledger

Everything in this specification traces to a source document or to a recorded answer in the change audit.

01

Pilot Overview

What is being tested, for whom, and how success is judged.

The pilot

Civitas ID and Tala are testing whether verified, consented credentials held in an applicant’s own wallet can open a segment Tala does not reach today. The pilot offers Tala three things: a pipeline of verified, consented applicants, assurance that each applicant is a real and unique identity, and features that add signal to thin-file underwriting. Each is judged separately.

Value propositionPilot hypothesisRequired at launch
Lead generationThe referral pipeline delivers eligible applicants at an acceptable funnel conversion, from a segment Tala does not serve todayYes
Identity assuranceVerified credentials reduce manual review, fraud losses, and duplicate or synthetic applications relative to Tala’s current onboardingYes
Credit riskEtymos features add signal over Tala’s own thin-file benchmark, or give the same signal earlier or more cheaplyPost-launch

The client

Tala, a regulated lender operating in Kenya. Tala retains full ownership of KYC, fraud, affordability and credit decisions throughout. Nothing in this flow decides, scores or approves on Tala’s behalf.

The problem

A thin-file applicant reaches Tala today with only the signals Tala can capture from its own app after install. Verified identity, refugee status, and any history that exists before the applicant arrives are all unavailable. Refugees are therefore assessed as new-to-credit, and are often screened out at the data-sufficiency stage of the funnel — before any credit judgement is made at all.

The solution

Referrals are sourced from the refugee community through Civitas’ ecosystem of trusted community-based and refugee-led organisations. The Civitas wallet takes the holder through the verification steps in section 2, storing the results as credentials they own. When ready, the holder consents to share that package with Tala, which runs its own onboarding and underwriting enhanced with the agreed Civitas feature set.

PartyRole
Civitas IDCreates and distributes the credential wallet, data orchestration and the Tala integration
EtymosTransforms wallet and credential data into usable features
TalaDefines eligibility, runs KYC, fraud, affordability and risk, originates and monitors any loans

Deployment stays light. Tala’s integration with Civitas delivers access to the holder and more than five new data sources, while Tala continues using its own processes and models — and can evaluate Civitas features both against customer outcomes and against its own features.

Key metrics

Measurement depends on data Tala provides, before and during the pilot. Success is measured against Tala’s own benchmark, not asserted.

PropositionWhat Tala provides
Lead generationCustomer acquisition cost and lifetime value · funnel conversion and drop-off rationale by stage
Identity assuranceKYC pass and fail rates, manual-review rates and rejection categories · fraud and duplicate-application rates to compare against
Credit riskPortfolio approval rates, bad rates and first-payment default rates · per-user outcomes: first-payment default and delinquency at 30, 60 and 90 days, plus final outcomes · insight into the features Tala uses in loan approval

That last item is the one worth securing early. Knowing which features Tala already relies on, before launch, allows Etymos to engineer features proven to correlate with them — rather than discovering the overlap afterwards.

Sampling. Pilot volumes will support conclusions about verification quality, fraud-type detection and feature correlation against Tala’s own features. A statistically robust credit-uplift result requires larger volumes with outcomes, built toward over subsequent quarters.

Outstanding confirmations from Tala. Three answers are needed ahead of the technical integration meeting, and the first two can change this specification: whether Tala’s legal team accepts the Refugee ID as a KYC credential for CBK purposes, whether the proposed flow requires CBK approval or no-objection, and which minimum KYC and eligibility fields Tala requires. If the Refugee ID is not acceptable, the Document Type enum in section 4 stops being a launch decision and becomes a gating one.

02

The Journey

One sequence for the whole product, in business language. Steps 1–3 happen inside the app and issue nothing. Steps 4–9 are platform interactions, each with a card in section 3.

TalaEtymosCivitas Social StampsApp · Civitas WalletRLO PartnerTalaEtymosCivitas Social StampsApp · Civitas WalletRLO PartnerGetting started — in the app, nothing is issuedServices are pre-loaded in the app. The holder connects to each one as part of that service's credential flow4 · Verify Your Identity — in-app buttonplain webhook · immediatealt[document validates and the holder is live][check does not pass]5 · Verify Your Email — in-app buttonplain webhook + web view step · immediatealt[code matches][code does not match]6 · Verify Your Mobile — in-app buttonplain webhook + web view step · immediate7 · Build Your Etymos Feature Set — in-app buttonextension Etymos Feature Derivation · immediate8 · Share Your Credentials with Tala — in-app buttonbiometric liveness in the app confirms the same holder is submitting the packagethe wallet will not start this step unless the holder holds every required credential — that is the referral gateextension Tala Onboarding · immediate9 · Your Loan Decision — service push · the holder leaves and is notified laterplain webhook · deferred while KYC, fraud, affordability and credit runalt[approved][declined]KYC, approval and repayment outcomes return to Etymos by backend API — outside the wallet1 · Referral — an RLO introduces Civitas in Kakuma or Nairobi2 · Onboarding — the holder sets a passcode3 · Profile — name, date of birth and phone number entered, held on the deviceIDV SDK in app: document capture and biometric livenessVerified ID Credentialwe could not verify your document — you can try againWeb View Step: enter your email address, then the code we send youVerified Email Credentialthat code was not correct — we can send a new oneWeb View Step: enter your mobile number, then the code we send youVerified Mobile CredentialVerified ID Credential, Verified Email Credential, Verified Mobile CredentialEtymos Feature SetVerified ID Credential, Verified Email Credential, Verified Mobile Credential, Etymos Feature Set, Notification Idnotification — Tala has your details, continue in the Tala appyour loan decision is readyLoan Offerdecline message to be confirmed — OPEN Q10

Scroll the diagram sideways to follow it across all five parties. Step 9 is the only step the holder may not finish in one sitting. Everything else completes immediately — which is why Tala must hold a Notification Id before step 9 can reach the holder at all.

Open points on the journey

Q01 · steps 5, 6 Are the OTP flows native too?

Identity verification is a native SDK and profile entry is native, but email and mobile are still drawn as web view steps. It is the last inconsistency in how the app collects things, and it changes what has to be built and hosted: a web view step needs an HTTPS page and a postMessage contract, native entry needs neither.

Q02 · step 8 Failure behaviour of the pre-submission liveness check

Confirmed: this check needs building — the Civitas app does not do it today. Still open is what happens when it fails. Can the holder retry, is the submission blocked, and is anything recorded?

This gate is the only thing binding the credential package to the person presenting it, so its failure behaviour is a security decision rather than a UX one.

03

Interaction Cards

One card per platform interaction — this is where the technology lives. A field that does not apply reads “—”, never blank, so that decided: none is distinguishable from nobody considered it.

Step 4Verify Your Identity

ServiceEtymos
MechanismPlain interaction webhook · immediate — no manual review in the pilot
InitiationButton
Processing policySequenced
Requires
Required via
Web view stepsNone — the Smile ID SDK runs natively in the Civitas app, capturing the document and the biometric liveness check
IssuesVerified ID Credential — exactly one platform limit
Attribute sourcesAll filled by the Etymos webhook from the Smile ID result. Service-attested throughout
Config (service)Smile ID environment and API credentials · registry-match policy, held with Smile ID, positive-only
Config (interaction)
Success message“Your identity is verified.” (placeholder — Q13)
Failure messageswe could not verify your document — you can try again · the selfie did not match your document · that document type is not supported yet (placeholders — Q13)
Deferred path— no manual review. A failed check is a retry, not a waiting state
Open questionsQ03, Q04, Q05

The native SDK removes a platform trap. In-app camera capture does not work inside a WebView in the current wallet build — the file selector discards capture and accept, and the WebView permission handler never grants camera. A native SDK has native camera access, so that constraint is gone. It was the largest single risk to this step. It would return the moment any capture step moved into a web view.

Q03 How is the SDK result bound to the platform event?

A native SDK sits outside the platform’s own mechanisms, so its result reaches Etymos out of band. Etymos must know which subscriber and which interaction event a given Smile ID job belongs to. Options: the app passes the subscriberConnectDid into the SDK job reference, or Etymos correlates on a token minted when the interaction starts.

Whatever the answer, it must be tamper-resistant — anything that lets one holder’s SDK result attach to another holder’s event is an identity swap.

Q04 Validation Result enum values

Fixed before the schema goes to the ledger, where it becomes immutable. Two decisions inside it: does the enum distinguish “document failed” from “liveness failed” — different customer messages and different fraud signals — and is the liveness attestation carried as its own attribute (drafted as Liveness Verified) or folded into Validation Result?

Q05 Nationality format

ISO 3166 alpha-3, or the wording printed on the document? For refugee documents these often differ, and Tala will match against one or the other.

Step 5Verify Your Email

ServiceCivitas Social Stamps
MechanismPlain interaction webhook + web view step · immediate — see Q01
InitiationButton
Processing policySequenced
Requires
Required via
Web view stepsEmail entry and one-time-code entry. Returns the address and the OTP result
IssuesVerified Email Credential — exactly one platform limit
Attribute sourcesAll filled by the webhook — service-attested, because the point of the credential is that Civitas Social Stamps vouches the address was reached
Config (service)Email OTP provider credentials
Config (interaction)
Success message“Your email address is verified.” (placeholder — Q13)
Failure messagesthat code was not correct — we can send a new one · that code has expired (placeholders — Q13)
Deferred path
Open questionsQ01, Q11

Split from the source’s step 4, which issued email and mobile credentials in a single step. The platform issues exactly one credential per interaction — more is rejected with 409 credential <id> should not be issued in action <n>, and the dashboard picker is single-select. The source’s step 4 is therefore steps 5 and 6 here.

Step 6Verify Your Mobile

ServiceCivitas Social Stamps
MechanismPlain interaction webhook + web view step · immediate — see Q01
InitiationButton
Processing policySequenced
Requires
Required via
Web view stepsMobile entry and one-time-code entry. Returns the number and the OTP result
IssuesVerified Mobile Credential — exactly one platform limit
Attribute sourcesAll filled by the webhook, including the SIM and phone-intelligence lookup
Config (service)SMS OTP provider credentials · SIM and phone-intelligence provider credentials
Config (interaction)
Success message“Your mobile number is verified.” (placeholder — Q13)
Failure messagesthat code was not correct — we can send a new one · we cannot send codes to that number (placeholders — Q13)
Deferred path
Open questionsQ01, Q06, Q11

Issuing this credential is what flips the profile’s phone number from self-attested to verified.

Q06 SIM attribute types, units and no-data values

SIM Tenure needs a unit (months or days). SIM Swap Recency needs to state what it counts and what it holds when there has never been a swap. All three SIM attributes need a value meaning “the provider had no data” — distinct from a negative result, following the same positive-only principle the pilot applies to registry matches.

Step 7Build Your Etymos Feature Set

ServiceEtymos
MechanismExtension Etymos Feature Derivation · immediate
InitiationButton
Processing policySequenced
RequiresVerified ID Credential (all attributes) · Verified Email Credential (Email Address, Verification Timestamp) · Verified Mobile Credential (Phone Number, Verification Timestamp, SIM Ownership Match, SIM Tenure, SIM Swap Recency)
Required viaExtension credentialsRequirednot on the interaction as well (422 credential <id> is required by interaction and integration <id> if both)
Web view steps
IssuesEtymos Feature Set — exactly one platform limit
Attribute sourcesAll filled by the extension’s onReceivingCredentials reply
Config (service)Feature policy — which features are derived and their confidence bands
Config (interaction)
Success message“Your profile is ready to share with a lender.” (placeholder — Q13)
Failure messageswe need your verified ID before we can build your profile (placeholder — Q13)
Deferred path
Open questionsQ07, Q08, Q12

Build note. An extension needs three separate writes to go live: define it, install it on the service, attach it to the interaction. Missing any one produces silence, not an error. It also needs a default webhook key on the Etymos service, or every config read returns 500.

Q07 · gates the ledger The feature list, types and ranges

Held open as an explicit placeholder. Each feature needs a name, a type and a range before the schema goes to the ledger, where it is immutable — a feature added later means a new schema version, a new credential definition, and a re-issue to every holder. Worth over-declaring now rather than under-declaring.

Q08 Is the pseudonymous reference stable across re-issue?

Minting is agreed: Etymos mints the Pseudonymous Applicant Reference and carries it as an attribute here, so it travels into Tala’s hands with the presentation and can be echoed in outcome data. A DID cannot serve this purpose — a subscriberConnectDid is stable only for one customer-service pair, so the DID Etymos holds for an applicant is not the DID Tala holds for the same person.

Still open: if the Feature Set is rebuilt, does the reference survive? If it does not, a rebuilt profile becomes a new applicant and the credit measurement breaks.

Step 8Share Your Credentials with Tala

ServiceTala
MechanismExtension Tala Onboarding · immediate — hands the assembled package to Tala’s KYC and origination systems
InitiationButton
Processing policySequenced
RequiresVerified ID Credential · Verified Email Credential · Verified Mobile Credential · Etymos Feature Set · Notification Id
Required viaExtension credentialsRequired — not on the interaction (422 if both)
Web view steps
Issues— nothing. The handoff is confirmed by a notification
Attribute sources
Config (service)Tala environment and API credentials
Config (interaction)
Success messageNotification: “Tala has your details, continue in the Tala app.” (placeholder — Q13)
Failure messagesTala is not accepting applications right now (placeholder — Q13)
Deferred path— the wait happens at step 9
Open questionsQ02

A biometric liveness check runs in the app before the package is submitted, confirming the same holder is presenting it. It gates the step, is not a credential, and needs building — see Q02.

Notification Id must be received and stored here, or Tala can neither confirm the handoff nor push the decision at step 9. A holder who declined push permission has no Notification Id, gets no handoff confirmation and no decision notification — the decision still exists, but they would have to find it in the Tala app.

The referral gate is enforced by the wallet, not by the extension. The wallet will not start a step unless the holder holds every credential it requires. Tala then verifies and approves per its own policy. No gate logic lives in the Tala Onboarding extension.

Step 9Your Loan Decision

ServiceTala
MechanismPlain interaction webhook · deferred — started by Tala once KYC, fraud, affordability and credit have run
InitiationService push
Processing policySequenced
Requires— Tala already holds the package from step 8
Required via
Web view steps
IssuesLoan Offer — exactly one platform limit. Nothing is issued on a decline
Attribute sourcesAll filled by the Tala webhook
Config (service)Lending policy — not specified in the source, and Tala’s to state
Config (interaction)
Success message“Tala has made you a loan offer.” (placeholder — Q13)
Failure messagesTo be confirmed — Q10
Deferred pathThis step is the deferred path. Nothing on the platform expires an abandoned case, so Tala must explicitly call credentials-issuing-failed on a decline, or the event waits forever
Open questionsQ09, Q10
Q09 Loan Offer attributes

Amount, term, rate and offer expiry are all unstated, and none may be inferred — the source deliberately leaves every product parameter to Tala. Needed before the schema is written.

Q10 The decline message, and whether a reason is given

This matters more than the other wording placeholders. The pilot’s premise is that refugees are currently screened out at the data-sufficiency stage, and its fairness measures include complaints and appeals. If there is an appeal route, does it appear in the wallet or only in the Tala app?

04

Credential Dictionary

Every credential defined exactly once, and referenced by name everywhere else. Used by is what stops a schema changing without anyone noticing who depended on it.

All Date attributes store epoch seconds and display as DD/MM/YYYY. The platform has no string date type: a Date attribute is an epoch integer in its declared units, and the wallet renders it. Storing a literal 27/08/2026 would need a Text attribute, which loses every comparison — including checking Expiry Date against today.

There is no profile credential. See 6.2.

Verified ID Credential

Issued byStep 4 · Verify Your Identity (Etymos, via the Smile ID SDK)
Trust levelService attested — Etymos vouches for the check
RevocableYes manually, and expires per Expiry Date
Used byStep 7 · Build Your Etymos Feature Set  ·  Step 8 · Share Your Credentials with Tala
AttributeTypeFormat / valuesNotes
Document TypeEnum1 Refugee ID · 2 National ID · 3 PassportTransmitted as the number, never the label. Reserve a value now for any fourth type
Document NumberTextfree textNo regex editor in the dashboard — enforce in the Etymos backend
Full NameTextas printedVerifies the profile’s name
Date of BirthDateepoch secondsVerifies the profile’s date of birth
NationalityTextQ05ISO 3166 alpha-3, or the document’s own wording
Issuing AuthorityTextfree text
Expiry DateDateepoch secondsThe document’s expiry. The credential expires with it
Validation ResultEnumQ04Does it separate document failure from liveness failure?
Liveness VerifiedEnumQ04Attests a biometric liveness check was performed at issuance. Not a liveness result — see 6.3
Verification TimestampDateepoch secondsWhen the check ran, which is what makes the liveness attestation meaningful

No registry-match attribute: the positive-only rule is a Smile ID policy setting, so it never reaches a schema.

Verified Email Credential

Issued byStep 5 · Verify Your Email (Civitas Social Stamps)
Trust levelService attested
RevocableYes — provisional Q11
Used byStep 7 · Build Your Etymos Feature Set  ·  Step 8 · Share Your Credentials with Tala
AttributeTypeFormat / valuesNotes
Email AddressTextRFC 5322No regex editor — enforce in the backend
Verification TimestampDateepoch seconds
Verification MethodEnum1 OTPOne value at launch — reserve the numbering, a schema cannot be edited later
IssuerTextCivitas Social StampsKept for human readability in the wallet

Verified Mobile Credential

Issued byStep 6 · Verify Your Mobile (Civitas Social Stamps)
Trust levelService attested
RevocableYes — provisional Q11
Used byStep 7 · Build Your Etymos Feature Set  ·  Step 8 · Share Your Credentials with Tala
AttributeTypeFormat / valuesNotes
Phone NumberPhoneE.164Verifies the profile’s phone number
Verification TimestampDateepoch seconds
Verification MethodEnum1 OTPSame enum as Verified Email — keep the values identical across both schemas
SIM Ownership MatchEnumQ06Needs a value meaning “provider had no data”
SIM TenureNumberQ06Months or days — unit must be declared
SIM Swap RecencyNumberQ06Days since last swap, and a value for “never swapped”
IssuerTextCivitas Social StampsKept for human readability, matching Verified Email

Etymos Feature Set

Issued byStep 7 · Build Your Etymos Feature Set (Etymos)
Trust levelService attested
RevocableYes — provisional Q11
Used byStep 8 · Share Your Credentials with Tala
AttributeTypeFormat / valuesNotes
Pseudonymous Applicant ReferenceTextQ08Minted by Etymos. The join key for outcome data — a DID cannot serve
derived featuresplaceholderplaceholderQ07 — held open
confidence levelsplaceholderplaceholderQ07
Q12 Does the Feature Set copy attributes, reference them, or neither?

The source lists “Verified ID, verified email” among this credential’s own attributes. A credential cannot contain credentials. The recommendation is a derivation note with no copied values, since copying defeats the data minimisation the source argues for. Still unanswered.

Loan Offer

Issued byStep 9 · Your Loan Decision (Tala)
Trust levelService attested
RevocableYes — provisional Q11
Used by— nothing in this specification consumes it. It is the holder’s own record
AttributeTypeFormat / valuesNotes
offer termsQ09Q09Amount, term, rate and offer expiry are Tala’s to state

Notification Id

Issued byExternal — platform-provided, held by the wallet
Trust levelSelf attested
RevocableNo — wallet-held push token, nothing to revoke
Used byStep 8 · Share Your Credentials with Tala
AttributeTypeFormat / valuesNotes
Notification IdTextpush tokenA service can only push to a holder whose Notification Id it has already received and stored. Present only if the holder allowed push notifications
Q11 · gates the ledger Who revokes each credential, and on what trigger?

Every credential here is marked revocable, so every credential definition needs a revocation registry stood up at definition time — a registry cannot be added to an existing definition afterwards. Marking them all revocable is the safe default precisely because the decision is irreversible in the wrong direction: an unused registry costs nothing, a missing one costs a re-issue to every holder.

Verified ID has an answer — manual revocation, plus expiry. The others do not. Are Verified Email and Verified Mobile revoked when the address or number stops being reachable? Is the Feature Set revoked when it is rebuilt, which would make Q08’s stability question sharper? Is a Loan Offer revoked when it expires, or left standing as the holder’s record?

05

Open Questions

13 open. Two gate writing anything to the ledger — Q07, the feature list, and Q11, revocation, because a revocation registry is created with the credential definition and can never be added afterwards.

Question IDs are stable. A question keeps its ID for life, a closed question’s ID is never reused, and new questions take the next free number. Closed questions move to the change audit.

IDWhereQuestionStatus
Q01Steps 5, 6Are the email and mobile OTP flows native in-app too, or still web view steps?Open
Q02Step 8Failure behaviour of the pre-submission liveness check — retry, block, record?Narrowed
Q03Step 4How is the native SDK result bound to the platform event, tamper-resistantly?Open
Q04Step 4Validation Result enum values, and whether liveness is its own attributeOpen
Q05Step 4Nationality — ISO 3166 alpha-3 or the document’s wording?Open
Q06Step 6SIM Tenure and Swap Recency — types, units, and no-data valuesOpen
Q07Step 7The feature list, types and rangesGates ledger
Q08Step 7Pseudonymous reference — stable across a re-issue of the Feature Set?Held open
Q09Step 9Loan Offer attributes — amount, term, rate, offer expiryOpen
Q10Step 9Decline message, and whether an appeal route appears in the walletDeferred
Q11DictionaryWho revokes each credential and on what triggerGates ledger
Q12DictionaryFeature Set listing credentials as attributes — copied, referenced, or neither?Open
Q13All cardsCustomer-facing wording throughout, and the language set for Kakuma and NairobiDeferred
06

Reference

Supporting detail behind decisions made in sections 2 to 4.

6.1  Source steps that are not platform interactions

Source stepWhy it has no card
1 · Referral and app entryApp install and RLO assistance. Nothing runs on the platform
2 · OnboardingPasscode and profile are entered in the app and stay on the device
6 · Referral gateThe wallet will not start a step whose required credentials are missing
8 · Handoff to TalaA deep link, not an interaction. The credential exchange is step 8 of this journey
10 · Outcome data returnBackend API from Tala to Etymos. Never touches the wallet

6.2  The profile is not a credential

Passcode and profile — name, date of birth, phone number — are entered in the app, held on the device, and never sent anywhere. Nothing is issued.

The profile is a view, not a credential. Each of its attributes starts self-attested and becomes verified when a credential covering it is issued: the phone number when Civitas Social Stamps issues Verified Mobile Credential, name and date of birth when Etymos issues Verified ID Credential. The profile display updates to reflect that.

There is no profile schema, no credential definition and no interaction — which is why the platform’s one-credential-per-interaction limit never applies to it.

6.3  Liveness

Liveness cuts two ways in this flow.

  • At issuance. Verified ID Credential attests that a biometric liveness check was performed when the identity was verified. That attestation travels with the credential.
  • At presentation. The Civitas app runs a fresh biometric liveness check before the holder submits the package to Tala, confirming the same person is submitting it. This is a wallet-side gate, not a credential and not a platform mechanism. It needs building — see Q02.

A liveness result still cannot be issued as a credential: it stales the instant it is issued, because liveness confirms presence at a moment rather than a durable fact. The credential can carry the fact that a check happened, and the app can prove presence again when it matters.

Civitas runs the presentation-time check regardless. Whether Tala also runs its own at origination is Tala’s decision. The pilot’s manual-review-reduction measure should therefore not count liveness as a saving unless Tala confirms it is dropping their own.

6.4  Platform limits applied to this flow

Recorded because they changed this specification, not as advice.

LimitEffect here
One issued credential per interactionThe source’s step 4 became two steps. More is rejected with 409 credential <id> should not be issued in action <n>
A credential may not be required by both an interaction and its extensionRequired credentials are declared once, on the extensions at steps 7 and 8. Both would return 422 credential <id> is required by interaction and integration <id>
Revocation registries are created with the credential definitionNever added later, so Q11 gates the ledger alongside Q07
Nothing expiresAn undecided loan waits forever unless Tala calls credentials-issuing-failed
A service can only push to a holder whose Notification Id it storesTala collects it at step 8, or cannot reach the holder at step 9
In-app camera capture fails inside a WebViewNo longer applies — identity verification uses a native SDK. Would return if any capture step moved into a web view
Extensions need three writes — define, install, attachMissing one produces silence, not an error. Also needs a default webhook key, or config reads return 500
No attribute validation regex has a dashboard editorDocument Number, Email Address and Phone Number formats are the backends’ responsibility
pingUrl is never calledPilot monitoring must point at a real health endpoint

6.5  Terminology

The source document, the Civitas dashboard and the platform backend use different words for the same things.

This documentBackendSource document
Interaction / stepaction templatefeature, service, journey
Extensionweb-integrationintegration
Eventsubscriber action
Credentialcredential definitioncredential
Web view stepmini-app
07

Change Audit

Every answer recorded, in sequence, with what it changed. Question IDs referenced here are stable and are never reused.

26 Aug 2026Revision 1Initial draft from the source document — 23 gaps marked, 3 blocking
26 Aug 2026Revision 2First answer set applied
QuestionAnswerChange to the specification
Tala handoff shapeTala runs its own Civitas serviceTala-side steps kept in the wallet. Credentials presented directly, decision returned as a credential
Email / mobile issuerCivitas Social StampsIssuing service named throughout, replacing the placeholder “Civitas ID”
Selfie and livenessCannot be a credential — it stales on issueLiveness removed from the shared set. Recorded that Tala cannot receive it and must run its own
Trigger for first stepIn-app buttonAll steps became in-app buttons. Raised how a fresh wallet connects
Basic profileRetained as self-attested, attributes lockableAdded a Basic Profile credential and its own step — later reversed, see revision 5
Manual reviewNot in scopeIdentity verification became immediate. Dropped its Notification Id requirement
IDV providerSmile ID — refugee ID coverageNamed in service config. Flagged the Android WebView camera limitation
Document enumAccepted 1 / 2 / 3Values fixed in the dictionary, with a note to reserve a fourth
Registry matchA Smile ID policy, not a schema attributeRemoved from the credential. Recorded as service config
Verified ID revocationRevocable manually, expires per dateSet in the dictionary. Raised revocation for the other credentials
SIM signalsOwnership match, tenure and swap recencyAll three added as attributes. Types and units raised
Feature derivationExtensionMechanism confirmed. Recorded the three-write install sequence
ConsentNo separate Consent credentialPresentation is the consent. No extra step
Handoff confirmationA notification, not a credentialStep 8 issues nothing
Loan decisionIs a credentialLoan Offer added to the dictionary, attributes raised
Feature listPlaceholder pendingHeld as a blocking gap
Date formatDD/MM/YYYY, seconds acceptableCorrected — the platform has no string date type. Stored as epoch seconds, displayed DD/MM/YYYY
Outcome join keyProposed the DIDCorrected — a subscriberConnectDid is stable only per customer-service pair. Etymos must mint a reference
26 Aug 2026Revision 3Follow-up answers and two corrections confirmed
QuestionAnswerChange to the specification
Pseudonymous referenceAgreedMinting confirmed. Stability across re-issue remained open as Q08
Referral eligibilityNot a credential — the wallet blocks the holder without required credentialsRemoved the Referral Eligibility credential and its step. Gate documented as a wallet behaviour
Notification Id trust level“Machine generated, not self-attested”Corrected — trust level describes who attests, not who generates. Kept self attested, confirmed at revision 4
Date formatConfirmedEpoch seconds, displayed DD/MM/YYYY
26 Aug 2026Revision 4Revocation directive
QuestionAnswerChange to the specification
RevocationMake all credentials revocable, keep flaggedEvery credential set revocable. Raised to a second ledger gate, since registries cannot be added after the definition exists
Feature listKeep as an explicit placeholderMarked held open rather than awaiting a nudge
Pseudonymous referenceKeep openMarked held open
27 Aug 2026Revision 5Profile, SDK and liveness corrections — the specification got smaller
QuestionAnswerChange to the specification
Profile creationNot a web view. In-app, self-attested, device-basedRemoved the profile step entirely. Nothing is sent to any service
Profile as a credentialNo one issues it. Attributes are verified individuallyRemoved the Basic Profile credential and schema. Documented the profile as a view whose attributes become verified as credentials land. Dissolved two questions rather than answering them
Identity verificationNative IDV SDK in app, not a web viewMechanism changed to a plain webhook. Removed the Android WebView camera risk. Raised how the SDK result binds to the platform event (Q03)
Service connectionServices pre-loaded, holder connects during each service’s flowJourney note added. Closed the connection question
Liveness at issuanceThe credential can attest liveness was performedAdded the Liveness Verified attribute
Liveness at presentationThe app must re-check before submitting to TalaAdded a wallet-side gate at step 8
Issuer attributeKeep for human readabilityRetained on both contact credentials
Verification methodOTPEnum fixed at 1 OTP, numbering reserved
Informational pushWorks without an attached credential, if push is allowedHandoff confirmation confirmed viable. Recorded that a holder who declines push receives nothing
27 Aug 2026Revision 6Current — document restructured
QuestionAnswerChange to the specification
Pre-submission livenessNeeds buildingRecorded. Question narrowed to failure behaviour only, retained as Q02
Tala livenessCivitas runs it regardless. Tala’s own is Tala’s choiceClosed. Recorded that the manual-review-reduction measure should not count liveness unless Tala confirms it is dropping their own
OTP flows native?Keep openRetained as Q01
Remaining questionsKeep open for team discussionRetained

Structural changes this revision. Question IDs made stable, so an ID now means one thing for the life of the document. Steps 1–3 restored to the journey — partner referral, app onboarding and profile creation — numbered in a single sequence with the platform interactions, so the journey reads end to end. Interaction cards renumbered to match. Colour-band shading removed from the diagram in favour of plain notes, so it renders identically in every viewer. Pilot Overview added. Reference material moved to section 6. Version history moved here from the body.