Client Status Review · Thomas Digital
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.
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.
The work was commissioned by two academic co-leads. The money comes from Princeton University — purchase orders and remittance advices, not credit cards.
| Role | Person | |
|---|---|---|
| Originated the project; gave most design feedback | Jessica Y. Ho Assoc. Prof. Sociology & Demography, Penn State | jessica.ho@psu.edu |
| Drove the last six months; arranged hosting payment | Arun S. Hendi Asst. Prof. Sociology & Public Affairs, Princeton | arun.hendi@princeton.edu |
| Third team member | Yana Vierboom, Princeton | yvierboom@princeton.edu |
| Princeton faculty assistant · invoice/PO path | Josephine "Josie" Crutchley | jc9451@princeton.edu |
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.
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.
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.
| Person | Role | Status |
|---|---|---|
| Mackenzie | Account manager (to Oct 2025) | Gone · handed to Victor Nov 2025 |
| Arianna Kasabian | Creative PM, 2025 | Gone · mailbox archived and searchable |
| Cheska Folgo | Day-to-day PM, late 2025 → Aug 2026 | Finishing up |
| Eric | Designer | No evidence of departure |
| Billy | Developer — built the whole thing | Ended 19 Aug 2026 |
| Kendrick | Dev lead | Ended 19 Aug 2026 |
| Ahmed | Hosting & maintenance | Active |
Everyone who touched this day to day is gone or leaving, except you and Ahmed.
Verified by direct probe on 8 September 2026:
| Check | Result |
|---|---|
| Dev site | migrantmortdev.wpenginepowered.com — HTTP 200, all eight pages present |
| WP Engine install | migrantmortdev · account TD1 · environment development · PHP 8.2 · created 1 Aug 2025 |
| Second install | themigrantmdev exists but serves the WP Engine default page — an empty placeholder, not this project |
| Production install | None. All five TD credential sets checked with full pagination |
| Live domain | None. No domain, registrar, DNS or nameserver discussion in any mailbox searched |
| Search-engine blocking | Environment-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 registration | Disabled at WordPress level. Gated downloads are the core feature — either the download plugin handles its own registration, or this blocks launch |
"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.
| Item | Amount | Status |
|---|---|---|
| Website build | $13,400 | Unresolved — sources disagree |
| Stock photography | separate | Paid — receipt confirmed 1 May 2026 |
| Hosting & maintenance, Platinum, 3 yrs prepaid | $4,950 | Paid — PO 0000956382, remittance 15 Jul 2026 |
| Maintenance list rate | $150/mo | 33 billed months × $150 = $4,950. Effective rate across the full 36-month term is $137.50/mo |
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.
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.
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.
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.
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.
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.
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.
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.
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.