Why the data model came before the email tool
A founder note on why maxclicks exists, the foundation built before anything else (typed schemas, evaluated attributes, attribute expansion, Adaptyle), and what it makes possible.
On this page
maxclicks exists because of one fact that would not leave me alone: language models can write, reason and act, and every marketing email still reads like a mail merge.
I kept watching the same scene play out. An AI feature arrives, and it paraphrases a subject line. Meanwhile the thing customers actually notice, an email that was clearly written for them, about their situation, in the brand's real voice, stays out of reach. Not because the models are weak. They aren't. Because of what the models are asked to stand on.
So I made a decision that shaped everything after it: build the foundation an AI needs to do the work first, and only then build the platform on top of it. This post is the honest, technical version of that decision, and what it buys you.
The bottleneck was never the model
Point a large language model at your customer data and ask it to write one person their own email, build the right audience, or design a lifecycle flow, and it can. In principle.
In practice it falls apart, because the data underneath is a mess. Marketing tools were built in the template era: rigid objects you can't reshape, fields with no types or guarantees, logic locked inside point-and-click rule builders, and personalization that stops at {{ first_name }}. An AI stapled to that can only do so much. Garbage in is fatal when an agent is the one acting on it.
An AI bolted onto a template engine writes subject lines. An AI standing on a typed, computable data layer writes the email.
That conviction is the whole company. Everything below is one idea applied over and over: give the AI a foundation it can trust, and it stops being a gimmick and starts doing the work.
A data model that's actually yours
You don't run a generic "Leads and Deals" business, so I don't think you should be forced into one. In maxclicks, the shapes of your business are schemas, and they come in three kinds: contacts (the people you can message), objects (everything else you track: products, orders, courses, companies), and events (the moments that matter: a purchase, an abandoned cart). Each schema has attributes: its typed fields.
The part that makes the rest possible is the validation gate. We treat incoming data with zero trust: every record, from any source (your API, an import, a form, a workflow), is normalized and validated against its schema before it's accepted. Malformed values are rejected and unrecognized fields are dropped with a warning, never silently corrupting a record.
That sounds mundane. It's the most important decision we made, because clean, typed, consistent data is the precondition for AI you can trust. When the foundation is guaranteed, an AI-generated query or a generated email can be relied on to actually work.

Evaluated attributes: one idea instead of five
Every other tool ships four or five separate features to answer questions about your data: relationships ("the company this contact works for"), computed fields ("days since last order"), formulas and rollups ("lifetime spend"), and saved queries ("top products in this segment"). Each is its own UI, its own limits, usually its own data team.
We collapse all of them into a single concept you describe in plain language: an evaluated attribute. You write the question, "the total value of this contact's orders this year," and maxinja, our assistant, generates the underlying logic. You never write it, and crucially you never see it: you read a human-readable description, confirm it's right, and refine it with another sentence if it isn't. The raw expression stays server-side.

Evaluated attributes are never stored. They compute at the moment you use them, so the value you send is the value that's true right now, not a number that went stale weeks ago. For a marketer, this is the difference between "the fields your database has" and "the fields your best campaign idea needs." You describe the field, and it exists.

A single record is rarely the whole story, so the same engine works across relationships. To write a great email you might need a contact, and their company, and that company's account manager. Attribute expansion is how a send or a workflow asks for exactly that, and only that: declare what the message needs, and the system follows the chain, contact → company → team, computing each step fresh at the moment of use. No join tables, no nightly sync, no stale snapshot.
Adaptyle: the last mile, finally
Once the data is trustworthy and reachable, content is the last mile. Adaptyle is our templating language, and it runs in two passes. First, a deterministic engine fills in the predictable structure exactly like any templating language you've used. Then an AI pass reads everything you know about that specific recipient and writes the parts that benefit from real understanding: the angle, the tone, what to recommend and why, in your brand voice.
Your brand is not an afterthought. Your colors, fonts, tones, and assets are injected into every customization automatically, so personalized never means off-brand. The result is one template that produces a genuinely different, real email for each person: subject line and body, in MJML or HTML, visual editor or raw code. Not the same email with a name swapped in.

Walkthrough steps
With Sarah selected, request a real personalized preview and wait for it to finish. Scroll to the generated paragraph connecting her Ethiopia and Kenya purchase history and pour-over preference to the supplied Colombia Huila offer. No email is sent; separate generations can vary.
This is the value I want maxclicks to be judged on. Where your current ESP puts a merge tag, we put a sentence, and every customer on the send gets the email that sentence implies for them specifically.
What this feels like day to day
The foundation would be an academic exercise if it didn't change the Tuesday afternoon of the person running lifecycle email. Here is what it changes.
You describe an audience in a sentence, "customers more than two of their own reorder cycles overdue who still open our emails," and you see the matching count and the actual contacts before you spend a single send. No rule builder, no SQL, no waiting on an analyst.
You describe a journey, and maxinja draws the workflow on the canvas: triggers, branches, delays, sends. Every step opens in plain English, and you refine it the same way you created it. Mid-flow, a workflow can query your own data or run an AI research step, then act on the answer for each customer individually.

Walkthrough steps
Inspect the draft signup workflow. Open the Usersignedup trigger, two-day delay, condition checking this user’s own projects, and email step. The true branch ends the follow-up; the false branch continues. The tour does not publish or run this draft.
You collect consent like you mean it. Forms ship with real consent modes and double opt-in, unsubscribes and preferences work the way regulators and inbox providers expect, and suppressions are enforced on every send path. We built the no-cold-email rule into the product because your sending domain is the one asset you cannot re-buy, and I'd rather lose a deal than help someone burn theirs.
And you can feel the whole thing in one sitting: connect a source, describe one audience, verify your sending domain, and send yourself the email your best customer would get. The domain comes first on purpose. Every send leaves from your own domain, test sends included, because that is the difference between building a sending reputation and borrowing someone else's.

Walkthrough steps
Read maxinja’s completed review of a real Halden campaign draft. Inspect the actual audience count, available draft controls and saved Marcus preview. The agent corrected the audience and sender and left the campaign unscheduled. This is a walkthrough of the completed review, not a recording of live campaign creation; no email is sent.
maxinja threads through all of it: it models schemas, writes evaluated attributes, defines audiences, drafts workflows, and customizes content from a plain-language brief, then hands you a description to review. As agents get more capable, they inherit a foundation that was built for them, not retrofitted. That is the bet: the value you get out of LLMs is capped by the structure you give them, so we built the structure first.
Where we honestly are
We're a small, new team, and I'd rather under-promise. So here is the plain status.
Email is the one channel we send on today. We don't show inflated metrics or logos we haven't earned. I'd rather show you the product on your own data and let it speak.
Let's talk
I'd genuinely love to hear how you reach your customers today and where it falls short, and to show you what writing each of them their own email actually looks like. Book a 15-minute demo with the founders, or send feedback straight to me: Abtin[at]maxclicks[dot]ai. I read every reply.