Client Status Review · Thomas Digital
A finished website, paid in full, 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. Princeton paid the full $13,400 build price by ACH on 17 September 2025, and $4,950 for three years of hosting on 15 July 2026. Nothing is owed.
The research team has not sent a word since 9 June 2026 — 91 days ago. Their reason for waiting may already be obsolete, and nobody has closed the loop.
The first version reported the $13,400 as unresolved and the silence as 19 days. Both are now settled by primary documents. Princeton's own Payment Advice PDF shows invoice 0000878689 paid in full, $13,400.00, ACH, reference AP0000833758. And 20 August was our last outgoing email — the last message from the client is 9 June.
Yes. Princeton Payment Advice, 17 Sept 2025: invoice 0000878689, voucher S0603535, gross $13,400.00, discount $0, paid $13,400.00 by ACH. PO 0000878689 reads "Web Development and Development for Arun Hendi", total $13,400.00. The signed Statement of Work totals $13,400.00 and caps payment there.
Total collected: $18,815 — $13,400 build, $4,950 hosting, $465 stock photography. I have not walked the QuickBooks ledger line by line, so "nothing outstanding" is bounded by these documents rather than a reconciled account — but the contract price is unambiguously paid.
Three yeses and one gap.
| Date | What they signed off |
|---|---|
| 18 Jul 2025 | Signed the contract. "Princeton University / Arun Hendi Website Services Agreement", Trustees of Princeton University and Thomas Digital |
| 24 Apr 2026 | Approved extra spend. Jessica Ho: "Yes, we approve adding these to the invoice" |
| 28 May 2026 | Approved the site in substance. You asked "is the site approved for launch?"; Arun: "The site looks good… I think we can just move forward" |
| — | Never: a formal written launch approval. The Asana task chasing it is still open |
The contract's §6 is worth knowing but not worth using. It says Princeton must give written notice of final acceptance within 30 days of completion, and that "failure to provide such notice shall be deemed Final Acceptance." The same clause also says they need not accept incomplete delivery — and the Services arguably aren't complete, since the SOW includes data entry of 200 files that hasn't happened. So treat §6 as background comfort that nobody is clawing money back. It is not launch permission, and not an argument to put to Princeton. My reading, not a legal opinion.
Tuesday 9 June 2026. Arun Hendi, to you. Two short emails.
09:04 ET — "Thanks for sending this. I've started the approvals process at Princeton and hopefully they'll get back to us soon. I'll let you know as soon as I hear."
15:17 ET — "We've purchased the image and uploaded it to the shared drive."
Nothing from Arun, Jessica or Yana since. Princeton's finance side kept going — Josie Crutchley wrote on 11–12 June about invoice format, the PO issued 11 June, payment scheduled 16 June, remittance 15 July — so the institution was active into mid-July even though the researchers were not. Between 18 June and 20 August you sent ten follow-ups. None answered.
Their own research dataset — the migrant mortality and life-expectancy files that populate the DATA page, served as .csv, .txt and .xlsx. Not anything from us.
One scope detail that matters: the Statement of Work line-items "Data Entry of 200 files — $800.00", and it was paid. Loading those files is contracted Thomas Digital work. Their job is to finalize and hand over the data; ours is to enter it.
On 28 May Arun asked a direct question: could the site go live for a couple of weeks while they finished the data, and would that hurt SEO? He added: "If so, we're happy to wait until the data is finalized to launch."
The three replies crossed three timezones, so here they are on the client's own clock, taken from the raw email headers:
| Client local time | Who | What |
|---|---|---|
| Tue 26 May 18:19 | Victor | "Is the site approved for launch?" |
| Thu 28 May 10:20 | Arun | "Site looks good… does launching early hurt SEO?" |
| Thu 28 May 16:24 | Victor | "Holding off is always the cleaner option from an SEO standpoint" |
| Fri 29 May 10:26 | Arun | "OK, we'll hold off" |
| Fri 29 May 22:31 | Victor | Developer: no negative SEO effect — batched uploads may even help |
The corrected answer arrived twelve hours after Arun had already decided to wait. He never responded to it, and has said nothing since 9 June.
Two honest limits. Sending is not reading — I cannot prove he absorbed the reversal. And his 9 June note says Princeton approvals were still pending, which is an ordinary reason for a professor to go quiet over a summer. This is a plausible stale hold, not a proven one. One email tests it.
The bottom line: they paid every dollar — $18,815, in full, on time. The site has been finished and parked for 103 days. The research team last spoke on 9 June, and the reason they gave for waiting was answered twelve hours after they gave it.
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 | Paid in full — ACH 17 Sep 2025, Payment Advice AP0000833758, invoice 0000878689 |
| 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 |
The first version of this page reported the build payment as unresolved, because Asana, the sheet and the remittance trail disagreed. Pulling Princeton's actual Payment Advice PDF settles it: invoice 0000878689, voucher S0603535, gross $13,400.00, discount $0.00, paid $13,400.00 by ACH on 17 September 2025.
That is the entire Statement of Work total and the contract's stated cap ("Total payment shall not exceed $13,400.00"). The $0/$13,400 in the Active Projects sheet is simply a wrong cell, and it is understating collections and overstating remaining contract value on the roster.
One honest bound: I have not walked the QuickBooks ledger for this customer line by line, so "nothing outstanding" rests on these documents rather than a reconciled account.
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.
Fix the sheet — $13,400 is collected, not $0
Princeton paid it by ACH on 17 September 2025. The wrong cell is understating your collections and inflating remaining contract value across the roster. Two minutes.
Rotate the Asana credentials now
Four plaintext passwords in a workspace-public task that four departing people could read. Rotate and remove the values — not a launch-day task. One caution: one of them is Jessica's own site login. Rotate it and send her the new one in the same motion, or a client who has been quiet for three months discovers she is locked out of her own website.
Send one email that closes the SEO loopNeeds your go-ahead
Ten identical "is the data ready?" emails have failed. Surface the 29 May developer answer again — it landed twelve hours after Arun had already decided to wait, and may never have been absorbed — and put their own 28 May idea back on the table: site up now, data loaded in batches as it's finalized. Ask what they need from us rather than what they owe us; nothing in the record suggests fault on their side and the email should not imply any. Adding Jessica and Yana widens the net but can read as escalation — your call, not a default.
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.