Per-Procedure Profitability · Technical Document + SOW · 561 Media
561 MediaTechnical Document + SOW
561 MediaTechnical Document + Statement of Work

Profit
Per
Procedure

What every appointment actually makes or loses

Starting with the 33% of overhead your current model counts twice, which is why every hygiene appointment in your spreadsheet comes back red. Inside: the corrected arithmetic, the architecture, the data model, six schematics, the integration plan, and what it costs to build.

Prepared forDr. Hector Cabreraand Derek at Grassroots Technologies

August 2026/Version 1.0/Confidential

01

What we found in your model

We went through the workbook sheet by sheet and recomputed every appointment in it. Three things are worth stating before any architecture, because two of them change what gets built.

The hard part is already done

23Codes

Costing supplies down to the individual gauze square, per procedure, is the work almost nobody is willing to do. You and your assistants already did it, across 23 CDT codes with supply and lab cost separated.

What it means for the build: that data seeds the procedure library directly. It does not need redoing, and it is a genuine competitive asset. A competitor’s generic percentage assumption will not match a dentist who costed a crown to two cents.

One arithmetic problem, and it is load bearing

33%Over

The model divides all practice overhead by doctor hours, then charges that rate against every appointment including hygiene. Hygiene runs in a second chair at the same time the doctor produces, so the same rent and front desk payroll gets charged twice on any day both chairs run.

The effect: the sample day is charged $4,045 of overhead against a real daily overhead of $3,034. That is why every hygiene appointment in the sheet reads red. Section 02 shows the correction and what it changes.

The piece that makes it software is missing

0Rows

Expected revenue is typed in by hand on every row. There is no table anywhere in the workbook mapping an insurance plan and a CDT code to an allowed amount. That table is the entire product.

Where it comes from: you said it already lives in the practice management software, because that is where treatment plans pull from. You are right, and on some systems it is directly readable through the API. That removes what looked like the hardest problem in the project.

02

The overhead correction

Allocate on chair hours, not doctor hours

True daily fixed overhead$3,033.95Your model: doctor-hour basis$379.24 per hour, charged to every provider’s minutes$4,045.26 allocated to 640 scheduled minutes+$1,011.32counted twiceCorrected: chair-hour basis$189.62 per chair hour, across 206.4 chair hours a month$2,022.63 on booked chair time$1,011.32idle chair320 of 960 available chair minutes went unbooked. The correction does not delete that cost, it moves it out of the appointments that did happen.

Figure 1 · Overhead allocation, sample day of 11 appointments

Fixed overhead buys capacity: chairs, staffed and available. The right denominator is therefore the chair hours the practice makes available, and each appointment absorbs overhead in proportion to the chair time it occupies, whoever is sitting in it.

The check: revenue of $6,654.00 less direct costs of $2,107.26 less true daily overhead of $3,033.95 gives $1,512.79 for the day. Your sheet reports $501.48. The $1,011.32 difference is exactly the double count, arrived at from a completely different direction.

What it changes: two of six hygiene appointments flip from red to green. The other four stay red, and that is the finding that matters most.

AppointmentSheetCorrected
SRP 4+, Delta, 70 min-$183+$39
Prophy + fluoride, FFS, 50 min-$109+$49
Prophy + exam, FFS, 50 min-$204-$46
Perio exam, Delta, 50 min-$197-$39
Comp exam + FMX, 90 min-$400-$116
Implant D6010, Delta, 120 min-$762-$383
Correcting the maths does not rescue hygiene, and you should hear that from us first

A hygiene chair costs $243.62 an hour to run once overhead and the hygienist’s time are counted. Industry hygiene production runs $145 to $175 an hour. Hygiene is structurally underwater on a fully loaded basis in most practices, and that is what hygiene economics are, not an error in the model.

So the software reports two numbers on every appointment. What it contributes, meaning revenue minus the costs that genuinely disappear if the appointment does not happen, which is the number for deciding whether to keep a plan or do a procedure. And what it costs fully loaded, which is the number for deciding whether the practice, configured this way, works. Any tool showing only the second one tells you to shut down hygiene. You already know that would be wrong, because hygiene is where diagnosis, treatment acceptance and retention come from.

