Client Status Review · Thomas Digital

The Migrant Mortality Database

A finished website, fully paid hosting, and no launch. Everything that happened, everything outstanding, and what to do next.

The site is built, QA'd through two full rounds, and sitting on a development URL. Hosting was prepaid at $4,950 in July. The client went quiet on 20 August and has not replied since.

Two things need you this week, and neither requires the client: reconcile the $13,400 build payment in QuickBooks, and rotate the passwords sitting in plaintext in Asana.

DONE — JUL 2025 TO MAY 2026 Design Build Int. QA QA 1 QA 2 QA 2.2 Videos PARKED — 29 May 2026 103 days · 10 unanswered emails BLOCKING LAUNCH — THREE FROM THE CLIENT, PLUS ONE ON US Finalized data files Client's stated reason for the hold Written approval Task deferred 17 times · no owner A domain + DNS Never supplied, never discussed LAUNCH no prod install exists yet Hosting $4,950 paid Build $13,400 unresolved Site live: no
Seven stages finished in ten months. Then one sentence from the client on 29 May halted the launch. Work continued after it — hosting was invoiced, approved by Princeton and paid — but the site itself has not moved in the 103 days since.

The bottom line: a finished, fully-hosted site has been sitting on a dev URL for 103 days, TD has collected $4,950 for hosting it, and whether the $13,400 build was ever paid is a question three internal sources answer three different ways.

Project state
Parked
Since 29 May 2026
Client silence
19 days
10 unanswered follow-ups
Hosting
$4,950
Paid · 3 yrs Platinum
Build payment
Unresolved
$13,400 · sources disagree
Production install
None
Dev environment only
Live domain
None
Never supplied

01Who the client is

The work was commissioned by two academic co-leads. The money comes from Princeton University — purchase orders and remittance advices, not credit cards.

RolePersonEmail
Originated the project; gave most design feedbackJessica Y. Ho
Assoc. Prof. Sociology & Demography, Penn State
jessica.ho@psu.edu
Drove the last six months; arranged hosting paymentArun S. Hendi
Asst. Prof. Sociology & Public Affairs, Princeton
arun.hendi@princeton.edu
Third team memberYana Vierboom, Princetonyvierboom@princeton.edu
Princeton faculty assistant · invoice/PO pathJosephine "Josie" Crutchleyjc9451@princeton.edu
Worth pinning down

Nothing in the record establishes who holds final sign-off, or who decides when the research data is fit to publish. Jessica and Arun both give feedback; Arun handles money. Before a launch date is offered, get one named approver.

02What was built

A public research site hosting a downloadable database of migrant mortality and life-expectancy data across roughly 15 countries, expected to grow. Eight pages are live on dev: home, about, people, data, publications, contact, disclaimer, and a file-search page.

The core mechanic is gated downloads — around 200 files in xlsx, txt and csv, visible to anyone but downloadable only by registered users, with analytics on who downloads what.

Two requirements were never marked complete and were never explicitly dropped: an SVG world map with backend country toggles, and a question open since July 2025 about sending contact-form mail from a different address.

03Who worked on it — including Mackenzie

Mackenzie did work on this, but stopped nearly a year ago. She was account manager through roughly September–October 2025. Jessica Ho's 3 November 2025 email opens "Hi Mackenzie," and Arianna's daily report from 18 September 2025 references a Mackenzie onboarding session.

On 3 November 2025 you took the project over personally, in writing to the client: "Good news. I'll be handling your project personally moving forward. We've had a change of plans with Mackenzie…" Nothing from her appears after that date in any mailbox I can read.

PersonRoleStatus
MackenzieAccount manager (to Oct 2025)Gone · handed to Victor Nov 2025
Arianna KasabianCreative PM, 2025Gone · mailbox archived and searchable
Cheska FolgoDay-to-day PM, late 2025 → Aug 2026Finishing up
EricDesignerNo evidence of departure
BillyDeveloper — built the whole thingEnded 19 Aug 2026
KendrickDev leadEnded 19 Aug 2026
AhmedHosting & maintenanceActive

