From Internal Tool to API Product
The story of how we turned AgriWise's internal biometric engine into PunchConnect — a commercial API serving thousands of devices.
The origin story
PunchConnect started as an internal tool at AgriWise, a workforce management platform for agricultural companies in Morocco. We needed to connect ZKTeco biometric devices to our cloud application, and nothing on the market worked well enough.
After spending 4 months building and battle-testing our protocol engine in production with 24,000+ employees, we realized this could be a standalone product.
The decision to commercialize
We kept hearing the same pain point from other companies: "How do you connect ZKTeco devices to the cloud?" Developers were struggling with the same UDP protocol issues, the same connectivity problems, the same data loss.
We didn't build a demo — we opened our production system. The same protocol engine that handles AgriWise's 80+ devices now powers PunchConnect's API.
Building the API layer
The internal engine was designed for one customer (us). Turning it into an API product meant: multi-tenancy, API key management, per-device rate limiting, webhook delivery system, documentation, and SDK libraries.
We studied Stripe, Twilio, and GitHub's APIs obsessively. Consistent response formats, clear error messages, and comprehensive docs were non-negotiable.
What's next
PunchConnect is now serving customers across MENA and Africa. Our roadmap includes support for additional biometric protocols beyond ZKTeco, a device provisioning API, and real-time streaming via WebSockets.
We're building the Stripe of biometric device integration — and we're just getting started.