POXTAL
One place, a true trace
One place, a true trace
01 — WELCOME

Your Memory, with Real Seals

Poxtal turns the places you visit into seals in a digital passport, and your photos into virtual postcards that you can print or send virtually through Poxtal.

02 — FAMILY BOND

Would You Like to Add a Family Bond?

Watcher mode lets you follow a loved one's posts without interacting. It is completely optional.

MotherWatcher
FatherWatcher
SiblingWatcher
OtherAdd
03 — SOCIAL CIRCLE · 3/3 REQUIRED

3 Contacts Confirm That You Are You

Without this, no one could impersonate you.

1
User 1
3
User 3
4
User 4
Don't Have 3 Contacts Available Right Now?
Verify your ID document and it will count as your third guarantee.

You can explore and create, but no one sees your activity until you are approved.

Poxtal
Hello, traveler
One place, a true trace.

For you

Bonds in motionWhere your bonds are, with their photos
Around youPhotos of this moment near you
PLAZA MAYOR
Madrid
4 SEP · 10:42
⋯
+
⋯
+
No photo
+
⋯
+
No photo
Activity
Today · sorted by time
08:30
YouC/ Mayor 3, Madrid
10:10
User 1C/ Sierpes 12, Sevilla
10:42
YouPlaza Mayor 1, Madrid
13:05
User 2C/ Comercio 8, Toledo
The most remarkable — more reactions, more text, more emotion.
Week of Aug 31 (Mon) to Sep 6 (Sun)
Vintage photo
Local painting
POXTAL
PASSPORT — Nº 0001
SealsPlaces and institutions Explore
StampsYour daily calendar Active
MemoriesYour album of moments

Recent Activity

Nothing yet — your seals and memories will show up here.

Create Postcard

POSTCARD
Photo from your home page — tap "Change" to use another.

Add a Quote

Pick one of the quotes you collected. It is added to the end of your message.

Select Stamp

It does not disappear from your collection, but each stamp can only be used once on a postcard.
Sent directly to your contact inside Poxtal
QR: can be shown/scanned without internet · Local Mailbox: you leave it at an allied physical spot

Album

Your Line

Albums of your contacts
User 1Sevilla
User 2Toledo

Profile

The profile photo requires face verification: it must be your face.
Verification Channel
Phone ⌄
Phone
Messaging
Email

Settings

Album and Photos

Album Visibility
Approved contacts only ⌄
Approved contacts only
Family bond only
Private
Camera Settings
Automatic Seal Position
Bottom-right ⌄
Bottom-right
Bottom-left
Top-right
Photo Information (Overlay)
Automatic (EXIF) ⌄
Automatic (EXIF)
Automatic (geolocation)
Manual

Notifications

Notifications
Enabled ⌄
Enabled
Received postcards only
Disabled
Real notifications on your phone — postcards, messages and new requests, even with the app closed.

Language

This app's interface is written in English by default. Ido and other languages can be selected below.
Language
English ⌄
Ido
Deutsch
English
Español
Français
Italiano
Polski
Português
Română
Türkçe
中文 (Mandarin)
हिन्दी (Hindi)
العربية الفصحى (Modern Standard Arabic)
বাংলা (Bengali)
Русский
日本語 (Japanese)
廣東話 (Cantonese)
한국어 (Korean)

Display and Storage

Theme
Violet ⌄
Violet
Light
Dark
Storage
calculating…

Admin Panel

Users

Browse any real account and its album to verify everything follows the rules — it does not need to be your contact.

Reports

A ban immediately closes that person's session and prevents them from coming back.

Photos

Photos without Verified EXIF
Hosted before real EXIF became mandatory, or uploaded another way — review them and delete the ones that don't fit, or delete them all at once.
Pending Proof Photos
Seals that require a photo (requires_proof=2) — the seal is only granted when you approve it.
Seal image diagnostics
Checks whether every seal has an image and whether that image really exists in R2. Also shows images in R2 that no seal uses.

