PhoneForge - a small, sharp tool, shipped
Why we built a free phonebook-cleaning app – and what it taught us about shipping production software at Taadom.
If you have used a smartphone in Africa for more than a few years, your contacts list is a mess. Three numbers for the same friend, half of them missing the country code. A name like “Kingsley Garage” with no surname, sat next to “Kingsley K.” and “K. Kingsley.” – almost certainly the same person. WhatsApp contacts, SIM contacts, Google contacts, Outlook contacts. They have all bled into each other across phones, SIM swaps, OS migrations.We built PhoneForge because we got tired of cleaning ours by hand.
What it is
PhoneForge is a free, browser-based phonebook cleaner. You drop in a vCard file exported from any device – Android, iOS, Outlook, Google Contacts, an old Symbian phone you found in a drawer – and it gives you back a tidied version you can re-import anywhere.What it actually does, under the hood:
- Detects which numbers are international and which are local, even when the country code is missing or formatted inconsistently. It uses libphonenumber’s metadata combined with our own region heuristics for places where phonebooks tend to be especially mangled.
- Deduplicates contacts that look like the same person but with slightly different names, formatting, or partial numbers. It is conservative – it would rather leave two records than wrongly merge two real people.
- Classifies names so that “MTN Customer Service”, “Mama (do not call after 9)”, and “John Smith” each get the right treatment. Businesses, family annotations, and people are handled differently because they ought to be.
- Exports clean vCards ready for re-import, with an audit log of every change so you can see exactly what was merged, normalised, or flagged.It is not magic. It is a pipeline of small, well-tested transformations applied in the right order – eight stages in total, from preparation to export – that together produce something noticeably better than what you started with.
Why we built it
PhoneForge is not Taadom Digital’s strategic product. The flagship is Afyamesh – a holistic digital health platform for neighbourhood healthcare across Africa. Afyamesh is a much larger undertaking, and one we are still actively building.So why ship a contact-cleaning tool at all?Because before you ask anyone to trust you with patient records and pharmacy inventory, you need to demonstrate that you can design, build, deploy, and operate a full-stack production web application. PhoneForge is that demonstration. It runs on the same foundations Afyamesh will use:
- A FastAPI backend in Python 3.14
- A React + TypeScript frontend served from a Vite-built bundle
- Hetzner infrastructure orchestrated with Docker Compose, fronted by nginx
- Cloudflare at the edge for DNS, TLS, and protectionEvery architectural decision – how we structure the API, how we manage sessions and rate limits, how we deploy with zero downtime, how we keep secrets out of source control – was made knowing it would carry over to the larger system. PhoneForge is small enough that we could ship it in weeks rather than years, and big enough to exercise every part of the stack we will rely on later.There is also a softer reason: African contact data is genuinely interesting. Numbers cross borders constantly. Names do not follow a single convention. International formatting is inconsistent even within a single country’s telecom regulators. A tool that handles this gracefully has to make assumptions explicit, and that has been a useful design discipline.
What we have learned so far
Three weeks into beta, a few patterns have stood out:The deduplication threshold is everything. Set it too aggressive and people lose contacts they meant to keep separate. Set it too loose and the output looks barely cleaner than the input. We expose the threshold as a slider and document the trade-off rather than pretending there is a single correct answer.Audit trails matter more than we thought. Users want to know what changed. The first version of PhoneForge gave you a clean vCard and called it done. The next version showed you a diff. The current version logs every transformation per-contact so you can reverse any specific change. That last addition is what made early users actually trust the output.Country detection is harder than it looks. Even with libphonenumber, real African phone data is messy enough that pure metadata lookup is not sufficient. We layered in a small set of regional heuristics – for instance, knowing that a 9-digit number starting with a particular prefix in a Cameroon-rooted phonebook is almost certainly local even without the +237. None of this is rocket science; it just requires care.
Status and what is next
PhoneForge is live in beta and free to use. There is no sign-up, no account, no upsell. Drop in a vCard, get one back. Files are processed in your session and then discarded – we do not store your contacts.What is on the roadmap:
- Direct Google Contacts and Outlook integration so you do not need to export and re-import vCards manually
- Better name classification for the long tail of African naming conventions we are still cataloguing
- A retirement plan. PhoneForge as a web app will eventually be replaced by a mobile app, at which point this surface will sunset. The engineering lessons it produced will live on inside Afyamesh.If you have a particularly chaotic phonebook, we would love to break PhoneForge with it. Try it now, and tell us what went well or badly. Every piece of feedback so far has shaped the next iteration.
Mots-clés
Plus dans Announcements