This one changed the shape of the system.
The obvious design for a verification is a flag: is_verified, set to Y when the Ministry says yes. Simple, and every query gets easier.
It is also unable to answer the only question that will ever matter about it.
Three years from now, a certificate issued to that company is challenged. Somebody asks when the commercial registration was checked, and what exactly came back. A flag says yes. It cannot say when, it cannot say what the Ministry actually returned, and it certainly cannot say whether anything has changed since.
So instead there is one table holding every call to every external authority: what was asked, who answered, what they said, and when. Absher, the Ministry of Commerce, the Ministry of Justice — all three, because all three behave identically. The raw response is kept too.
A verification with no timestamp is a rumour.
That table then turned out to solve a problem I had not connected to it. A power of attorney is checked when a delegate registers a company — but it can be revoked the following week, and the delegate would still be filing applications. So it is checked every time that person requests something. Each check is a row. The history is free.