Add Proof of Personhood to Your App in 3 Steps: An I Am Human Journal Walkthrough
A practical walkthrough of integrating Personhood Credential into I Am Human Journal’s comment feature—from defining the flow and registering the app to implementation with a coding agent. Users can comment without creating another account, with clear limits around walletDid, seven-day sessions, and ongoing credential validity.
Where do you start when you want to add proof of personhood to an app?
In this video, I integrate Personhood Credential into I Am Human Journal’s comment feature, following three steps:
- Define where proof of personhood fits into the user flow.
- Register your app in the App Registry.
- Hand the requirements to a coding agent. A good time to be building with AI!
1. Define the use case
Originally, anyone could leave a comment on I Am Human Journal. There was no verification step to check whether the commenter was human.
Here is the flow I wanted to add:
- When a user clicks the comment button, check for a valid session. If one exists, show their name and the comment field. Otherwise, display a QR code.
- The user scans the QR code with the Personhood Credential app and submits a presentation for the backend to verify.
- The backend searches Firestore for the same
walletDid. If it finds a match, it retrieves the saved name. Otherwise, it asks the user to enter a name. - Show the name and comment field so the user can leave a comment.
In this example, sessions last seven days, and a logout button appears while a session is valid.
2. Register your app in the App Registry
Go to the App Registry and register your app.
For this example, select Basic Access as the type. The corresponding request type is BasicAccessRequestVerifiableCredential.
3. Hand the requirements to a coding agent
Give the coding agent the integration documentation, configuration file locations, and intended user flow, then ask it to plan the implementation.
Here is the exact prompt used in the video, unchanged:
- Read https://developer.iamhuman.link/docs/v1 to understand integration with Presentation Exchange Platform(PEP).
- PEP Config file is in folder config. DID is in folder keys.
- I’d like to integrate Iamhuman Journal with Personhood Credential. Below scenario is what I’d like to achieve.
- User clicks comment button. If session existed, display the name and comment textfield. If session not existed, display the fetch QR code.
- User scan and submit the presentation. Search user walletDId in the firestore. If it existed, get the name from the store. If it does not exist, ask user input a name first.
- Display the name and comment textfield.
- `BasicAccessRequestVerifiableCredential` is the request type. System grants 7 days session. Add a logout button on the Shell when session is valid.
Plan this task.
I appreciate how AI helps turn a clearly defined requirement into a working feature more quickly.
Where this approach fits—and its limits
The points below describe the example recorded in the video. The current Journal implementation includes additional credential status checks.
Reducing signup friction
In this scenario, Personhood Credential lets users leave a comment without creating another account.
Being asked to sign up and set another password can be enough to make someone leave. For lightweight interactions like commenting, removing those steps makes participation easier.
walletDid is not a permanent account identifier
The server can use walletDid to look up user data, but walletDid can change. The identification approach in this example is therefore unsuitable as the sole basis for a permanent account system.
If your product needs long-term access to account data, you will also need to design account continuity and recovery.
A seven-day session does not mean continuous credential verification
The recorded example verifies proof of personhood when establishing the session. Users can then comment during the seven-day session without repeating verification for every comment.
The recorded example also does not store the submitted credential or implement subsequent credential status checks. It therefore cannot continuously determine whether the credential remains valid.
If your app has lightweight interactions such as commenting, start by defining the user flow. Then use the App Registry and a coding agent to bring proof of personhood into that experience.