Everyone who touched this day to day is gone or leaving, except you and Ahmed.

04What happened, in order

11 Jun 2025
Inbound enquiry from Jessica Ho
18 Jul 2025
Asana project created; onboarding and sitemap done within ten days
18 Aug 2025
Build invoice submitted to Princeton under PO 0000878689
17 Sep 2025
Princeton remittance advice received
3 Nov 2025
Victor takes the project over from Mackenzie
23 Dec 2025
Design complete
5 Feb 2026
Development complete — 51 subtasks
2 Mar 2026
Internal QA done; dev site handed to the client
13 Mar 2026
Client returns QA Round 1 feedback
1 Apr 2026
QA Round 2 feedback returned. Asana marks "Final Payment Received" complete
1 May 2026
Stock photography invoice paid by Princeton
6 May 2026
Tutorial videos delivered
28 May 2026
Client: "The site looks good… still running into the filter problem on iOS, but that's fine — I think we can just move on"
29 May 2026
Arun: "We'll just hold off on launching until the data is finalized"
9 Jun 2026
3-year prepaid Platinum hosting invoiced — $4,950 (36 months billed as 33)
11 Jun 2026
Princeton issues PO 0000956382; revised invoice sent without the card fee
15 Jul 2026
Princeton remittance — hosting paid in full
18 Jun → 20 Aug
Ten follow-up emails asking for "the data and approvals". Not one reply.
19 Aug 2026
Kendrick, Billy, Decay and Darwin end; Cheska finishing
20 Aug 2026
Last email sent. Nothing back in the 19 days since.

05Where it stands today

Verified by direct probe on 8 September 2026:

CheckResult
Dev sitemigrantmortdev.wpenginepowered.comHTTP 200, all eight pages present
WP Engine installmigrantmortdev · account TD1 · environment development · PHP 8.2 · created 1 Aug 2025
Second installthemigrantmdev exists but serves the WP Engine default page — an empty placeholder, not this project
Production installNone. All five TD credential sets checked with full pagination
Live domainNone. No domain, registrar, DNS or nameserver discussion in any mailbox searched
Search-engine blockingEnvironment-level robots.txt blocks crawlers; the WordPress setting already says index/follow. The Asana de-indexing step is effectively already handled at the WP layer
User registrationDisabled at WordPress level. Gated downloads are the core feature — either the download plugin handles its own registration, or this blocks launch
Honest limit

"No domain was ever supplied" rests on three mailboxes and four guessed domains that don't resolve. That is strong evidence, not proof — a domain could sit in Drive, in Cheska's deleted mailbox, or in a phone call I can't see.

06Money

ItemAmountStatus
Website build$13,400Unresolved — sources disagree
Stock photographyseparatePaid — receipt confirmed 1 May 2026
Hosting & maintenance, Platinum, 3 yrs prepaid$4,950Paid — PO 0000956382, remittance 15 Jul 2026
Maintenance list rate$150/mo33 billed months × $150 = $4,950. Effective rate across the full 36-month term is $137.50/mo
WAS THE $13,400 BUILD PAID? THREE SOURCES, THREE ANSWERS Asana checkbox "Final Payment Received" ticked 1 Apr 2026 Says: PAID Princeton remittance PO 878689 · Sept 2025 amount not visible to me Says: DEPOSIT PAID Active Projects sheet connector report read 8 Sept 2026 Says: $0 OF $13,400 QuickBooks settles it not reachable from this session
A ticked box proves someone ticked a box. A remittance proves a payment of unknown size. Only the ledger proves a balance.
Highest-value unknown in this review

Three sources disagree about the $13,400 build, and they disagree in kind:

An Asana checkbox marked "Final Payment Received" on 1 April 2026 — which proves someone ticked a box, not that money landed. A Princeton remittance from September 2025 — which proves a payment of unknown amount against the deposit invoice. And a sheet cell reading $0 collected of $13,400.

