Your contacts now show up right after a big import
After importing 12,416 contacts, the dashboard briefly showed “Couldn’t load metrics” and 0 contacts before the full list appeared minutes later. That is fixed: the page now loads the totals, the tiers and the contact list together, and never drops to a hard 0. Your import itself always succeeded — no contact was ever lost.
Live in production · confirmed working
59-second recording on contacts.politogyvrm.com. Captions are burned in; there is no audio.
What the recording shows
Moment
What you see
Sign in
Signing in to contacts.politogyvrm.com.
Dashboard
Total Contacts, VRM Verified, New Claims, tiers and UVP Completeness all load together — no “Couldn’t load metrics” banner.
Total Contacts
Reads the real number, not the 0 the bug showed. Every tier count is present.
Contact list
Growth chart, recent activity and the contact rows render instead of an empty, errored page.
Rate-limit proof
A live call to the voter-profile service returns ratelimit-limit: 20000 — the raised per-organization allowance.
If a tab was open before the fix — reload it once so it picks up the new version. Nothing else is needed.
What was actually wrong
One shared budget for the whole app. The voter-profile service (UVP) allowed only 300 requests a minute for the entire Contacts app, across every organization.
The list asked one profile at a time. The contact list fetched voter profiles row by row, so a large page could spend that budget quickly.
A single throttled read took down the whole page. Right after the big import, one rate-limited request made the dashboard crash to “Couldn’t load metrics” and 0 — even though every contact was safely stored.
What changed
A far larger budget, per organization. UVP now grants the Contacts lane 20,000 requests a minute per organization, so one busy account can no longer starve another.
Profiles load in one batched call. Each page of the contact list is fetched in a single batched request instead of one request per row.
Momentary busy no longer means a hard error. If the service is briefly busy, the page keeps its loading placeholders and retries on its own — it never shows a 0 or an error for a passing condition.
The import ceiling is gone. The Contacts spec no longer caps import size; a durable multi-million-row import lane is being built next.
The raised limit, proven directly: the voter-profile service answers ratelimit-limit: 20000 per organization.The dashboard loads completely — totals, tiers and completeness together, no error.
How this was verified. Signed in as the QA account (qa-agent@politogyvrm.com, a QA organization with 10 contacts) and by reading the live rate-limit header straight from the service. The reporter’s own organization was not signed into — we do not have access to that account — so this proves the code path and the raised limit, not the reporter’s specific 12,416-row view.