Private · Ahmad Basheer · Not for ANC distribution
Two calls with Charlie Dinh, decoded against every system already running in the estate. What he is actually proposing, what we already own, and the one decision that determines whether this becomes recurring licence revenue or just more unpaid work.
The verdict
Both — and the split is the entire strategy.
Build on top for the pipeline: intake, ticket state, proof, approval, FTP delivery. All of it is built, live and verified. Rebuilding it would be arson, and Charlie personally specified the proof flow — replacing it fights him, extending it flatters him.
Build new — separately owned — for the render engine. One metered service you host in your own namespace, that ANC's dashboard calls over an API. That is the difference between a licence and a favour.
And the first thing to build is not AI at all. It is the missing intake column.
This is not a feature request. It is a vendor replacement with a budget already attached, and he is telling you how to price it so it recurs.
"If you get that, you charge them by the credit… I got to help you figure out a way to charge them, and I'm gonna get you money. It's guaranteed year after year." Charlie Dinh — call 1
| What he said | What it means commercially |
|---|---|
| "charge them by the credit" | Usage-metered licence. Not hours, not a project fee. A render is a credit. |
| "guaranteed year after year" | Recurring. The outsourced vendor's line item becomes yours. |
| "I got to help you figure out a way to charge them" | He carries it internally. You don't sell it — he does. |
| "contract is six months… mid-to-end October, November latest" | Hard deadline, with two months of parallel testing before busy season. |
| "most of jobs they don't make money from" | The money is not new spend. It is redirected spend. |
ANC loses money on graphics structurally. Graphics are thrown in free to close board sales and never costed into installation. Some clients are broken out at roughly $10/hour. Pacers, Red Sox and Xfinity Mobile hold unlimited-hours contracts Charlie says "just destroy us" — Pacers alone logged 2,152 hours in a year. The outsourced vendor absorbed ANC's laid-off design team and now bills the same jobs at double the hours.
So there is an existing, painful, recurring cost line and Charlie wants it pointed at you. The budget exists today.
This sits outside your $90K agreement, which explicitly excludes "standalone new products or new systems" and "hosting, licenses, vendor costs, paid services." That exclusion is not an obstacle here — it is the permission. It is the clause that makes this yours to own and licence rather than more work you already agreed to do for free.
Note also that he offered to keep paying $500/month to year-end while both systems run in tandem, and you turned it down in favour of "I will charge you what I need to be charged — focus on the design stuff." That was the right instinct. Do not let the small retainer become the price anchor for the licence.
"AI designer" is the wrong name for it. The second call contains the real product definition, and Charlie handed it over without realising.
He pulled up what he called a good ticket — the one with enough detail to work from:
"EVS rollout Bears and Titans. Assets are located here. All animation is final and locked and provided After Effects template. Your role is versioning only — swapping logos and updating text into the designated area, then rendering export list below. Do not adjust animation timing." A real design ticket, read aloud on call 2
That is not creative work. That is versioning: a locked template, an asset swap, a board-size matrix, N rendered exports. It is deterministic, it is the highest-volume job type, it is the best-specified, and it needs no generative model at all — it needs a render farm and a job runner.
The generative slice — "create courtside," "similar to the recent one," clients who don't know what they want — is the smallest, worst-specified, most revision-heavy part of the work. It is exactly the part that should ship last, not first.
Three layers, in this order: intake fidelity → versioning & render → proof, approve, deliver. Generative design is a fourth layer bolted on later, and the engine for it is already written.
Charlie spent most of call 2 convinced someone is deleting the briefs. He was ready to take that to the client-services team as an accusation. He is wrong, and it matters that he does not.
Two separate things are happening, and both are already measured:
One. The thinnest 2026 tickets are literally the string Wrike: https://www.wrike.com/open.htm?id=… — a backlink and nothing else. The Wrike sync carried the pointer, not the body. Every example he opened is one of those. Nothing was deleted; the detail is still in Wrike, and that cohort self-heals the moment Alexis's team stops working there.
Two — and this is the new finding. He said it himself: "the descriptions I've seen on emails are not on this brief." The account manager reads the client email and types a summary into the ticket. The detail stays in the email. And the schema proves there is nowhere for it to go:
design_requests, 30 columns
There is a notes field, a boards_requested field and a sizes_requested field. There is no source-email field, no asset/attachment field, and no reference-link field. The full brief and the supplied assets have no column to land in. That is not people being sloppy — it is a data model that never had a place for the thing.
Your own answer on the call was the right one: if the request arrived by email, the full email already exists in the CRM against that account. The bridge is short, and both ends already exist.
Do not let the deletion theory reach Alexis's team. It is false, it is an accusation, and Charlie is already in friction with her.
This is the part that decides the answer. The hard half is already built — and it is built in the wrong place.
| Capability | State | Where |
|---|---|---|
| Signage planner — classifies request type, builds board-by-board plans, safe zones, creative brief, final image prompt. Fully deterministic, explicitly designed to prevent generic AI output. The crown jewel. | Built | anc-services · ANC's repo |
| AI proof generation endpoint | Built | anc-services |
| Per-call AI cost ledger — provider, model, tokens, image bytes, estimated cost | Schema only | marketing_studio_ai_usage |
| Design / CG / print ticket system | Built | anc-services |
| Proof share + client swipe approve / reject | Live | Charlie specified this himself |
| FTP proof browser — read-only SFTP into the 55TB datacenter, ranged streaming for 300MB files, ticket-linked shares | Live | production-verified |
| Brief gating at intake | Live | shipped 19 Aug |
| Status + assignment email notifications, with watchdog | Live | shipped 19 Aug |
| Source email + assets captured on a ticket | None | no column exists |
| Any motion / video render path — After Effects, ffmpeg, Cinema 4D, anything | None | zero references estate-wide |
| Credits, balances, entitlements, licence keys, tenant boundary | None | — |
In August 2026, 0 of 38 design tickets were created in the dashboard — all 38 were Wrike mirrors. Proof shares: 55 all year, 18 answered. The AI proof route has been live for months and its columns are not even in the production table. A better generator behind a surface nobody opens produces zero credits and zero revenue.
The proofs are 15–30 second MP4s on a 10,368px fascia — ~19MB proof, ~273MB final, occasionally hundreds of GB. Built in Cinema 4D and After Effects. Every AI asset in the estate generates stills, and this box has no hardware GPU. Heavy render cannot live here.
55TB, under 10% free, busy season starting, no backup at all because the CEO won't pay for one — and the CEO wants the whole datacenter gone at ~$250k/year. Charlie floated using the FTP as the working store for the engine, then immediately worried the datacenter's own uplink couldn't serve it. The AWS lane is not a side quest; it is a dependency.
Today the signage planner — the single most licensable asset in the estate — sits in a repo ANC owns, on a project Charlie admins. If the engine ships there, there is nothing to licence. It is just more work delivered under the $90K.
Against his October deadline. Each step earns the next.
Source email body, supplied assets, reference links — as first-class fields on the ticket, fed from the CRM's existing email record. Cheapest item on the list, kills the revision rounds that make graphics unprofitable, and it is the thing Charlie is actually upset about. Build on top, in anc-services.
Notifications shipped; the remaining cutover items are Alexis's. Until work originates in the dashboard, nothing downstream can be metered. Build on top.
Your namespace, never project abc. Port your own signage planner into it — do not hand the improvements back. Extend the existing usage-ledger schema into a real balance and entitlement meter on your side. ANC's dashboard gets a button; your service gets the credit. Build new.
Locked template + asset swap + board-size matrix → rendered exports. Highest volume, best specified, most defensible. This is the product.
Needs GPU and storage that do not exist yet. Sequence it behind the AWS move, and price the AWS move separately — it is excluded from the $90K too.
The smallest, least specified, most revision-heavy slice — and the planner for it is already written. It is the demo, not the business.
Charlie offered to help price it. Take him up on it, and get three things named while he is still enthusiastic:
That conversation is worth more than any week of building, and it is the piece that makes it recur.