PIGEON
You type one SMS. Funds move on-chain.
Created on 28th February 2026
•
PIGEON
You type one SMS. Funds move on-chain.
The problem PIGEON solves
PIGEON
Crypto for the 2.7 Billion Still Offline
Imagine this.
I hand a judge a basic keypad phone. No internet. No apps. No browser.
I say:
“Send 5 ALGO to your mother.”
They type one SMS.
The funds move on-chain.
That is PIGEON.
The Reality
2.7 billion people still use basic phones.
Not because they prefer to.
Because that is what they have.
Today, they are locked out of:
- Crypto wallets that require apps or browsers
- DeFi protocols
- Affordable cross-border remittances
- True self-custodial digital ownership
Even smartphone users struggle. Seed phrases. Gas fees. Irreversible mistakes. Complex interfaces.
Crypto promised financial freedom.
But it built itself for internet users.
What PIGEON Does
PIGEON turns any SMS-capable phone into a fully functional crypto wallet.
No internet.
No downloads.
No learning curve.
Just text.
Send this:
create SOL wallet
→ Wallet created instantly.
send 5 ALGO to +2348012345678
→ Funds transferred on-chain.
balance
→ Current balance returned via SMS.
my address
→ Public address shared for receiving funds.
get my private key
→ Encrypted export, password-protected.
If someone can send a text message, they can use crypto.
Who This Is For
- A farmer in rural Nigeria with cellular coverage but no internet
- A migrant worker sending money home without paying 10% in fees
- A small shop owner accepting crypto using just a phone number
- A first-time user intimidated by wallet software
- Communities during disasters where internet fails but SMS still works
This is not a feature.
It is access.
Security by Design
Traditional wallets:
- Seed phrases written on paper and easily lost
- One wrong address means permanent loss
- Complex UX
- Internet dependency
PIGEON:
- Private keys AES-encrypted with a user password
- Encrypted data stored on-chain via smart contracts
- Phone numbers instead of unreadable addresses
- Two-step confirmation for sensitive actions
- Fully non-custodial — the system never controls user funds
The admin wallet only pays transaction fees.
User assets remain under user control.
Multi-Chain from Day One
Supports:
- Algorand
- Solana
Users simply mention the chain.
The system routes the transaction correctly.
No network switching.
No technical friction.
Why It Matters
Most crypto products optimize for advanced users.
PIGEON optimizes for everyone else.
The 2.7 billion who were never considered in wallet design.
The offline majority.
Crypto does not need more complexity.
It needs reach.
One Line
If you can send an SMS, you can own crypto.
That is PIGEON.
Challenges we ran into
Challenges I Ran Into Building PIGEON
1. SIM800L Serial Buffer Fragmentation
The biggest headache was parsing incoming SMS from the SIM800L. The
+CMT:
unsolicited result code arrives in chunks over serial — the header line and the message body don't always arrive in the sameloop()
iteration. Initially, I was trying to parse immediately on seeing+CMT:
, which meant I'd often get the sender number but lose the message body entirely.The fix: I implemented a time-based buffering strategy — accumulate serial data into
serialBuffer
and only attempt parsing after 500ms of silence (SMS_PARSE_DELAY
). This gives the SIM800L enough time to flush the entire URC before we try to process it.2. HTTPS from an ESP32 to the Backend
The ESP32's
WiFiClientSecure
requires either a root CA certificate or explicitly opting out of verification. During development with ngrok URLs that changed constantly, pinning a cert wasn't practical. I burned time on mysterious connection timeouts before realizing the TLS handshake was failing silently.The fix:
secureClient.setInsecure()
for dev, with aTODO
to usesetCACert()
for production. Not ideal, but it unblocked rapid iteration.3. Long AI Replies vs. SMS Character Limits
SMS has a hard 160-character limit (70 for Unicode). The AI-generated replies from the backend frequently exceeded this, and the SIM800L would just silently truncate or fail to send them.
The fix: I added chunking logic that splits replies into numbered parts —
(1/3)
,(2/3)
,(3/3)
— with a 2-second delay between sends to avoid overwhelming the modem. I cap each chunk at 155 characters to leave room for the continuation markers.4. WiFi and GSM Competing for Attention
The ESP32 needs WiFi for backend HTTP calls and needs to continuously monitor
Serial2
for incoming SMS from the SIM800L. If a backend HTTP request takes too long (AI processing can be slow), incoming SMS data piles up in the serial buffer and can overflow or get corrupted.The fix: Set a generous
http.setTimeout(30000)
(30s) to account for AI processing time, but this is still a blocking call. A future improvement would be to use FreeRTOS tasks to handle HTTP and serial monitoring on separate cores — the ESP32 has two, after all.5. Modem Initialization Race Condition
The SIM800L needs time to boot after power-on. I was sending AT commands too early, getting no response, and assuming the module was dead. The
modem.restart()
call would sometimes hang indefinitely on first boot.The fix: Added a
delay(3000)
after initializingSerialAT
and another aftermodem.restart()
to give the SIM800L time to stabilize before sending configuration commands (AT+CMGF=1
,AT+CNMI=2,2,0,0,0
).Tracks Applied (3)
Algorand Blockchain Track
Algorand
Gemini API
Major League Hacking
Solana
Major League Hacking
Cheer Project
Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.