I cannot see QuickBooks from here. Open QBO, find the build invoices, reconcile. Either you are owed a meaningful balance on a finished site, or the sheet is wrong and your remaining-contract-value number is overstated.

On the hosting clock. The invoice describes the term as 2026–2029 and was paid on 15 July 2026. No contract text stating a service start date appears in what I read — so "the prepaid term is burning while the site sits on dev" is a reasonable inference, not an established fact. It still matters: if the term did start on payment, the client is two months into a plan for a site that isn't live. That is a conversation to have first, not second.

07Everything outstanding

Waiting on the client

Open on Thomas Digital

08Risks

Fix this regardless of what the client does

The Asana "Project Notes" task holds, in plaintext in a workspace-public project: the dev-site WP admin password, the client's own WP login password, a subscriber password, and the SFTP password. Several people who could read that task left the company three weeks ago.

Rotate now, not at launch, and strip the values out of Asana.

Support continuity. If this goes live and the iOS filter or a plugin breaks, the developer who built it is no longer here. Any fix starts cold.

Prepaid money against an unlaunched site. $4,950 collected, nothing live. Whatever the contract says about term start, that is the fact pattern a client remembers.

Silence. Nineteen days, after ten unanswered nudges. Hypothesis, not finding: this reads more like academic-calendar drift — data cleaning, semester start, a co-PI juggling two institutions — than dissatisfaction, since their last substantive words were "the site looks good." I have no evidence of the actual cause. What is certain is that the current weekly-identical-email approach has produced ten consecutive non-responses.

09What to do next

1

Reconcile the $13,400 in QuickBooks today

Highest dollar value on the board, entirely within your control, needs no client contact. Find the build invoices and match them to receipts.

2

Rotate the Asana credentials now

Four plaintext passwords in a workspace-public task, read by people who no longer work here. Rotate and remove the values. Not a launch-day task.

3

Change what you ask, not how often you askNeeds your go-ahead

Ten identical "is the data ready?" emails have failed. The next message should put a decision in front of them instead of requesting a status — the site is complete and hosting is active, so ask for either a target launch month or a clear hold, and say either is fine. Offer fifteen minutes on a call. Bring Jessica and Yana back onto the thread; Jessica was the original contact and has been off it since May. Do not propose launching with unfinished research data — publishing an incomplete academic dataset is their call and their reputational risk, not a lever for us to pull.

4

Give "follow up site approval" an owner in Asana

Seventeen deferrals by a departing PM is what an unowned task looks like. Either it is yours or it gets an automated cadence.

5

Answer two site questions before offering any launch date

Is registration actually working for gated downloads, and is the SVG map in scope or out.

6

Consider staging the production install ahead of time

It turns launch into a short task rather than a scramble against a team that no longer exists. Sequence this after the client conversation — building infrastructure for a launch that may be months away is optional. Items 1 and 2 are not.

10What I could not check

Google Drive, Sheets and Docs are unreadable from this system. The Workspace service account holds domain-wide delegation for Gmail read-only only; Drive, Sheets and Docs all return unauthorized_client. So the QA sheet, the QA feedback doc, the stock-photo sheet and the two Drive project folders were never opened — everything here about them comes from Asana task notes and email bodies that quote them. The likely fix is adding those read-only scopes to the existing client ID in Google Admin → Security → API controls → Domain-wide delegation, though I have not confirmed that scope authorization is the only barrier.

QuickBooks is not reachable from this session, which is why the $13,400 is reported as an unresolved disagreement rather than settled. Figma files were not opened.

Search boundaries. Gmail covered victor@, contact@ and support@ only. The cheska@, arianna@ and mackenzie accounts no longer exist on the domain — Arianna's is archived in InsightsLM and still searchable if it matters. Phone calls, Zoom, Slack and text messages are outside what I can see. "No client reply since 20 August" and "no domain was ever discussed" are both bounded by exactly that.