The verdict unit follows from this. Red, yellow and green are computed on margin per scheduled chair hour, with separate thresholds for a doctor chair and a hygiene chair, calibrated against the practice’s own required rate rather than a fixed dollar figure. Same day: an SRP at +$39 over 70 minutes is $33 an hour. A crown at +$857 over 70 minutes is $735 an hour. Both are green in dollars. Only one is worth the chair.

03

What gets built

Which plans and which procedures are worth your chair

On the call you asked three questions, and all three are really the same question. Is this insurance worth taking. Is this procedure worth doing. Should I still be doing root canals for a hundred dollars. None of them is answered by a list of yesterday’s appointments. They are answered by one grid.

Procedurestd. minFee for serviceDeltaAetnaCignaMetLifeCrown + buildupD2740 + D295070+$735/hrno fee scheduleno fee scheduleno fee scheduleno fee scheduleSurgical ext + graftD7210 + D795340no fee scheduleno fee schedule+$600/hrno fee scheduleno fee schedule2 surface compositeD239210no fee schedule+$241/hrno fee scheduleno fee scheduleno fee scheduleSRP, 4+ teethD434170no fee schedule+$33/hrno fee scheduleno fee scheduleno fee scheduleProphy + examD1110 + D012050-$56/hrno fee scheduleno fee scheduleno fee scheduleno fee scheduleImplant placementD6010120no fee schedule-$192/hrno fee scheduleno fee scheduleno fee schedule

Figure 2 · Margin per chair hour, procedure against plan. Every populated cell is computed from your own sample day. The blanks are the point.

Worth the chairMarginalLosing moneyNot yet known

Six cells out of thirty. That is everything your current model can tell you, and it is why “should I drop Delta” is currently a feeling rather than a number. Load the fee schedules and the grid fills in. Same crown, same seventy minutes, same cost of goods, five different answers.

It needs no appointment data to work. Revenue comes from the fee schedule, cost comes from the procedure library and your overhead rate. The grid can be produced the day your fee schedules are uploaded, before anything is connected to your practice management software.

Which also lets you price a plan you have not signed. You said fee schedules are regional and usually obtainable. Feed in a carrier you are considering and you can see what joining them would actually yield, before you commit. Nobody sells that today.

The root canal decision, as maths

You told us you stopped doing root canals because it takes forever and pays a hundred dollars. That was the right call, made the hard way, one procedure at a time, over years.

This is that same decision as a single cell in a grid, available for every procedure and every plan you are contracted with, before you do the work rather than after.

Two views over one engine

 The grid (primary)The appointment (drill down)
AnswersIs this plan and this procedure worth doing at allWhat did this specific appointment actually yield
Built fromFee schedules and standard timesReal appointments, real durations
Needs an integrationNoYes, or an upload
AvailableDay oneOnce data flows
DrivesDrop the plan, stop the procedure, repriceCoach the provider, fix the schedule

The gap between the two is where the real insight sits. The grid says a crown at seventy minutes yields $735 an hour. The appointment data says your newer associate is taking two and a half hours, so it actually yielded far less. Neither number is wrong. The difference is a coaching conversation, and it only exists because both views run off the same engine.

One honest caveat. The grid tells you the answer per procedure. It does not tell you how much that answer matters until we know your volumes. A plan losing twenty dollars across four hundred procedures a year is a far bigger problem than one losing two hundred across three. The grid is directional from day one and becomes decisive once a few months of real appointments have flowed through it.

What ships first, and what waits

You defined the minimum version yourself, and we are holding that line: “what is the minimum that just tells me was this appointment profitable, and then it gets pushed to your email or something.” Phase 1 delivers the grid plus that email. Read only, nothing written back into your systems, no scheduler overlay.

Why the overlay waits. It is what you actually want and it is what makes the product stick. It is also where nearly all the risk and cost live, and it depends on a vendor decision nobody has made yet. If the numbers are wrong, an overlay makes them wrong faster and in front of more people.

Where this sits against what already exists. Dental Intelligence and Practice by Numbers read the same practice management systems and report the same kinds of metrics, production per hour and adjustment percentages among hundreds of others. Competing with them on reporting loses. What none of them does is put a true loaded cost against a specific plan and a specific procedure. They tell you how the practice did last month. This tells you which contracts and which procedures are worth keeping.

04

System architecture