Bans

Seals

Seal QR Code
For a seal with requires_proof=1 — the visitor types/scans this code on site.
Create / Edit Seal
Use the same ID as an existing seal to edit it.
Bulk Seal Upload with Custom Art
For real countries, cities or monuments of the world. First upload the images to the R2 storage poxtal-postcards (dragging the whole folder in the Cloudflare panel), following the path the import file indicates — then paste here the JSON you were given, and confirm.
Create Event with Custom Seal

Issuers

Issuers (museum/café/event)
For now only you can upload issuers — there is no separate entry yet for them to sign in directly.
Link Issuer to User
Gives a user their own "Issuer Panel", limited to the seals of that issuer. Leave the issuer ID blank to unlink.

Stickers

Added to the permanent  and to your real collected seals, as options for reacting to a contact's photo. For now the sticker "design" is an emoji — not an uploaded image.

Issuer Panel

You only see and manage the seals of your own issuer.
Your Seals
Create / Edit Seal
Seal QR Code
Pending Proof Photos
Create Event with Custom Seal

Cards

Basic cards for greetings, thanks and events — sent like a postcard.
Blank Postcard (AI)
Greeting
Thanks
Condolences
Birth
Wedding
Graduation Party
Birthday
Anniversary
Welcome
Congratulations
Get Well
Farewell

Memory Book

Everything you obtained, in one place to browse whenever you want.
1/1

Blank Card

 End-to-end encryption — not even Poxtal can read these messages.
A maximum of 3 messages per day this way — for calm conversations, it does not replace a call.
0/3 messages sent today

Data Policy

Poxtal processes biometric data (your face) and personal data (phone, email, address). This requires specific legal principles — here is how they apply, based on the European GDPR, the Spanish LOPDGDD, and biometric laws such as Illinois' BIPA (the strictest standard that exists today).

1. Explicit and Separate Consent

The face is a "special category of data" (GDPR Art. 9). Accepting general terms is not enough: you need its own checkbox, unchecked by default, specific to biometrics — as is done in the face verification step.

2. Data Minimization

Only the mathematical vector of your face is stored (irreversible, your photo cannot be reconstructed from it), never the original image after processing. Same for location: the city/coordinate of the moment is stored, not a permanent movement history.

3. Right to Erasure and Portability

You can ask for your face vector and personal data to be deleted at any time (GDPR Art. 17). You can also request a copy of everything Poxtal has about you in a readable format (GDPR Art. 20). This must be resolved within 30 days at most.

4. Limited Retention

If you close your account or request deletion, the biometric vector is deleted permanently and irreversibly, not just "hidden". BIPA requires deleting biometric data at most 3 years after the last interaction, or sooner if the user requests it — Poxtal must obey the shorter limit of the two.

5. Never Sold or Shared with Third Parties

Biometric data is never sold, leased or used for advertising — this is explicitly forbidden by BIPA and is bad practice under GDPR. It is only used for the exact purpose for which you gave consent: verifying that you are you.

6. Mandatory Encryption

All personal and biometric data must travel encrypted (HTTPS/TLS) and be stored encrypted at rest on the server — never in plain text. Passwords are already stored this way (PBKDF2 with salt, 100,000 iterations), and all communication with the server goes over HTTPS.

7. Minors

Processing the biometrics of minors requires verifiable parental consent (GDPR Art. 8, and laws such as COPPA in the US) — Poxtal needs real age verification before allowing registration.

The Central Principle: the Client Is Never the Source of Truth

Poxtal already has a real server: passwords are stored encrypted (PBKDF2), account verification is confirmed by email with a one-time code, and real postcards, seals and cards are stored and validated on the server side, not on the phone. What does not exist yet is real face recognition (it needs a GPU server, documented separately) — in the meantime, that specific step remains a visual simulation, and is marked as such in the app.

Play

