diff --git a/apple-touch-icon.png b/apple-touch-icon.png index 4e2ff8d..5395547 100644 Binary files a/apple-touch-icon.png and b/apple-touch-icon.png differ diff --git a/brand-mark-full.png b/brand-mark-full.png index eff8ff1..614a14e 100644 Binary files a/brand-mark-full.png and b/brand-mark-full.png differ diff --git a/brand-mark-square.png b/brand-mark-square.png index 1d753ee..cccd0ba 100644 Binary files a/brand-mark-square.png and b/brand-mark-square.png differ diff --git a/brand-mark.svg b/brand-mark.svg index 5b646f2..53289dd 100644 --- a/brand-mark.svg +++ b/brand-mark.svg @@ -1,9 +1,17 @@ - + + + + + + + + + - + diff --git a/chat-widget.js b/chat-widget.js index 77bf25c..17644b3 100644 --- a/chat-widget.js +++ b/chat-widget.js @@ -65,6 +65,7 @@ + '.cw-typing span:nth-child(3){animation-delay:.3s;}' + '@keyframes cw-typing{0%,60%,100%{opacity:.3;transform:translateY(0);}30%{opacity:1;transform:translateY(-3px);}}' + '.cw-quick{padding:0 16px 12px;background:' + BRAND.paper + ';display:flex;flex-wrap:wrap;gap:6px;}' + + '.cw-quick.is-dismissed{display:none;}' + '.cw-quick button{background:' + BRAND.surface + ';border:1px solid ' + BRAND.border + ';border-radius:999px;padding:7px 12px;font:500 12.5px/1 Inter,system-ui,sans-serif;color:' + BRAND.ink + ';cursor:pointer;transition:background .15s,border-color .15s,color .15s;}' + '.cw-quick button:hover{background:' + BRAND.ink + ';color:#fff;border-color:' + BRAND.ink + ';}' + '.cw-form{display:flex;gap:8px;align-items:flex-end;padding:12px 14px;border-top:1px solid ' + BRAND.border + ';background:' + BRAND.surface + ';}' @@ -176,6 +177,9 @@ b.textContent = q; b.addEventListener('click', function () { if (inFlight) return; + // Dismiss the recommendation row the moment the user picks one + // — otherwise it sits over the chat for the rest of the session. + quick.classList.add('is-dismissed'); input.value = q; autoSize(); form.requestSubmit(); @@ -184,6 +188,15 @@ }); } + // Hide the "what I can build" recommendation row once the user has + // actually started a conversation. It returns on reset. + function dismissQuick() { + quick.classList.add('is-dismissed'); + } + function restoreQuick() { + quick.classList.remove('is-dismissed'); + } + function escape(s) { return String(s).replace(/[&<>"']/g, function (c) { return ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' })[c]; @@ -300,6 +313,7 @@ localStorage.removeItem(STORE_KEY); if (s) localStorage.setItem(STORE_KEY, 'sess-' + Date.now().toString(36) + Math.random().toString(36).slice(2, 8)); } catch (_) {} + restoreQuick(); renderHistory(); } @@ -347,6 +361,9 @@ if (!text || inFlight) return; inFlight = true; sendBtn.disabled = true; + // First real send — the suggestion row has done its job, remove it so + // it doesn't sit over the conversation for the rest of the session. + dismissQuick(); addMessage('user', text); var typing = showTyping(); callWebhook(text) diff --git a/contact.html b/contact.html index 1ebacc8..1119b03 100644 --- a/contact.html +++ b/contact.html @@ -328,6 +328,7 @@ How it works Pricing Why us + Try sandbox Start a project - +

Six products. Six clear entry prices.

+

Each one is a small, scoped thing you can buy today — and a named retainer that's the natural next step once it's working for you. Prices in South African Rand, excl. VAT.

+
+ The pattern: cheap entry price to get the “yes,” retainer once it's earned. +
+
+ Try the 60-second sandbox → + See what we'd build for you, with live previews.
-
+
-
-
- Project -
R18 000starting
-
one-off · fixed quote
-

A single website, integration, or app build. Best when you know exactly what you need and just want it shipped.

-
    -
  • Discovery call & written scope
  • -
  • Weekly demo every Friday
  • -
  • 30 days post-launch support
  • -
  • All code, content & accounts handed over
  • -
  • Dedicated account lead
  • -
  • Monthly refinement call
  • -
- Get a quote + +
+ + +
+ 01 +
AI Worker
+

Your own automated worker.

+

Chat to it, give it tasks, it gets them done. A digital employee, not a chatbot.

+
+
+ Starter + R1 400/ month + 1 task type (e.g. "answers WhatsApp enquiries" or "drafts quote responses"), capped monthly volume, self-serve. +
+
+ Pro + R4 500 – R7 500/ month + Multiple task types, weekly tuning call, human escalation handling. +
+
+
-
- -
-
-

Common add-ons.

-

Drop these onto any plan. We bill at the same hourly rate every time — no project premium.

-
-
-
-

Voice agent

-
from R2 400 / month
-

AI that picks up the phone, routes calls, books appointments, and only hands to a human when the rule says so.

-
-
-

WhatsApp Business setup

-
R4 800 once-off
-

Verified WhatsApp Business account, template library, agent integration, and 14-day on-boarding.

-
-
-

Reporting dashboard

-
from R14 000
-

A live dashboard pulling from Xero, Shopify, HubSpot or whatever stack you use. Email-digest on Mondays.

-
-
-

Knowledge base agent

-
from R3 200 / month
-

Trained on your docs, SOPs and past tickets. Answers customer questions and surfaces the right human when it's stuck.

-
-
-

Migration sprint

-
from R28 000
-

Two-week sprint to move you off a platform you've outgrown — Webflow → Next.js, old CRM → HubSpot, etc.

-
-
-

Security review

-
R9 600 once-off
-

Independent review of your stack, agent prompts, and access controls. Written report with prioritised fixes.

-
-
-
- - -
-
- Compare -

What's in each plan.

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ProjectRent-an-AI-AgentStudio
Web & app buildsOne-off—Up to 3 active
Deployed AI agents—1Up to 2
Workflow integrationsUp to 2Up to 4Unlimited
Weekly refinement call
Dedicated lead
Response SLANext business daySame business day4-hour P1, same-day P2
CancellationEnd of projectAny month90-day minimum, then any month
+ +
+
One price to start, one retainer to keep it going.
+
+

Every product above is priced so the first step is a yes you can make in a single conversation — not a six-figure commitment. The retainer that follows is named up front, so there are no surprises once the thing is in production.

+

We can credibly hit these entry numbers because we're not building from scratch. Our existing apps, dashboards and agent tooling are already battle-tested on other client work, so each new engagement is adaptation, not invention.

@@ -485,56 +386,56 @@
-

Two named humans do the building, the architecture, and the reviews. AI handles the repeatable parts inside your workflows — drafting emails, qualifying leads, routing tickets — under rules we set up together and you approve. If the AI ever makes a call you're uncomfortable with, a human reviews it before it ships.

+

Because we already have working apps, dashboards and agent tooling in production. When we take on a new client, we're adapting components we've shipped before — not starting from a blank file. The savings on build time get passed back as a lower entry price.

-

Most Rent-an-AI-Agent clients spend an extra R1 500–R4 000 a month on LLM API usage and a chat/SMS provider. We pass those costs through at cost with no markup, and we cap usage so a surprise bill is impossible. Larger clients on the Studio plan can negotiate committed-use discounts.

+

Starter is one task type, capped volume, self-serve — pick from a menu of common jobs (WhatsApp replies, quote drafts, lead qualification) and we ship it. Pro is multiple task types, a weekly tuning call with us, and human escalation handling — for when the agent is part of how your business actually runs.

-

Yes. Code lives in your GitHub from day one. Content lives in your CMS. Agent prompts live in a workspace we share with you and you keep. Hosting and domain accounts are yours. If you fire us tomorrow, the only thing you lose is our weekly demo.

+

A discovery call, a written scope, weekly demos, and 30 days of post-launch support. You own the code, the content, the accounts, and the prompts from day one. We hand over everything at the end — no lock-in.

-

Your build is yours to run. Anything broken that was our fault, we fix free. Anything new you want built, we send a fixed quote. If you'd rather have us on call, the Rent-an-AI-Agent and Studio retainers both cover ongoing support, refinement and small new builds.

+

Yes. Every monthly product (AI Worker, Social Auto-Post, the Website care plan, App support, Dashboard retainer) is billed monthly and you can cancel at the end of any month. Care plans for live workflows run month-to-month after the first 2 workflows are in.

-

Project builds ship in 10–14 working days. The first AI agent is in production within a week of kick-off, then refined over the next 4 weeks. Studio engagements usually have something live in week 2 and a clear roadmap by week 4.

+

Yes — UK, EU and the rest of Africa are common. Pricing switches to GBP / EUR / USD at the same ballpark converted, and we adjust SLAs to your timezone. Most client calls run 09:00–11:00 SAST, which is a friendly hour for London and Lagos.

-

We work with clients across the UK, EU and the rest of Africa. Pricing switches to GBP/EUR/USD at the same ballpark converted, and we adjust SLAs to your timezone. Most client calls run on 09:00–11:00 SAST, which is a friendly hour for London and Lagos.

+

The prices above are entry points, not ceilings. If you need 5 workflows instead of 1, 3 social platforms instead of 2, or 4 deployed agents, we'll quote a package that makes sense. And if you're a single-person operation and only need the R1 500 starter site, that's a perfectly good fit too.

@@ -553,13 +454,14 @@

The on-call studio for small and medium businesses. Build, automate, integrate — without hiring an in-house team.

@@ -590,38 +492,6 @@ + + + + + diff --git a/sandbox.html.artifact.json b/sandbox.html.artifact.json new file mode 100644 index 0000000..c2956e1 --- /dev/null +++ b/sandbox.html.artifact.json @@ -0,0 +1,19 @@ +{ + "version": 1, + "kind": "html", + "title": "sandbox.html", + "entry": "sandbox.html", + "renderer": "html", + "status": "complete", + "exports": [ + "html", + "pdf", + "zip" + ], + "createdAt": "2026-07-04T20:31:52.242Z", + "updatedAt": "2026-07-04T20:31:52.242Z", + "metadata": { + "inferred": true, + "reconciled": true + } +} \ No newline at end of file