gofri Why two g's? When I was a kid my grandma called me Gofri, and the family picked it up. She said the G hard, almost twice, so I write it twice.
in ongoing use

Manchester City fan-verification dashboard

for
Manchester City, via Veritran
when
2026
Problem
A dashboard over fan-verification data, with no defined scope.
My contribution
Owned the product and technical decisions for a verification dashboard, iterating directly with Veritran's customer-success lead and other stakeholders.
Decision
Give every record one of four outcomes (verified, pending, failed, duplicated) and validate that view in a Snowflake prototype with Veritran stakeholders before building the production dashboard.
Delivered
A production dashboard, built after a Snowflake prototype that Veritran stakeholders validated.
Result
First version in two weeks, final in one month, still in use. My point of contact reported that its country view informed enabling onboarding in two more countries.
Status
in ongoing use · 2026

+2countries in an onboarding decision the dashboard informed

what I foundThe records already existed. What was missing was a view of what happened to them: verified, pending, failed or duplicated.

60records, no view verified 36 60.0% pending 14 23.3% failed 6 10.0% duplicated 4 6.7%
  1. Snowflake prototype · validated by stakeholders
  2. v1 · 2 weeks
  3. final · 1 month
  4. ongoing use
60 records, four outcomessynthetic data pending ≠ abandoned

how it works

Every record ends in one of four outcomes

  1. SYN-0001latest output code is a match→ verified
  2. SYN-0028the same person shows up as a second fan record→ duplicated
  3. SYN-0004steps started, no final output yet→ pending
  4. SYN-0012a step returned an error→ failed
reconstruction, illustrative
  1. one query per fanlatest output code and step flags
  2. Python/Flask aggregationdurations capped at 3 h, zero durations excluded from averages
  3. React/TypeScript dashboardfunnel, breakdowns, record drill-down with export

try it

The dashboard, on synthetic data

A replica of the dashboard

invented records, not client results
  • records60
  • verified3660.0%
  • pending1423.3%
  • failed610.0%
  • duplicated46.7%

Pending does not mean abandoned.

ownership

Who did what, and when

  1. Snowflake prototypevalidated by stakeholders
  2. v12 weeks
  3. final1 month
  4. ongoing use
  • MeWhole implementation, product and technical decisions
  • Veritran's Chief Customer Success OfficerIterated with me on every version
  • A second Veritran stakeholderFed same-day iterations before production
  • A frontend teammateRefined the visuals later
  • The two-country decisionMade by Veritran
  • Face-scanning technologyNot built or fixed by me

What shipped

No defined scope at the start. One outcome per record by the end.

Method and caveats

Totals, charts, table and CSV on this page are a synthetic demo, not client results.

  • Client data and totals are not published