SourcesCareStackcapability unconfirmedOpen Dentaldocumented, free tierCSV uploadworks on any systemQuickBooksoptional, overhead onlyAdapterlayercapabilities()fetch + normalizerate limitingretry + dead letterOne contract, so athird system isconfiguration, nota rewrite.Canonicalstoreone shape, whateverthe source wasCostingenginedeterministic,versioned, testableOutputsMorning emailPhase 1DashboardPhase 2Scheduler overlayPhase 3, spike firstThe engine never sees a vendor-specific shape. That boundary is what keeps a CareStack answer, good or bad, from changing anything downstream of the adapter.Nothing writes back. Data moves left to right only, by design and at your request.

Figure 3 · System architecture

Our systemExternalConfirmedUnconfirmedFallback path
05

Data model

Postgres, multi tenant, with tenant isolation enforced by the database rather than by remembering to filter. Twelve core tables. The one in blue is the spine.

tenantidname, statuslocationid, tenant_idzip, timezonecapacity_profilelocation_iddoctor_operatorieshygiene_operatorieshours, days, effective_fromoverhead_poollocation_id, nameallocation_basissource, effective_fromplanid, carrier_idnetwork, external_idfee_scheduleid, plan_id, region_codesource, effective_from/tofee_schedule_itemfee_schedule_id, cdt_codeallowed_amountPK (schedule, code)procedure_profiletenant_id, cdt_codestandard_minutes_*supply_cost, lab_costcosting_methodprovider + provider_comptype, external_idmodel: hourly | salary| pct_productioneffective_from/toappointmentexternal_id, patient_refprovider_id, operatory_idplan_id, scheduled_minutesactual_minutes, statusappointment_procedureappointment_id, cdt_codeallowed_amount_expectedallowed_amount_sourceappointment_costingcontribution_marginfully_loaded_profitmargin_per_chair_hourverdict, engine_versionbasis_snapshotresolveallowed $

Figure 4 · Core data model. Blue is the fee schedule spine.

Resolution order when pricing a procedure. Plan, code, exact region and date in force. Then plan, code and date without region. Then the practice’s own fee for service rate. If none of those match, the appointment is flagged and the revenue is shown as unknown. It is never guessed. A financial tool that quietly invents a number is worse than one that admits a gap.

Everything material is effective dated. Fee schedules, compensation, procedure costs, capacity and overhead. You noted Delta has not updated its schedule in about five years, so schedules are stable but stale. When one does change, last quarter’s reported profit must not silently move.

Every score keeps its own receipt. Each computed figure stores the assumptions in force when it was computed. If you question a number six weeks later, we can rebuild it line by line rather than argue about it.

resolve_allowed_amount(appt, code): 1 plan + code + region + date 2 plan + code + date 3 practice FFS rate for code 4 UNRESOLVED -> flag, do not guess

Supply costing has two modes. New practices default to a percentage of revenue, seeded at the 4% figure from your own profit and loss, so setup takes minutes. Individual high value codes can be upgraded to your per code precision where it changes a decision. A $2 prophy does not need two decimal costing. An $838 implant does.

06

Integration and the CareStack question

Open item, and it needs answering before anyone spends money

CareStack’s public developer documentation covers patients, medical conditions, payment summaries, communications, documents and treatment codes. It does not publicly document appointments, fee schedules, insurance plans, providers or operatories, which is five of the six things this product needs to read. Their marketing material says the programme provides “access to all key operational data points,” which is not the same as documentation.

It may well support all of it and simply not publish the detail. We are not going to assume either way, and we will not invent endpoint names to make a diagram look complete. Before the roughly $5,000 developer registration is committed, we get the endpoint inventory in writing. Your account and Derek’s relationship get that answered in days, at no cost. Section 08 shows where this sits in the plan.

Per data domainAppointmentsProceduresFee schedulesInsurance plansProvidersOperatoriescapabilities()asked once, atconfiguration time,per domain‘api’ → nightly syncno human step‘extract’ or ‘csv’nightly file drop or upload‘none’ → fallback ladderderive from claims historyCanonicalstoreidentical shapefrom all threeEach domain is negotiated on its own. A practice can run API appointments, uploaded fee schedules and manually entered overhead at the same time,and the engine neither knows nor cares. This is what makes going to CareStack first survivable rather than a bet.

Figure 5 · Capability negotiation per data domain

Practice management systems, ranked by what is actually reachable