Daily streak
0days in a row
Longest streak0

Monthly challenges

Your collection

Today in history

Your Poxtal so far

Poxtal Calendar

13 months of 28 days, no irregular weeks — every month always starts on a Monday. Based on the International Fixed Calendar.
—
—
—
—
—
the Sun is here today
—
—
—
The zodiac here is the real one (where the Sun really is among the stars) — not that of horoscopes, which use fixed dates from 2000 years ago.
—
Mo
Tu
We
Th
Fr
Sa
Su

Celestial agenda

Eclipse Season Planet Meteors

Coming up

Times are shown in your local time. Eclipses are visible only from part of the world. Planet dates are approximate (give or take one day).

What do you want to do with this postcard?

Your Published Photo

Do you want to share your Poxtal of today?

Stays active for 24 hours — renews every time you use the app again.

Your Account

This is what makes the seals, postcards and photos you send really stored and visible only to you — it is not the demo account of the rest of the app.

Sign-in Security

How Poxtal prevents fake profiles and duplicate accounts — the specification of this table, to be built on the server and the native app.

1. Face Recognition — How Your Face Is Compared

Your profile photo becomes a vector of 128-512 numbers (a face "embedding", with a model such as FaceNet or ArcFace) that describes your features, not the image itself. Every time you re-verify, another vector is generated and compared by cosine similarity: if the result exceeds ~0.6-0.7, it is the same person. The original photo is never stored identically twice — only the vector, and encrypted. This runs on a GPU server, not in the browser.

2. "Proof of Life" Detection (Liveness)

So that no one uses a printed photo or a screen instead of a real face, a random challenge is requested at that moment: blink, turn your head, or smile, while the camera records for a few seconds. The model verifies that there is real 3D movement (not a flat image). Without this, any stolen photo would be enough to pretend to be someone.

3. Fingerprint — or Its Replacement with a Photo

If the phone already has a fingerprint reader, the system's Face ID / native fingerprint is used (Android BiometricPrompt, iOS LocalAuthentication) — the app never sees the fingerprint, it only receives a "yes/no" from the operating system. If the device has no fingerprint sensor, the real replacement is not "photographing the finger" (a fingerprint cannot be reliably verified that way) — the right replacement is using the same face recognition from step 1 as the only biometric factor, strengthened by the liveness challenge from step 2. It is safer than trying to simulate a fingerprint with a camera.

4. One Person, Many Accounts — How It Is Detected

3 signals are crossed; none is enough alone, but together they reveal the pattern:

• Device Fingerprint: hash generated from Canvas/WebGL fingerprint + hardware IDs (native: identifierForVendor on iOS, Android ID) — if the same device creates 2+ accounts, it is flagged.

• Grouping by Location: many new accounts activated from almost identical GPS coordinates in a short time is the classic signal of an "account farm".

• The Face Embedding from Step 1: if two different profiles have face vectors with similarity above ~0.9, it is almost certainly the same face with two identities — automatic block until human review.

5. Anti-Bots at Registration

Instead of an annoying CAPTCHA, the behavior is measured: typing speed, mouse/finger movement, time between registration steps. A perfectly uniform pattern (typical of a script) adds suspicion points. Since this registration ALREADY requires a real camera + liveness challenge + 3 approving contacts, a bot cannot pass on its own — it would need a real person behind it, which defeats the purpose of a mass bot.

Important — What Works Where

Real face recognition needs a trained AI model running on a server with a GPU — a browser cannot do it reliably or securely on its own (someone could manipulate the client-side code). This screen is the exact specification for when Poxtal has that server — the prototype simulates the flow and the screens, not the AI model itself.

6. Screenshot Blocking — A Real Limit We Must Accept

