The Thing Is Broken

An LLHMM and Max Marin Works corporationIf something is broken and you need help getting it fixed, open a ticket for help when and how you need it.Things break. People fix.

REPORT AN ISSUE

Anyone can open a ticket — no account needed. Open the full ticket form, or search DuckDuckGo to identify the item first. Include the problem, desired resolution time, and budget (including $0).

UNDERSTAND THE PROBLEM

We ask practical questions, identify the real failure, and avoid replacing parts that are still doing their job.How we solve it: root causes, the right specialists, and lasting solutions.

RESOLVE COST-EFFECTIVELY

Fix what can be fixed. Use the backup when needed. Send the right replacement when that is the best answer. Approved vendor or employee login.

REQUEST AN ACCOUNT

Public reporting does not require an account. Accounts are only for approved vendors and employees authorized to accept, work, or resolve tickets. Request approved vendor access.

STAY CONNECTED

Prefer a full page? Open the ticket form.

Your PC. Your business. Your dropdowns.

Take the ticket desk with you.

A standalone Windows app that runs on your own device—not on this website. Make your own dropdowns, create local accounts, keep repair histories, and back up your tickets. No coding needed.

$20 USD · one-time software purchase · no required subscription

Available now directly through The Thing Is Broken. Pay $20 once, plus applicable taxes shown at checkout; your secure ZIP download is provided after PayPal payment is captured. No required subscription. Optional support, customization, and setup are separate.

Antivirus & VPN: applicable support plans cover installation and setup assistance. Paid third-party subscriptions and licenses are sold separately unless expressly included in your selected plan; customers supply or purchase their own licenses. Discounted software bundles may become available as we grow.

Support the work. Pay it forward.

A little help. A wider impact.

Your contribution supports The Thing Is Broken and a cause you choose. On PayPal, pick Wildlife Conservation Network, Good Sports, UNCF, or Feeding America.

Our 50/50 promise: half of your completed contribution, after any refunds or reversals, is allocated to the organization you select. The other half supports this business and its development.

Processing fees come out of our half, not the foundation’s half. On a completed $20 contribution, $10 is allocated to your selected organization and $10 to us before processing fees. We add no separate referral or processing surcharge; any optional fee-cover amount shown by PayPal is your choice.

Your payment goes to The Thing Is Broken. We make the onward contribution separately; PayPal does not automatically split the payment.

Donate with PayPal or card

Choose one-time or an optional recurring contribution on PayPal. This is separate from software and support subscriptions. We are a for-profit business, not a registered nonprofit; your payment to us is not a tax-deductible charitable gift. No affiliation or endorsement by the listed organizations is claimed. Donating does not buy the app, a repair, or priority service. Reporting a ticket stays free.

MONTHLY SUPPORT PLANS
Choose the coverage that fits your device and your workflow.

DEVICE CARE — $20/month
One registered PC, monthly PC tune-up, and peripheral support.
DEVICE CARE + SUPPORT — $25/month
One registered device, tune-up, peripheral support, software installs, and support 9 AM–5 PM ET.
PROTECTED SUPPORT — $30/month
One registered device, monthly PC tune-up, and support 9 AM–5 PM ET. Installation and setup help for compatible VPN and antivirus software; paid third-party licenses are purchased separately.
MALWAREBYTES FREE & PAID UPGRADES
We can install Malwarebytes Free on compatible personal devices for on-demand scanning. When you want continuous real-time protection, request a licensed Malwarebytes Standard or Plus upgrade through our site. We confirm the current price, device count, license term, renewal, tax, and refund details before payment, then you can pay through our secure checkout. Request a Malwarebytes install or upgrade.
VIP ENTERPRISE — $100/month
Up to five registered devices and support 9 AM–8 PM ET.
SENIORS 60+ & ELIGIBLE VETERANS
25% off monthly support plans. Ask us before checkout to confirm eligibility and your current discounted total.
NEED ONE-TIME HELP?
Choose the $50 one-time technical-service option, or start a no-account ticket/quote — a $0 budget is welcome.

