# Persona

Persona app is the flagship product of FirstBatch that uses both [HollowDB](https://github.com/firstbatchxyz/HollowDB) and [DANNY](https://github.com/firstbatchxyz/danny). In this application, the user signs in using a few options:

* Email & Password
* Google Account
* MetaMask

In the first two options, a wallet is created for the user in the background. With the wallet, the user signs a constant reference string, and the signature is SHA256 hashed to obtain a `secret`. The Poseidon hash of this `secret` will be the `key` in HollowDB for this user!

After signing in, an AI model scans the social media profiles and activities of the user and generates a vector embedding from it. The resulting vector is stored in HollowDB at the user's `key` as described previously.

*Here is the catch*: only the user will be able to update & remove their key at HollowDB. They do this by generating a zero-knowledge proof of preimage knowledge of their `key` (which they can because they know the `secret`). HollowDB's smart contract verifies this using SnarkJS, within SmartWeave!

Try out Persona app below:

{% embed url="<https://persona.firstbatch.xyz/>" %}