No web browser has a way to prevent a screenshot — it is a design decision by Apple/Google/Microsoft, not something a page's code can avoid. Only a native app can request it: on Android, the flag FLAG_SECURE makes the screen appear black in any capture or recording; on iOS you cannot block the capture itself, but you can detect when it happened (UIScreen.capturedDidChangeNotification) and react (warn the other user, momentarily darken). In this web prototype, the only honest action possible is disabling "save image" on right-click/long-press — a small friction, not a real barrier.

7. Stolen or Replicated Photos of Another Person

Every uploaded photo becomes a perceptual hash (pHash or similar) — it is not like a normal hash, but one that gives similar values to similar images. When a photo is uploaded, the server compares its hash against all photos already existing at the same place:

• Different Angles of the Same Place (without being the same photo)  accepted normally, everyone has their own memory of the place.

• Very Similar (slight edit, crop, filter)  rejected as new valid photos — it does not count as "your" original photo.

• Identical  the exact date of upload and the quality (resolution, if it has its own EXIF) of each copy are stored. The oldest and best-quality one wins — that one stays as the original, the others are deleted from the account that uploaded them later.

8. Consequences and Appeal — Truth First, but with a Way Back

If an account has 3 photos disabled for this reason, it is banned automatically for impersonation — as severe as the rest of the app's anti-fraud rules.

But the real situation of someone whose OWN photo was stolen and who has no way to prove it (they lost it, they don't have the original) is considered. For that there is an appeal to the community: they can ask their own verified contacts to attest that the photo is theirs — such a situation is studied separately, it is not solved by the hash alone. The goal is to prioritize the truth, not just the date.

Offline Network

How Poxtal would keep working without internet, once it is a native app (not a web page). This screen is the living specification of that architecture.
 Local transport real
From phone to phone, without a server. Two nearby phones exchange two QR codes and connect directly (WebRTC, encrypted). Works on the same Wi-Fi or hotspot, even without internet.
Received via local transport
Nothing yet.
Mesh Network Simulation — 3 Nearby Nodes
Internet active — the mesh network stays on standby
You
User 1
User 2
node
Simulated reach ∼100m · extends with each added node
Bluetooth LE
Main Transport
Ultrasound
Fallback (18kHz)
2 in Queue
Waiting for Hop

1. Two Separate Tables — Strict Isolation

Identity Table (what already exists: face, social circle, ban) decides who you are and what you can do. Transport Table (this one) decides how the information travels — it never knows or cares who you are, it only moves encrypted packets from one node to another. Strict Rule: a failure in the Transport Table (no signal, a failed node, a corrupted packet) can never freeze, block or affect what the user sees or does in the Identity Table — it runs in a separate process/thread (background service), with its own error caught and isolated there. And conversely: nothing that happens in the Identity Table (opening a photo, navigating, verifying your profile) can halt a send that is already traveling through the mesh network.

2. Delivery Guarantee — No Obstacles for Those Who Must Receive

Every packet is processed one by one, never all-or-nothing: if one fails, the others still get through. Without a connection, the send is stored locally and stays visible as "pending" (the user is never lied to by saying "sent" if it didn't leave). As soon as the signal returns, it is retried automatically until delivery is confirmed — with per-item retry and without blocking the interface in the meantime.

3. Transport Manager

It automatically selects the best available channel, in this order: 1) Bluetooth LE (CoreBluetooth on iOS, BLE API on Android — both allow the app to advertise itself as a "peripheral", something a browser can never do). 2) Ultrasound as a fallback when there is no Bluetooth nearby: the data is encoded as sounds of 17kHz (bit 0) and 18kHz (bit 1), inaudible, emitted by the speaker and read by the other phone's microphone at a short distance.

4. Bitchat-style Protocol (Store & Forward)

Every packet carries a TTL of 7 hops. If the message is not for you and the TTL is greater than 0, you re-send it to the nodes you have nearby (with a small random delay of 200-400ms to avoid collisions). If the destination is not connected, the packet is kept in a local queue and re-sent as soon as a new node appears. A temporary memory of already-seen messages prevents a packet from bouncing in an infinite loop.