/* Drop-in widget. The model key is never sent to a visitor's browser. */ (() => { // Carrd can run this widget either as an external file or as inline site code. // The marked-script fallback keeps the latter reliable in builders that do not // preserve document.currentScript after moving custom-code blocks. const script = document.currentScript || document.querySelector("script[data-mmw-chat-widget]"); if (!script || window.__mmwChatWidgetLoaded) return; window.__mmwChatWidgetLoaded = true; const requestedPersona = script.dataset.persona || "luna"; const persona = ["luna", "veektor", "doctor"].includes(requestedPersona) ? requestedPersona : "luna"; const endpoint = (script.dataset.endpoint || new URL(script.src).origin).replace(/\/$/, ""); const avatarCandidate = script.dataset.avatar || ""; const canLoadAvatar = (candidate) => { if (!candidate) return false; try { const parsed = new URL(candidate, window.location.href); const hostname = parsed.hostname.toLowerCase(); // A public Funnel endpoint may serve its own avatars. Keep other Tailnet // hosts out of avatar requests made by this widget. if ((hostname === "ts.net" || hostname.endsWith(".ts.net")) && parsed.origin !== new URL(endpoint).origin) return false; return parsed.protocol === "https:" || parsed.origin === window.location.origin || parsed.protocol === "file:"; } catch (_error) { return false; } }; const avatar = canLoadAvatar(avatarCandidate) ? avatarCandidate : ""; const defaultDonationUrl = "https://www.paypal.com/donate/?hosted_button_id=6RTHRPAQH9DPW"; const safeHttpsUrl = (candidate, fallback) => { try { const parsed = new URL(candidate || fallback); return parsed.protocol === "https:" ? parsed.href : fallback; } catch (_error) { return fallback; } }; const donationUrl = safeHttpsUrl(script.dataset.donationUrl, defaultDonationUrl); const rawFoundationEmail = script.dataset.foundationEmail || "[email protected]"; const foundationEmail = /^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(rawFoundationEmail) ? rawFoundationEmail : "[email protected]"; const foundationSuggestionUrl = `mailto:${foundationEmail}?subject=${encodeURIComponent("Foundation suggestion for The Thing Is Broken")}`; const title = persona === "luna" ? "Chat with Luna" : (persona === "doctor" ? "Ask Doctor Sorryicanfixit" : "Hail Veektor"); const speech = persona === "luna" ? "Hi! Let’s weave something lovely." : (persona === "doctor" ? "Hi! I can point you in the right direction." : "Hail! A magnificent visitor approaches."); const pledgeNote = "Optional pay-it-forward note: if you select a foundation, the 50/50 pledge allocates half of a completed contribution after refunds or reversals to it; processing fees come from The Thing Is Broken’s half. Donations never buy support or priority. Have a foundation suggestion? Use the link below."; const greeting = persona === "luna" ? `Hi! I’m Luna. What whimsical thought shall we explore? ${pledgeNote}` : (persona === "doctor" ? `Welcome to The Thing Is Broken. I’m Doctor Sorryicanfixit — sorry your thing chose today to become an emotional object. What do you need? Use the quick links below to get started. If you’d like to help keep the workshop open, optional donations are appreciated. ${pledgeNote}` : `A transmission! Veektor is accepting glorious conversational offerings. ${pledgeNote}`); const accent = persona === "luna" ? "#8ad8c2" : (persona === "doctor" ? "#8ad8c2" : "#c78ae9"); const doctorActions = [ ["Start a repair ticket", "https://support.thethingisbroken.com/report.html"], ["Existing ticket / quote", "https://support.thethingisbroken.com/ticket-access.html"], ["What support is right?", "https://support.thethingisbroken.com/how-we-solve-it.html"], ["Ticketing app / custom setup", "https://support.thethingisbroken.com/get-the-app.html"] ]; const siteActions = persona === "luna" ? [ ["Explore Max Marin Works", "https://maxmarinworks.com"], ["Need tech help?", "https://thethingisbroken.com"] ] : (persona === "veektor" ? [ ["Explore LLHMM", "https://llhmm.com"], ["Need tech help?", "https://thethingisbroken.com"] ] : doctorActions); const MAX_MESSAGE_CHARS = 600; const CLIENT_COOLDOWN_MS = 1200; let lastSendAt = 0; const style = document.createElement("style"); style.textContent = ` .mmw-chat{position:fixed;right:max(14px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom));z-index:2147483000;display:flex;flex-direction:column;align-items:flex-end;gap:10px;pointer-events:auto!important;font:15px/1.4 system-ui,-apple-system,Segoe UI,sans-serif;color:#f8fafc} .mmw-chat *{box-sizing:border-box} .mmw-chat__panel{width:min(380px,calc(100dvw - 28px - env(safe-area-inset-left) - env(safe-area-inset-right)));height:min(520px,calc(100dvh - 152px));min-height:340px;display:none;flex-direction:column;overflow:hidden;overscroll-behavior:contain;border:1px solid rgba(255,255,255,.18);border-radius:20px;background:#151822;box-shadow:0 18px 55px rgba(0,0,0,.45)} .mmw-chat--open .mmw-chat__panel{display:flex} .mmw-chat__head{display:flex;align-items:center;gap:10px;padding:12px 13px 12px 17px;background:linear-gradient(130deg,#252a3a,#151822);border-bottom:2px solid ${accent};font-weight:800}.mmw-chat__head-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mmw-chat__minimize{margin-left:auto;padding:5px 8px;border:1px solid rgba(255,255,255,.3);border-radius:999px;background:transparent;color:#f8fafc;cursor:pointer;font:700 12px/1 inherit}.mmw-chat__minimize:hover,.mmw-chat__minimize:focus-visible{border-color:${accent};color:${accent}} .mmw-chat__messages{flex:1;overflow:auto;padding:14px;background:#10131b;-webkit-overflow-scrolling:touch} .mmw-chat__message{max-width:88%;margin:0 0 10px;padding:10px 12px;border-radius:14px;white-space:pre-wrap;overflow-wrap:anywhere} .mmw-chat__message--bot{background:#272d3d}.mmw-chat__message--user{margin-left:auto;background:${accent};color:#10201e} .mmw-chat__actions{display:flex;gap:7px;flex-wrap:wrap;padding:9px 11px 0;background:#191d29} .mmw-chat__action{padding:6px 8px;border:1px solid rgba(255,255,255,.2);border-radius:999px;color:#f8fafc;font-size:12px;font-weight:700;text-decoration:none}.mmw-chat__action:hover,.mmw-chat__action:focus-visible{border-color:${accent};color:${accent}} .mmw-chat__form{display:flex;gap:8px;padding:10px 11px 11px;background:#191d29}.mmw-chat__input{min-width:0;flex:1;padding:10px;border:1px solid #596077;border-radius:10px;background:#0d1017;color:#fff;font:16px/1.3 inherit}.mmw-chat__input:focus-visible,.mmw-chat__send:focus-visible,.mmw-chat__toggle:focus-visible,.mmw-chat__minimize:focus-visible{outline:3px solid #fff;outline-offset:3px} .mmw-chat__send,.mmw-chat__toggle{cursor:pointer;pointer-events:auto!important;border:0;font:inherit;font-weight:800}.mmw-chat__send{padding:0 12px;border-radius:10px;background:${accent};color:#10201e}.mmw-chat__minimize,.mmw-chat__input,.mmw-chat__action{pointer-events:auto!important} .mmw-chat__launcher{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.mmw-chat__speech{position:relative;max-width:230px;margin-right:7px;padding:7px 11px;border:1px solid rgba(255,255,255,.48);border-radius:14px 14px 4px 14px;background:#f8fafc;color:#111827;box-shadow:0 5px 18px rgba(0,0,0,.25);font-size:13px;font-weight:750;text-align:right}.mmw-chat__speech::after{content:"";position:absolute;right:11px;bottom:-7px;width:12px;height:12px;border-right:1px solid rgba(255,255,255,.48);border-bottom:1px solid rgba(255,255,255,.48);background:#f8fafc;transform:rotate(45deg)} .mmw-chat__toggle{position:relative;display:inline-flex;align-items:center;gap:9px;min-height:64px;margin-left:auto;padding:6px 13px 6px 6px;border-radius:999px;background:${accent};color:#10201e;box-shadow:0 8px 24px rgba(0,0,0,.38);transition:transform .18s ease,box-shadow .18s ease} .mmw-chat__toggle-avatar{display:grid;place-items:center;width:52px;height:52px;overflow:hidden;border:2px solid rgba(16,32,30,.25);border-radius:50%;background:#151822;animation:mmw-chat-float 3.4s ease-in-out infinite}.mmw-chat__toggle-avatar img{position:absolute;display:block;width:52px;height:52px;object-fit:cover}.mmw-chat__fallback{font-size:28px;line-height:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.35))}.mmw-chat__toggle-label{max-width:160px}.mmw-chat__toggle-close{display:none;font-size:22px;line-height:1}.mmw-chat--open .mmw-chat__toggle-close{display:inline}.mmw-chat--open .mmw-chat__toggle-label{max-width:125px} @media (hover:hover){.mmw-chat__toggle:hover{transform:translateY(-4px) scale(1.02);box-shadow:0 13px 30px rgba(0,0,0,.45)}} @keyframes mmw-chat-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}} @media (max-width:560px){.mmw-chat{right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));gap:8px}.mmw-chat__panel{width:calc(100dvw - 24px - env(safe-area-inset-left) - env(safe-area-inset-right));height:min(500px,calc(100dvh - 142px));min-height:300px;border-radius:18px}.mmw-chat__speech{max-width:calc(100dvw - 96px);font-size:12px}.mmw-chat__toggle{width:64px;height:64px;min-height:64px;padding:5px;border-radius:50%;justify-content:center}.mmw-chat__toggle-avatar{width:52px;height:52px}.mmw-chat__toggle-label{display:none}.mmw-chat__toggle-close{position:absolute;font-size:17px}.mmw-chat--open .mmw-chat__toggle-avatar{opacity:.32}.mmw-chat__messages{padding:12px}.mmw-chat__message{max-width:92%}} @media (max-width:480px){.mmw-chat__actions{flex-wrap:nowrap;overflow-x:auto;padding-bottom:7px;-webkit-overflow-scrolling:touch}.mmw-chat__action{flex:0 0 auto}} @media (max-height:560px){.mmw-chat__panel{height:calc(100dvh - 142px);min-height:0}} @media (prefers-reduced-motion:reduce){.mmw-chat__toggle,.mmw-chat__toggle-avatar{animation:none;transition:none}} `; document.head.appendChild(style); const root = document.createElement("section"); root.className = "mmw-chat"; // Carrd themes can disable pointer input high in the document tree. Make this // fixed overlay explicitly interactive rather than inheriting that setting. root.style.setProperty("pointer-events", "auto", "important"); root.innerHTML = `
${speech}
`; document.body.appendChild(root); const messages = root.querySelector(".mmw-chat__messages"); const panel = root.querySelector(".mmw-chat__panel"); const toggle = root.querySelector(".mmw-chat__toggle"); const minimize = root.querySelector(".mmw-chat__minimize"); const input = root.querySelector(".mmw-chat__input"); const form = root.querySelector(".mmw-chat__form"); root.querySelector(".mmw-chat__donate").href = donationUrl; root.querySelector(".mmw-chat__foundation").href = foundationSuggestionUrl; const actions = root.querySelector(".mmw-chat__actions"); siteActions.forEach(([label, href]) => { const action = document.createElement("a"); action.className = "mmw-chat__action"; action.href = href; action.target = "_blank"; action.rel = "noopener noreferrer"; action.textContent = label; actions.prepend(action); }); const avatarShell = root.querySelector(".mmw-chat__toggle-avatar"); const fallback = document.createElement("span"); fallback.className = "mmw-chat__fallback"; fallback.setAttribute("aria-hidden", "true"); fallback.textContent = persona === "luna" ? "🕷" : (persona === "doctor" ? "🛠" : "⚙"); avatarShell.appendChild(fallback); if (avatar) { // Attach public artwork after the document load event so an unavailable image // cannot keep Carrd's page loader alive. The fallback glyph remains usable. const attachPortrait = () => { const portrait = document.createElement("img"); const removePortrait = () => { portrait.remove(); }; const timeout = window.setTimeout(removePortrait, 4000); portrait.alt = ""; portrait.width = 52; portrait.height = 52; portrait.decoding = "async"; portrait.addEventListener("load", () => { window.clearTimeout(timeout); if (por