PageSourceSearch

https://timmjohnsonai-hub.base44.app/contact

html timmjohnsonai-hub.base44.app collected 2026-10-03 03:09:17 UTC 13,703 bytes, 302 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3 <head>
4  
4<script>
5   (function () {
6  var proto = XMLHttpRequest.prototype;
7  var open = proto.open, setRequestHeader = proto.setRequestHeader, send = proto.send;
8  var TOKEN_KEY = 'base44_access_token';
9  var storedTokenHeader = function () {
10    try { return 'Bearer ' + localStorage.getItem(TOKEN_KEY); } catch (e) { return null; }
11  };
12  var forgetStoredToken = function () {
13    try { localStorage.removeItem(TOKEN_KEY); localStorage.removeItem('token'); } catch (e) {}
14  };
15
16  proto.open = function (method, url) {
17    this.__b44IsAuthCheck = /\/entities\/User\/me(\?|$)/.test(url);
18    return open.apply(this, arguments);
19  };
20
21  proto.setRequestHeader = function (name, value) {
22    if (this.__b44IsAuthCheck && name.toLowerCase() === 'authorization' && value === storedTokenHeader()) {
23      this.__b44SentToken = value;
24    }
25    return setRequestHeader.call(this, name, value);
26  };
27
28  proto.send = function () {
29    this.addEventListener('loadend', function () {
30      var rejectedTokenStillStored = this.status === 401 && this.__b44SentToken === storedTokenHeader();
31      if (rejectedTokenStillStored) forgetStoredToken();
32    });
33    return send.apply(this, arguments);
34  };
35})();
36  </script>
36
37  <!-- Google tag (gtag.js) -->
vendor: 69 bytes, lines 37-38
37
38  <script async="" src="https://www.googletagmanager.com/gtag/js?id=
38AW-18038353486
vendor: 17 bytes, lines 38-40
38">
39  </script>
40  
40<script>
41   
vendor: 146 bytes, lines 41-45
41window.dataLayer = window.dataLayer || [];
42      function gtag(){dataLayer.push(arguments);}
43      gtag('js', new Date());
44
45      gtag('config', '
45AW-18038353486
vendor: 6 bytes, lines 45-46
45');
46  
46</script>
46
47  <meta charset="utf-8"/>
48  <link href="https://media.base44.com/images/public/69b7a5b0348d7ba8d7b19757/e6c43fb9c_50d05f20e_generated_image.png" rel="icon" type="image/svg+xml"/>
49  <meta content="width=device-width, initial-scale=1.0" name="viewport"/>
50  <link href="/manifest.json" rel="manifest"/>
51  <title>
52   Contact | Timm Johnson AI
53  </title>
54  <meta content="Contact on Timm Johnson AI . A sophisticated showcase website for a rural-focused AI consulting practice, fea." name="description"/>
55  <link href="https://fonts.googleapis.com" rel="preconnect"/>
56  <link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
57  <link href="https://fonts.googleapis.com/css2?family=Caveat:wght@400;600&amp;display=swap" rel="stylesheet"/>
58  
58<script crossorigin="" src="/assets/index-BpnTALHm.js" type="module">
59  </script>
59
60  <link crossorigin="" href="/assets/index-CskPeGL6.css" rel="stylesheet"/>
61  
61<script type="module">
62   if (window.self === window.top) {
63  let lastPath = "";
64  function getPageNameFromPath(path) {
65    const segments = path.split("/").filter(Boolean);
66    return segments[0] || null;
67  }
68  function trackPageView() {
69    const path = window.location.pathname;
70    if (path === lastPath) return;
71    lastPath = path;
72    const pageName = getPageNameFromPath(path) || "home";
73    const appId = "69b7a5b0348d7ba8d7b19757";
74    if (!appId) return;
75    fetch(`/api/app-logs/${appId}/log-user-in-app/${pageName}`, {
76      method: "POST",
77    }).catch(() => {});
78  }
79  const originalPushState = history.pushState.bind(history);
80  history.pushState = function (...args) {
81    originalPushState(...args);
82    trackPageView();
83  };
84  const originalReplaceState = history.replaceState.bind(history);
85  history.replaceState = function (...args) {
86    originalReplaceState(...args);
87    trackPageView();
88  };
89  window.addEventListener("popstate", trackPageView);
90  trackPageView();
91}
92  </script>
92
93  <meta content="Contact | Timm Johnson AI " property="og:title"/>
94  <meta content="Contact on Timm Johnson AI . A sophisticated showcase website for a rural-focused AI consulting practice, fea." property="og:description"/>
95  <meta content="https://media.base44.com/images/public/69b7a5b0348d7ba8d7b19757/e6c43fb9c_50d05f20e_generated_image.png/v1/fill/w_1200,h_630/e6c43fb9c_50d05f20e_generated_image.png" property="og:image"/>
96  <meta content="https://timmjohnsonai-hub.base44.app/contact" property="og:url"/>
97  <meta content="website" property="og:type"/>
98  <meta content="Dakota-Intelligence" property="og:site_name"/>
99  <meta content="Contact | Timm Johnson AI " name="twitter:title"/>
100  <meta content="Contact on Timm Johnson AI . A sophisticated showcase website for a rural-focused AI consulting practice, fea." name="twitter:description"/>
101  <meta content="https://media.base44.com/images/public/69b7a5b0348d7ba8d7b19757/e6c43fb9c_50d05f20e_generated_image.png/v1/fill/w_1200,h_630/e6c43fb9c_50d05f20e_generated_image.png" name="twitter:image"/>
102  <meta content="summary_large_image" name="twitter:card"/>
103  <meta content="https://timmjohnsonai-hub.base44.app/contact" name="twitter:url"/>
104  
104<script>
105   (function () {
106  var titles = {"/": "Dakota-Intelligence", "/ai-readiness-survey": "AIReadiness Survey | Timm Johnson AI ", "/aireadinesssurvey": "AIReadiness Survey | Timm Johnson AI ", "/scheduleconsultation": "Schedule Consultation | Timm Johnson AI ", "/schedule-consultation": "Schedule Consultation | Timm Johnson AI ", "/sandbox": "Sandbox | Timm Johnson AI ", "/legal": "Legal | Timm Johnson AI ", "/about": "About | Timm Johnson AI ", "/contact": "Contact | Timm Johnson AI ", "/ai-consulting": "AIConsulting | Timm Johnson AI ", "/sentinel-ai": "Sentinel AI | Dakota-Intelligence", "/reviews": "Reviews | Dakota-Intelligence", "/blog": "Blog | Dakota-Intelligence", "/home": "Dakota-Intelligence"};
107  // PascalCase boundaries -> "-", mirroring _PASCAL_BOUNDARY_RE without lookbehind
108  // (old Safari fails to PARSE a lookbehind, taking the whole script down).
109  var dashed = function (s) {
110    return s.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2");
111  };
112  var decode = function (s) {
113    // A %2F inside ONE segment must not become a structural separator: /blog/foo%2Fbar is a
114    // dynamic slug, and letting it split would match a static /blog/foo/bar and write ITS title.
115    try { var d = decodeURIComponent(s); return d.indexOf("/") < 0 ? d : s; } catch (e) { return s; }
116  };
117  var segments = function (path) { return path.split("/").filter(Boolean).map(decode); };
118  var norm = function (path) {
119    var parts = segments(path).map(function (s) { return dashed(s).toLowerCase(); });
120    return parts.length ? "/" + parts.join("/") : "/";
121  };
122  var lastPath = location.pathname, written = document.title, on = true;
123  var sync = function () {
124    // Path only: a hash/query change is the same page, and the SDK strips its own auth
125    // params with replaceState -- neither must clobber a server-rendered title in place.
126    if (!on || location.pathname === lastPath) return;
127    lastPath = location.pathname;
128    if (document.title !== written) { on = false; return; }
129    // Write ONLY a title the map proves. An unmapped path is a dynamic route (/blog/:slug) the
130    // map cannot carry, and writing a placeholder there is destructive, not merely vague: the
131    // prerender worker runs no setUserAgent, so its capture browser reads as human and executes
132    // this script, and coordinator.js's settle wait explicitly tolerates a full navigation --
133    // a redirect landing on an unmapped path would bake the placeholder into the stored
134    // snapshot. Leaving the title alone degrades to today's behavior instead.
135    // Exact lookup only. A dash-stripped retry here would let a genuinely different /set-up
136    // claim /setup: the map carries a dash-free key only where a PascalCase boundary put the
137    // dashes there, and the client cannot tell the two apart. The map emits every reachable
138    // shape per segment instead (_client_url_variants).
139    var title = titles[norm(location.pathname)];
140    if (title === undefined) return;
141    document.title = title;
142    // Re-read: the setter stores verbatim but the getter strips and collapses whitespace, so
143    // keeping the assigned string would make the next sync() read our own write as the app's.
144    written = document.title;
145  };
146  var wrap = function (fn) {
147    // The history entry is already pushed by the time sync() runs, so a throw here would
148    // surface inside the host app's router and break navigation. This is injected into apps
149    // we cannot test, so it swallows rather than trusting the trace.
150    return function () {
151      var r = fn.apply(this, arguments);
152      try { sync(); } catch (e) {}
153      return r;
154    };
155  };
156  history.pushState = wrap(history.pushState);
157  history.replaceState = wrap(history.replaceState);
158  window.addEventListener("popstate", sync);
159})();
160  </script>
160
161  <meta content="yes" name="mobile-web-app-capable"/>
162  <meta content="black" name="apple-mobile-web-app-status-bar-style"/>
163  <meta content="Dakota-Intelligence" name="apple-mobile-web-app-title"/>
164  <link href="https://timmjohnsonai-hub.base44.app/contact" rel="canonical"/>
165  
165<script data-seo-source="builder" type="application/ld+json">
166   {"name": "Timm Johnson AI ", "@context": "https://schema.org", "@type": "WebSite", "url": "https://dakota-intelligence.com"}
167  </script>
167
168  
168<script data-seo-source="builder" type="application/ld+json">
169   {"name": "Timm Johnson AI ", "logo": "https://media.base44.com/images/public/69b7a5b0348d7ba8d7b19757/e6c43fb9c_50d05f20e_generated_image.png", "@context": "https://schema.org", "@type": "Organization", "url": "https://dakota-intelligence.com"}
170  </script>
170
171  
171<script data-seo-source="builder" type="application/ld+json">
172   {"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://timmjohnsonai-hub.base44.app/"}, {"@type": "ListItem", "position": 2, "name": "Contact | Timm Johnson AI ", "item": "https://timmjohnsonai-hub.base44.app/contact"}]}
173  </script>
173
174  <meta content="noindex, follow" name="robots"/>
175 </head>
176 <body>
177  
177<script>
178   window.__RECAPTCHA_SITE_KEY__ = "6LfD0-osAAAAMbODXWOwBgzta85jVepePgiUGo8";
179  </script>
179
180  <div id="root">
181   <div data-seo-source="builder" id="seo-snapshot" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;">
182    <main>
183     <header>
184      <h1>
185       Contact | Timm Johnson AI
186      </h1>
187      <p>
188       Contact on Timm Johnson AI . A sophisticated showcase website for a rural-focused AI consulting practice, fea.
189      </p>
190     </header>
191     <nav aria-label="Pages">
192      <h2>
193       Pages
194      </h2>
195      <ul>
196       <li>
197        <a href="/">
198         Home
199        </a>
200       </li>
201       <li>
202        <a href="/AIReadinessSurvey">
203         AI Readiness Survey
204        </a>
205        — AIReadiness Survey on Timm Johnson AI . A sophisticated showcase website for a rural-focused AI consulting practice, fea.
206       </li>
207       <li>
208        <a href="/ScheduleConsultation">
209         Schedule Consultation
210        </a>
211        — Schedule Consultation on Timm Johnson AI . A sophisticated showcase website for a rural-focused AI consulting practice, fea.
212       </li>
213       <li>
214        <a href="/Sandbox">
215         Sandbox
216        </a>
217        — Sandbox on Timm Johnson AI . A sophisticated showcase website for a rural-focused AI consulting practice, fea.
218       </li>
219       <li>
220        <a href="/legal">
221         Legal
222        </a>
223        — Legal on Timm Johnson AI . A sophisticated showcase website for a rural-focused AI consulting practice, fea.
224       </li>
225       <li>
226        <a href="/about">
227         About
228        </a>
229        — About on Timm Johnson AI . A sophisticated showcase website for a rural-focused AI consulting practice, fea.
230       </li>
231       <li>
232        <a href="/contact">
233         Contact
234        </a>
235        — Contact on Timm Johnson AI . A sophisticated showcase website for a rural-focused AI consulting practice, fea.
236       </li>
237       <li>
238        <a href="/ai-consulting">
239         AI Consulting
240        </a>
241        — AIConsulting on Timm Johnson AI . A sophisticated showcase website for a rural-focused AI consulting practice, fea.
242       </li>
243       <li>
244        <a href="/sentinel-ai">
245         Sentinel AI
246        </a>
247        — Sentinel AI on Dakota-Intelligence. Dakota-Intelligence manages 2 data types including ai readinesses.
248       </li>
249       <li>
250        <a href="/reviews">
251         Reviews
252        </a>
253        — Reviews on Dakota-Intelligence. Dakota-Intelligence manages 2 data types including ai readinesses.
254       </li>
255       <li>
256        <a href="/blog">
257         Blog
258        </a>
259        — Blog on Dakota-Intelligence. Dakota-Intelligence manages 2 data types including ai readinesses.
260       </li>
261      </ul>
262     </nav>
263    </main>
264   </div>
265  </div>
266  <!-- Booker: Dakota Intelligence™ AI Tour Guide (ElevenLabs) -->
267  <div id="booker-wrapper" style="
268      position: fixed;
269      bottom: 20px;
270      left: 20px;
271      z-index: 9999;
272      display: flex;
273      flex-direction: column;
274      align-items: flex-end;
275      gap: 8px;
276      pointer-events: none;
277    ">
278   <div style="
279        background: linear-gradient(135deg, #7F77DD, #0d9488);
280        color: white;
281        font-family: Arial, sans-serif;
282        font-size: 12px;
283        font-weight: 700;
284        letter-spacing: 0.5px;
285        padding: 5px 11px;
286        border-radius: 20px;
287        box-shadow: 0 2px 10px rgba(127,119,221,0.5);
288        white-space: nowrap;
289        pointer-events: none;
290        opacity: 0.92;
291      ">
292    🤖 Ask Booker
293   </div>
294   <div style="pointer-events: auto;">
295    <elevenlabs-convai agent-id="agent_3901knf82easf66rrcjwfxppr13h" allow="microphone">
296    </elevenlabs-convai>
297   </div>
298  </div>
299  
299<script async="" src="https://unpkg.com/@elevenlabs/convai-widget-embed" type="text/javascript">
300  </script>
300
301 </body>
302</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.