SystemAccessCostFee schedules readable
Open DentalPublic REST, self serve key$0 to $35Yes, documented
CareStackREST, webhooks, extracts~$60 + feesNot documented
Denticon / Planet DDSPartner registrationNot publishedUnknown
Dentrix AscendREST, approved vendors$47Unknown
Dentrix on premiseLocal database, on site agent$10k + royaltyAgent required
EaglesoftLocal, authorised partnersNot publishedUnknown
Curve DentalNo public APIn/aUpload path only

Costs are per location per month unless noted. Open Dental matters disproportionately because it publicly documents every endpoint this product needs, including fee schedules, on a free read tier, across more than 12,000 practice installs. It is the cheapest route to a second customer and the reference implementation that proves the adapter pattern generalises.

02:00 triggerPer-tenantfan outAdapter pullrate limitedNormalize+ upsertScoreappointmentsMorningemailRetry, backofffive attemptsDead letter + alertday marked staleA failed sync marks the day stale. The email either holds or goes out with a banner saying what it was computed from. It never quietly sendsnumbers built on partial data. Silent partial sync is the failure that would destroy trust in this product, so it is designed against first.

Figure 6 · Nightly sync, with the failure path

07

Technology stack

One decision from you sets the whole stack

Does the system need to hold patient names and dates of birth? Our recommendation is no. The report is fully actionable without them: “9:00am, 90 minutes, D2740, Delta, +$212 an hour” tells you everything, because the decision you are making is about a plan and a procedure, not about a person. Patient records stay in your practice management software, and we hold a one way reference that cannot be turned back into a name outside your own system.

That choice materially reduces the compliance surface and the running cost. If you want names on the report, that is a legitimate call, it just needs to be a deliberate one, because it changes the hosting, the agreements required and the monthly floor.

LayerRecommendedWhy this one
ApplicationNext.js on VercelOur standard. The first release has very little interface, so the weight belongs in the engine, not the front end.
DatabasePostgres, row level isolationEffective dated fee schedules and per tenant separation enforced by the database rather than by application discipline.
AuthenticationClerk organisationsPractice, location and role map directly onto it. Building multi tenant permissions by hand is where projects like this lose weeks.
Scheduled workDurable job queueSync is long running, rate limited and retry heavy. Ordinary serverless timeouts will not hold it. The one place not to improvise.
EmailResendThe deliverable is an email, so it gets a real template rather than a text dump.
CredentialsEncrypted, referenced, never stored in the databasePractice management keys for many practices are the highest value target in the system.
MonitoringError tracking plus a per practice sync health viewThe operational risk here is not a slow page. It is a sync that fails quietly.
Money mathsDecimal, never floating pointNon negotiable in anything that reports currency.

If the answer on patient data is yes, the stack moves to AWS with managed database, queue and email under a single business associate agreement. It is a well understood substitution and it is priced differently. We would rather present the fork than quietly pick for you.

08

Scope of work

Six phases. Each one approved on its own, and you are never committed past the one you are in.

Phase 0

Vendor verification. Written endpoint inventory from CareStack. Confirmed capability map and pricing. No registration fee paid before this completes.

25 hrs · 1 week

Phase 0b

UI foundation. Design tokens, the verdict colour system, the grid, the upload and settings screens, the email template. Runs alongside the backend, so it does not extend the timeline.

132 hrs · runs parallel

Phase 1a

The grid, and prove the number. Plan and procedure profitability grid, costing engine, upload path, procedure library, overhead pools, the morning email, idle chair reporting. Your eleven sample appointments as the test suite.

314 hrs · 7 to 9 weeks

Phase 1b

Live connection. Adapter, credential vault, scheduler, rate limiting, retry, sync health. No more uploads.

169 hrs · 4 to 5 weeks

Phase 2

Volume weighting and the dashboard. Phase 1a tells you which plans and procedures are underwater per unit. This tells you how much it matters, weighted by how often you actually do each one. Scheduled against actual time. Second system integrated to prove the pattern.

240 hrs · 6 to 8 weeks

Phase 3

The overlay. Feasibility test first, then build. Priced after the test, not before.

Spike, then scoped

Phase 4

Promised against paid. Reconcile remittance data to the fee schedule per plan and per code. The strongest differentiator available.

Scoped after Phase 1

Why Phase 1a stands alone. It has no vendor dependency at all. It proves the model is believable before a dollar of integration is spent, and it works for a prospect on any practice management system, including ones with no API.