5. What Travels Through the Mesh Network

Shared routes, bond activation, community review requests, and photos (fragmented into ~20KB chunks). Everything encrypted end to end — the mesh network can never read the content, it only transports it.

6. It Does Not Interfere with Normal Use

It works in the background (background service on Android, Background Modes: bluetooth-central + bluetooth-peripheral on iOS). The user keeps using the app normally; they never see the re-sending, except for the discreet indicator at the top.

7. Why It Cannot Live in This Web Version

A browser can only be Bluetooth "central" (connect to an already-existing device), never "peripheral" (advertise itself so others can find it) — it is a security restriction of the Web Bluetooth specification, not of this app. A native app is needed (Swift/CoreBluetooth on iOS, Kotlin/BLE on Android) for this architecture to really work.

8. App Updates Through the Same Channels Without Internet

The idea: that an app update spreads from phone to phone via Bluetooth/mesh network, like postcards, without each person needing internet to receive it. This is real and already exists in other contexts (such as some packages being updated on poor-connection networks) — but on the web it is impossible by design: a browser can never rewrite its own source code via Bluetooth, every code change must come from an HTTPS download from the server. In the native app it would indeed be possible: the first phone that has internet downloads the cryptographically signed update and relays it via BLE to the next one, which verifies it against the signature before installing it — never executing code that Poxtal did not sign.

ACCOUNT SUSPENDED

Verification

You are in observer mode. You can look around, save photos and send postcards, but everything stays waiting until you and your contacts finish these 5 steps. Until then, you can send up to 3 postcards by link.
1. Confirm your emailType the code we sent to your email.
2. Confirm your phoneType the code we send you by SMS.
3. Verify your documentAvailable soon.
4. Facial scanFrom your profile photo.
5. Circle of contactsThree people you know accept your bond.

News

My album

Albums of your contacts

Notifications

Everything that happens in your app — reactions, bonds and stickers. Kept for only 3 days.
Today
User 1 placed the seal "Love it" on your photo Plaza Mayor10:55
User 2 placed the seal "Approved" on your photo Plaza Mayor11:20
User 1 activated a "Together Here" Bond with you — from now on you see their presence without chat12:05
Yesterday
User 1 placed the seal "Great" on your photo Breakfast19:40
User 2 placed an art sticker on the back of one of your photos of today21:10
Two days ago
You sent a postcard to User 1 — it will be marked as delivered when they open it17:40

Bonds

UserDemo Account
Demo
Demo
Demo
Your real contacts
Albums · photos from your bonds by time
Today
Yesterday
Two days ago
Connect
Together Here
By Code
Bond Photo
Special
Synchronous

Photo

4 SEP · 10:10
Photo from the album of —
 forward ·  back — or swipe the photo

Send Postcard

Select what to send and to whom. When sent, it will move to your sent mailbox.
Photo of Today
Collectible
Plaza Mayor
Retreat
Breakfast
User 1
User 2
MyselfKeep It to Remember
1 postcard per contact each day · you can send to several different contacts · max. 5 collectibles per place and day

Card

Collection of this month · changes every 30 days

Send card

Select who to send it to.
User 1
User 2
1 postcard or card per contact each day
New Event Stamp Unlocked!

Who Is It For?

Select the contact who will receive this postcard.
User 1
User 2
MyselfKeep It to Remember
1 postcard per contact each day

Select Photo from Your Album

Select Postcard from Your Collection

Vintage Photo
Local Painting

Select the Shared Photo

It must be one where you both appear.
Vintage Photo
Local Painting
Plaza Mayor
Who Appears with You in the Photo?
User 1
User 2
Or, if it is with your real contact, upload the real photo:

Blank Postcard

Tell me how you feel — the AI arranges the message for you.
0/240

Historic Postcards

Real historic postcards and images from public archives around the world — to discover and collect for fun. They are unrelated to your real seals, event stamps or stamps.