Why Phase 3 is not priced. No practice management vendor offers an official way to put third party information onto their scheduler screen. It is achievable, but the route decides the cost, so we test before quoting. We would be suspicious of anyone who fixed a price on it today.

What we would need from you. The fee schedule export, a recent profit and loss for overhead, confirmation of how many chairs run on which days, and how any associate is compensated. Roughly an hour of front office time.

09

Investment

Two structures. Both are real offers, and the second is the one we think fits where this actually is.

Option A · Straight build

You own it outright. We build, deliver and hand over. Phases are sequential and separately approved, and you are never committed past the one you are in.

Development is billed at $250 per hour, design at $175. The hours below are our real estimates, not padded ranges, and they already account for how we actually build now. A meaningful share of this work is AI assisted, which is why the totals are lower than a traditional agency estimate for the same scope. Where AI does not help, and on this project that is the costing engine and the practice management integration, we have held the hours rather than pretend they compress.

PhaseWhat you getHoursCost
0Vendor verification, confirmed capability map25$6,250
0bUI foundation: design tokens, the verdict colour system, the grid, upload and settings screens, email template132$23,100
1aThe plan and procedure grid, costing engine, upload path, the morning email314$78,500
1bLive practice management connection169$42,250
2Dashboard and second system integrated240$60,000
3Overlay feasibility test50$12,500
4Promised against paid reconciliation85$21,250
  • Phase 0 + 0b + 1a. The grid, designed, plus a working product on your own data$107,850
  • Through Phase 1b. Live and automatic, no uploads$150,100
  • Through Phase 2. Sellable to practices other than yours$210,100

Phase 3 is deliberately quoted only as the feasibility test. We will not fix a price on the overlay build until the test tells us which of the three approaches actually works, and we would be suspicious of anyone who did.

Naming and identity are held separately. A product name, wordmark and mark is roughly 30 hours, about $5,250, and we would rather do it once. Who the brand belongs to depends on how this is structured commercially, and that is a conversation still to have. The interface work above does not wait on it.

Vendor fees are paid by you directly, not billed through us. The CareStack developer registration, currently understood to be around $5,000 and confirmed in writing at Phase 0, buys your practice access to your own data. It is yours, it stays yours, and there is no reason for it to sit on our invoice.

Option B · Partnership

You said you love partnerships, and that when everybody is invested the rising tide lifts all boats. We agree, and this is a market we want to be in.

The alternative is that 561 Media builds the early phases at a substantially reduced fee and takes a stake in what gets built, rather than invoicing the figures above. You contribute the domain expertise, the pilot practice, the supply costing you have already built, and the introductions into the dental market. We contribute the build and carry the risk with you.

We would re cut the arrangement after Phase 1a, when we are both looking at evidence about whether dentists other than you want this, rather than at a pitch. The shape of that stake, and what a reduced fee looks like against the numbers above, is a conversation to have properly rather than a number we would put in a document before agreeing the principle.

Our honest read

Option B fits where this is. You have the insight and the market access, we have the build capability, and neither of us yet knows whether dentists outside your own practice will pay for it. Phase 1a is designed to answer that cheaply. Structuring the early phases as a partnership means we both find out without either of us carrying the whole risk.

Running costs, so there are no surprises

ItemCostNote
CareStack API access~$60 / location / moPlus an account minimum and the one time registration. All figures confirmed in writing at Phase 0.
Open Dental API access$0 to $35Free at the level the first release needs. The paid tier is only required for the overlay.
Hosting, email, monitoringLow hundreds / moShared across every practice on the platform.
Accounting integrationVariableKept optional in the first release, because the metering cost cannot be sized until real call volume exists.

What this means if you sell it. The practice management vendor takes its cut on every seat forever, so selling below roughly $199 per location per month does not work. $299 to $499 is where this should land, plus a one time onboarding fee of $500 to $1,000 covering the fee schedule import, which is the only genuinely manual part of setup. Worth knowing now, while pricing is still a decision rather than a constraint.

What the build figure does not include

Everything quoted above is engineering. Three real costs sit outside it, and we would rather name them now than have them appear as surprises later.

Not in the build figureWhat it actually is
Platform running costsThe monthly cost of keeping it live. Currently around $300 a month in total, shared across every practice on the system, and it stays there because of how the stack was chosen.
Getting in front of other dentistsDentists do not buy practice software off a search ad. This sells through trade shows, study clubs and CE circuits, the dental podcasts and forums, and practitioners other dentists already trust. Booth space and speaking slots are lumpy, five figures at a time, and they are the channel.
Support and onboarding at volumeFine at five practices. A real function at forty, when people are calling about numbers they want explained. Budget for it before it is on fire, not after.
Why it is worth keeping one team across all three

Operational cost is a design decision, not an accident. The reason this runs at roughly $300 a month rather than several thousand is that we picked the free read tier on Open Dental, shared one set of infrastructure across every practice, and refused to over provision for scale that does not exist yet. Those are choices made by people who expect to still be running it in two years. A firm that builds and hands off has no particular reason to care what it costs you to operate afterwards, and it usually shows.

On getting in front of other dentists, we will be straight with you. This is not a market you win with search ads and a content calendar, and we are not going to pretend otherwise. Dentists buy practice software because someone they respect at a study club, a conference or on a podcast told them it changed how they run their operatory. The most valuable distribution asset in this project is you. You are a practising dentist with a genuinely original argument and the numbers to back it, and that is worth more than any campaign we could run.

What we are good for around that is everything that has to exist for those conversations to convert. The positioning and the language, the booth and the deck, the demo that survives a sceptical practice owner poking at it, the case study built from your own numbers, the follow up that does not drop leads, and the site people land on afterwards. We would also keep the operating cost honest while it scales, which is the part nobody notices until it is a problem.

10

What could go wrong

Every project like this has these. Listing them is not hedging, it is how we decide what order to build in.

RiskLikelihoodHow the plan handles it
CareStack cannot serve the dataHighVerified in writing at Phase 0 before any fee is paid. The upload path ships regardless, so the pilot is never blocked, only made less automatic.
The tool reads as fire your hygienistsHighContribution margin is the headline number, thresholds are set per chair type, and the idle chair cost is reported separately so hygiene is judged on hygiene economics.
You do not believe the numberMedium to highBoth numbers shown side by side, every score keeps the assumptions it was computed from, your own eleven appointments are the test suite, and an unresolved fee is flagged rather than guessed.
Fee schedule is stale or the wrong fileHighSchedules are dated, their age and source appear on every report, and from Phase 4 they are checked against what payers actually paid.
Associate compensation modelled wrongHighBoth hourly and percentage of production supported from the first release, dated, and confirmed during setup.
A sync fails quietlyMediumThe day is marked stale, the email says what it was computed from, and failures alert rather than disappear.
Accounting integration costMediumKept out of the required path. Overhead can be entered directly, so the integration is a convenience rather than a dependency.
The overlay proves impossibleMediumTested before it is priced, with a companion display fallback. Nothing in the first release depends on it.
A competitor adds per procedure costMediumThe defensible parts are your own supply costing and the reconciliation of promised against paid. Speed to a working pilot matters more than feature count.

Not in the first release

Writing anything back into your practice management software or your accounting. Patient lifetime value and loss leader analysis. Claims submission or eligibility checking. Any clinical recommendation about whether a procedure is appropriate. A mobile app, since the email is the mobile experience. Systems requiring software installed inside the practice network. And the light above the operatory door, which was a genuinely good idea and comes back as the fallback for Phase 3.

Three things
and we start

  1. 1. We send the CareStack questions. Costs nothing, takes days, and it decides whether the live connection is straightforward or needs a different route. This should go out whatever else you decide.

  2. 2. You answer six things about the practice. How many chairs produce and on which days. Whether Dr. Parchment is an associate and how they are paid. What you collect against allowed amounts. Whether the Cigna crown at $1,775 and the Delta implant at $1,100 in the sample are real or data entry errors. And what you are targeting for your own compensation, because that sets the line between yellow and green and without it we would be picking a number arbitrarily.

  3. 3. You pick a structure. Straight build or partnership, and we start Phase 0 the week you say go.

Why we took this one

We turn down most software projects that come to us, because most of them do not make sense. Dental is a market where technology adoption is slow enough that a well built tool still has room, the practices have money, and the specific thing you are describing does not exist. The analytics tools in your market report what already happened. None of them tells you whether the next ninety minutes is worth selling.

Questions before you decide? Book a time or reply to the email this came from.

561 Media · Technical Document and Statement of Work · August 2026561media.com