From 9a5bba0110590c5f37c4da65c91355c76db9e2a2 Mon Sep 17 00:00:00 2001 From: Hassan Arslan Date: Sun, 14 Jun 2026 17:07:55 +0300 Subject: [PATCH] fix(seo+geo): push SEO to ~100 and add the AI-search (GEO) layer Round 2 after the 2026-06-14 audits. SEO was 89.9; GEO had strong plumbing but AI engines were quoting a stale crawl and missing the positioning. SEO (lifts the low scorers to ~100): - /a /b /c /d: unique titles (kill duplicate-) + Organization/WebSite/ SoftwareApplication schema; still canonical->home. - Legal/utility (policy, terms, contact-us, book, careers): WebPage / ContactPage schema in each layout. - /for/odoo-partners: FAQPage + site schema; meta description tightened to ~160. - Root layout: meta description tightened to ~150 (home + A/B variants inherit). GEO (AI-search readiness): - New lib/site-schema.ts + components/site/site-json-ld.tsx: one canonical, enriched Organization (founder Hassan Arslan, Cairo/EG, areaServed MENA, knowsLanguage en/ar, sales contactPoint) reused across home + variants. - Homepage: entity-defining FAQPage ("What is Knowcap?", "alternative to Otter/ Fireflies/Read AI?", Arabic support, who it's for) + Speakable schema. - /for/odoo-partners: conversion FAQPage (Odoo SH ticket, GitHub PR). - public/llms.txt + llms-full.txt: curated canonical positioning + the pages we want AI assistants to cite, to fix the stale-crawl identity problem. Verified: tsc --noEmit 0 errors; next build green; built HTML confirms enriched Organization (founder/Place/ContactPoint), home + for-odoo FAQPage, /a unique title + schema, policy WebPage, contact-us ContactPage; meta descriptions 110-170. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --- app/app/a/page.tsx | 16 +++- app/app/b/page.tsx | 16 +++- app/app/book/layout.tsx | 17 +++- app/app/c/page.tsx | 16 +++- app/app/careers/layout.tsx | 17 +++- app/app/contact-us/layout.tsx | 26 +++++- app/app/d/page.tsx | 16 +++- app/app/for/odoo-partners/page.tsx | 11 ++- app/app/layout.tsx | 2 +- app/app/page.tsx | 38 ++------- app/app/policy/layout.tsx | 17 +++- app/app/terms/layout.tsx | 17 +++- app/components/site/site-json-ld.tsx | 36 ++++++++ app/lib/site-schema.ts | 122 +++++++++++++++++++++++++++ app/public/llms-full.txt | 41 +++++++++ app/public/llms.txt | 28 ++++++ 16 files changed, 383 insertions(+), 53 deletions(-) create mode 100644 app/components/site/site-json-ld.tsx create mode 100644 app/lib/site-schema.ts create mode 100644 app/public/llms-full.txt create mode 100644 app/public/llms.txt diff --git a/app/app/a/page.tsx b/app/app/a/page.tsx index dbe92c8..1b266ca 100644 --- a/app/app/a/page.tsx +++ b/app/app/a/page.tsx @@ -1,12 +1,22 @@ import type { Metadata } from 'next' import VersionA from '@/components/version-a' +import SiteJsonLd from '@/components/site/site-json-ld' // A/B test variant — canonical to the homepage so Google consolidates ranking -// signals to / rather than treating these as duplicate homepages. -export const metadata: Metadata = { alternates: { canonical: 'https://knowcap.ai/' } } +// signals to / rather than treating these as duplicate homepages. Unique title +// avoids duplicate-<title> dilution; site entity schema for AI search. +export const metadata: Metadata = { + title: 'How Knowcap Works — Verified Meeting Intelligence for AI Agents', + alternates: { canonical: 'https://knowcap.ai/' }, +} // /a — Version A (control / mechanism-first), themed impeccable design. // Reachable directly for review; not part of the live / rotation. export default function PageA() { - return <VersionA /> + return ( + <> + <SiteJsonLd /> + <VersionA /> + </> + ) } diff --git a/app/app/b/page.tsx b/app/app/b/page.tsx index b5288cd..c27de77 100644 --- a/app/app/b/page.tsx +++ b/app/app/b/page.tsx @@ -1,12 +1,22 @@ import type { Metadata } from 'next' import VersionB from '@/components/version-b' +import SiteJsonLd from '@/components/site/site-json-ld' // A/B test variant — canonical to the homepage so Google consolidates ranking -// signals to / rather than treating these as duplicate homepages. -export const metadata: Metadata = { alternates: { canonical: 'https://knowcap.ai/' } } +// signals to / rather than treating these as duplicate homepages. Unique title +// avoids duplicate-<title> dilution; site entity schema for AI search. +export const metadata: Metadata = { + title: 'Stop Re-Explaining Meetings — Knowcap Acts on Verified Decisions', + alternates: { canonical: 'https://knowcap.ai/' }, +} // /b — Version B (outcome-first), themed impeccable design. // In the live / rotation (outcome arm of the B-vs-D copy test). export default function PageB() { - return <VersionB /> + return ( + <> + <SiteJsonLd /> + <VersionB /> + </> + ) } diff --git a/app/app/book/layout.tsx b/app/app/book/layout.tsx index f99fc9f..78072d4 100644 --- a/app/app/book/layout.tsx +++ b/app/app/book/layout.tsx @@ -7,6 +7,21 @@ export const metadata: Metadata = { alternates: { canonical: 'https://knowcap.ai/book' }, } +const JSONLD = { + '@context': 'https://schema.org', + '@type': 'WebPage', + name: 'Book a Knowcap Demo', + url: 'https://knowcap.ai/book', + about: 'Book a 20-minute Knowcap demo.', + isPartOf: { '@type': 'WebSite', name: 'Knowcap', url: 'https://knowcap.ai' }, + publisher: { '@type': 'Organization', name: 'Knowcap', url: 'https://knowcap.ai' }, +} + export default function BookLayout({ children }: { children: React.ReactNode }) { - return children + return ( + <> + <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(JSONLD) }} /> + {children} + </> + ) } diff --git a/app/app/c/page.tsx b/app/app/c/page.tsx index 961ca6c..ecefcd8 100644 --- a/app/app/c/page.tsx +++ b/app/app/c/page.tsx @@ -1,12 +1,22 @@ import type { Metadata } from 'next' import VersionC from '@/components/version-c' +import SiteJsonLd from '@/components/site/site-json-ld' // A/B test variant — canonical to the homepage so Google consolidates ranking -// signals to / rather than treating these as duplicate homepages. -export const metadata: Metadata = { alternates: { canonical: 'https://knowcap.ai/' } } +// signals to / rather than treating these as duplicate homepages. Unique title +// avoids duplicate-<title> dilution; site entity schema for AI search. +export const metadata: Metadata = { + title: 'Knowcap for Teams — Meeting Intelligence Agents Can Act On', + alternates: { canonical: 'https://knowcap.ai/' }, +} // /c — Version C (role-first), themed impeccable design. // Reachable directly for review; not part of the live / rotation. export default function PageC() { - return <VersionC /> + return ( + <> + <SiteJsonLd /> + <VersionC /> + </> + ) } diff --git a/app/app/careers/layout.tsx b/app/app/careers/layout.tsx index 35b9281..0911362 100644 --- a/app/app/careers/layout.tsx +++ b/app/app/careers/layout.tsx @@ -7,6 +7,21 @@ export const metadata: Metadata = { alternates: { canonical: 'https://knowcap.ai/careers' }, } +const JSONLD = { + '@context': 'https://schema.org', + '@type': 'WebPage', + name: 'Careers at Knowcap', + url: 'https://knowcap.ai/careers', + about: 'Open roles at Knowcap.', + isPartOf: { '@type': 'WebSite', name: 'Knowcap', url: 'https://knowcap.ai' }, + publisher: { '@type': 'Organization', name: 'Knowcap', url: 'https://knowcap.ai' }, +} + export default function CareersLayout({ children }: { children: React.ReactNode }) { - return children + return ( + <> + <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(JSONLD) }} /> + {children} + </> + ) } diff --git a/app/app/contact-us/layout.tsx b/app/app/contact-us/layout.tsx index 0d65204..a36eca3 100644 --- a/app/app/contact-us/layout.tsx +++ b/app/app/contact-us/layout.tsx @@ -7,6 +7,30 @@ export const metadata: Metadata = { alternates: { canonical: 'https://knowcap.ai/contact-us' }, } +const JSONLD = { + '@context': 'https://schema.org', + '@type': 'ContactPage', + name: 'Contact Knowcap', + url: 'https://knowcap.ai/contact-us', + isPartOf: { '@type': 'WebSite', name: 'Knowcap', url: 'https://knowcap.ai' }, + about: { + '@type': 'Organization', + name: 'Knowcap', + url: 'https://knowcap.ai', + contactPoint: { + '@type': 'ContactPoint', + contactType: 'sales', + email: 'hsa@knowcap.ai', + availableLanguage: ['English', 'Arabic'], + }, + }, +} + export default function ContactLayout({ children }: { children: React.ReactNode }) { - return children + return ( + <> + <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(JSONLD) }} /> + {children} + </> + ) } diff --git a/app/app/d/page.tsx b/app/app/d/page.tsx index 8635d2e..21d8971 100644 --- a/app/app/d/page.tsx +++ b/app/app/d/page.tsx @@ -1,12 +1,22 @@ import type { Metadata } from 'next' import VersionD from '@/components/version-d' +import SiteJsonLd from '@/components/site/site-json-ld' // A/B test variant — canonical to the homepage so Google consolidates ranking -// signals to / rather than treating these as duplicate homepages. -export const metadata: Metadata = { alternates: { canonical: 'https://knowcap.ai/' } } +// signals to / rather than treating these as duplicate homepages. Unique title +// avoids duplicate-<title> dilution; site entity schema for AI search. +export const metadata: Metadata = { + title: 'Watch Knowcap Turn a Meeting Into Action — Verified by a Human', + alternates: { canonical: 'https://knowcap.ai/' }, +} // /d — Version D (show-the-magic), themed impeccable design. // In the live / rotation (magic arm of the B-vs-D copy test). export default function PageD() { - return <VersionD /> + return ( + <> + <SiteJsonLd /> + <VersionD /> + </> + ) } diff --git a/app/app/for/odoo-partners/page.tsx b/app/app/for/odoo-partners/page.tsx index 34b24b2..bb26612 100644 --- a/app/app/for/odoo-partners/page.tsx +++ b/app/app/for/odoo-partners/page.tsx @@ -1,4 +1,6 @@ import VersionOdooPartners from '@/components/version-odoo-partners' +import SiteJsonLd from '@/components/site/site-json-ld' +import { ODOO_FAQ } from '@/lib/site-schema' // /for/odoo-partners — Phase 1 beachhead conversion page. // Audience: Odoo implementation partners (StratDev Meta-Ads target). @@ -6,10 +8,15 @@ import VersionOdooPartners from '@/components/version-odoo-partners' export const metadata = { title: 'Knowcap for Odoo implementation partners — From client meeting to Odoo SH PR before the meeting ends', description: - 'Your client mentions a bug or asks for a feature mid-meeting. Knowcap captures it, classifies it, and waits for one tap. Then an Odoo SH ticket opens, a GitHub PR appears, and your tracker advances — before the call wraps.', + 'Your client mentions a bug mid-meeting. Knowcap captures it, waits for one human tap, then opens an Odoo SH ticket and drafts a GitHub PR — before the call ends.', alternates: { canonical: 'https://knowcap.ai/for/odoo-partners' }, } export default function PageForOdooPartners() { - return <VersionOdooPartners /> + return ( + <> + <SiteJsonLd faqs={ODOO_FAQ} /> + <VersionOdooPartners /> + </> + ) } diff --git a/app/app/layout.tsx b/app/app/layout.tsx index 4dda6e6..fe8843d 100644 --- a/app/app/layout.tsx +++ b/app/app/layout.tsx @@ -14,7 +14,7 @@ const ebGaramond = EB_Garamond({ subsets: ['latin'], variable: '--font-serif' }) export const metadata: Metadata = { metadataBase: new URL('https://knowcap.ai'), title: 'Knowcap — The Trust Layer for AI Agents', - description: 'Turn human claims into evidence your AI agents can learn from. Capture meetings, messages, and recordings. Promote the durable parts to evidence. Let agents act on what\'s verified.', + description: 'The trust layer for AI agents. Capture meetings, messages, and recordings; a named human verifies each claim; agents act only on what\'s confirmed.', icons: { icon: '/favicon.ico', }, diff --git a/app/app/page.tsx b/app/app/page.tsx index 97df1f5..f35db81 100644 --- a/app/app/page.tsx +++ b/app/app/page.tsx @@ -1,6 +1,8 @@ import HomeCommitment from '@/components/home-commitment' import { getAllPosts } from '@/lib/blog' import type { Metadata } from 'next' +import SiteJsonLd from '@/components/site/site-json-ld' +import { HOME_FAQ } from '@/lib/site-schema' // Homepage — Commitment Ledger edition (full replacement, 2026-06-10). // The B-vs-D middleware rotation is retired; /a /b /c /d remain reachable @@ -16,35 +18,6 @@ export const metadata: Metadata = { }, } -// Organization + WebSite + SoftwareApplication schema for the homepage — -// gives crawlers and AI search the brand entity, site identity, and product -// facts that were missing before the 2026-06-14 SEO audit. -const HOME_JSON_LD = [ - { - '@context': 'https://schema.org', - '@type': 'Organization', - name: 'Knowcap', - url: 'https://knowcap.ai', - logo: 'https://knowcap.ai/knowcap-logo.png', - description: 'The trust layer for AI agents — human-verified meeting and message intelligence.', - }, - { - '@context': 'https://schema.org', - '@type': 'WebSite', - name: 'Knowcap', - url: 'https://knowcap.ai', - }, - { - '@context': 'https://schema.org', - '@type': 'SoftwareApplication', - name: 'Knowcap', - applicationCategory: 'BusinessApplication', - operatingSystem: 'Web', - url: 'https://knowcap.ai', - offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' }, - }, -] - export default function Home() { const recentPosts = getAllPosts() .slice(0, 3) @@ -57,10 +30,9 @@ export default function Home() { })) return ( <> - <script - type="application/ld+json" - dangerouslySetInnerHTML={{ __html: JSON.stringify(HOME_JSON_LD) }} - /> + {/* Organization + WebSite + SoftwareApplication + FAQ + Speakable — + the entity, product facts, and citable Q&A that AI search lifts. */} + <SiteJsonLd faqs={HOME_FAQ} speakable /> <HomeCommitment recentPosts={recentPosts} /> </> ) diff --git a/app/app/policy/layout.tsx b/app/app/policy/layout.tsx index 2da43e9..46dc74d 100644 --- a/app/app/policy/layout.tsx +++ b/app/app/policy/layout.tsx @@ -7,6 +7,21 @@ export const metadata: Metadata = { alternates: { canonical: 'https://knowcap.ai/policy' }, } +const JSONLD = { + '@context': 'https://schema.org', + '@type': 'WebPage', + name: 'Privacy Policy — Knowcap', + url: 'https://knowcap.ai/policy', + about: 'How Knowcap collects, uses, and protects your data.', + isPartOf: { '@type': 'WebSite', name: 'Knowcap', url: 'https://knowcap.ai' }, + publisher: { '@type': 'Organization', name: 'Knowcap', url: 'https://knowcap.ai' }, +} + export default function PolicyLayout({ children }: { children: React.ReactNode }) { - return children + return ( + <> + <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(JSONLD) }} /> + {children} + </> + ) } diff --git a/app/app/terms/layout.tsx b/app/app/terms/layout.tsx index 51920fb..f2f443e 100644 --- a/app/app/terms/layout.tsx +++ b/app/app/terms/layout.tsx @@ -7,6 +7,21 @@ export const metadata: Metadata = { alternates: { canonical: 'https://knowcap.ai/terms' }, } +const JSONLD = { + '@context': 'https://schema.org', + '@type': 'WebPage', + name: 'Terms of Service — Knowcap', + url: 'https://knowcap.ai/terms', + about: 'The terms that govern your use of Knowcap.', + isPartOf: { '@type': 'WebSite', name: 'Knowcap', url: 'https://knowcap.ai' }, + publisher: { '@type': 'Organization', name: 'Knowcap', url: 'https://knowcap.ai' }, +} + export default function TermsLayout({ children }: { children: React.ReactNode }) { - return children + return ( + <> + <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(JSONLD) }} /> + {children} + </> + ) } diff --git a/app/components/site/site-json-ld.tsx b/app/components/site/site-json-ld.tsx new file mode 100644 index 0000000..19147c4 --- /dev/null +++ b/app/components/site/site-json-ld.tsx @@ -0,0 +1,36 @@ +import { + ORGANIZATION_JSONLD, + WEBSITE_JSONLD, + SOFTWAREAPP_JSONLD, + SPEAKABLE_JSONLD, + faqJsonLd, + type Faq, +} from '@/lib/site-schema' + +/** + * Renders the site-wide entity JSON-LD (Organization + WebSite + + * SoftwareApplication), optionally with FAQPage and Speakable blocks. + * One script tag, server-rendered into the initial HTML where AI crawlers read it. + */ +export default function SiteJsonLd({ + faqs, + speakable = false, +}: { + faqs?: Faq[] + speakable?: boolean +}) { + const blocks: Record<string, unknown>[] = [ + ORGANIZATION_JSONLD, + WEBSITE_JSONLD, + SOFTWAREAPP_JSONLD, + ] + if (speakable) blocks.push(SPEAKABLE_JSONLD) + if (faqs && faqs.length > 0) blocks.push(faqJsonLd(faqs)) + + return ( + <script + type="application/ld+json" + dangerouslySetInnerHTML={{ __html: JSON.stringify(blocks) }} + /> + ) +} diff --git a/app/lib/site-schema.ts b/app/lib/site-schema.ts new file mode 100644 index 0000000..94273be --- /dev/null +++ b/app/lib/site-schema.ts @@ -0,0 +1,122 @@ +/** + * Site-wide JSON-LD building blocks (GEO / AI-search layer). + * + * Centralizes the Knowcap entity so every surface emits a consistent, + * disambiguated Organization — the 2026-06-14 GEO audit found AI engines + * confusing Knowcap with unrelated "Knowcap" entities and quoting a stale + * product definition. Founder, founding location, area served, languages, + * and a contact point pin the entity down for AI knowledge graphs. + */ + +export type Faq = { q: string; a: string } + +export const ORGANIZATION_JSONLD = { + '@context': 'https://schema.org', + '@type': 'Organization', + name: 'Knowcap', + url: 'https://knowcap.ai', + logo: 'https://knowcap.ai/knowcap-logo.png', + description: + 'Knowcap is verified work intelligence — the trust layer for AI agents. It captures meetings, messages, and recordings, has a named human confirm each extracted decision, task, and risk, then lets AI agents act only on what is verified.', + founder: { '@type': 'Person', name: 'Hassan Arslan' }, + foundingLocation: { + '@type': 'Place', + address: { '@type': 'PostalAddress', addressLocality: 'Cairo', addressCountry: 'EG' }, + }, + areaServed: ['Middle East', 'North Africa', 'MENA'], + knowsLanguage: ['en', 'ar'], + contactPoint: { + '@type': 'ContactPoint', + contactType: 'sales', + email: 'hsa@knowcap.ai', + areaServed: 'MENA', + availableLanguage: ['English', 'Arabic'], + }, +} + +export const WEBSITE_JSONLD = { + '@context': 'https://schema.org', + '@type': 'WebSite', + name: 'Knowcap', + url: 'https://knowcap.ai', + inLanguage: 'en', + publisher: { '@type': 'Organization', name: 'Knowcap', url: 'https://knowcap.ai' }, +} + +export const SOFTWAREAPP_JSONLD = { + '@context': 'https://schema.org', + '@type': 'SoftwareApplication', + name: 'Knowcap', + applicationCategory: 'BusinessApplication', + applicationSubCategory: 'AI meeting assistant', + operatingSystem: 'Web', + url: 'https://knowcap.ai', + description: + 'AI meeting and message intelligence with a human verification step and agents that act on confirmed facts — opening Odoo tickets, drafting GitHub PRs, and sending follow-ups. Multilingual (Arabic/English), built for MENA teams.', + featureList: [ + 'Capture meetings, messages, and recordings', + 'Human verification of every extracted claim', + 'AI agents act only on confirmed facts', + 'Arabic/English mid-meeting code-switching', + 'Odoo ticket and GitHub PR creation', + ], + offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' }, +} + +/** Speakable hints for voice / AI-summary surfaces. */ +export const SPEAKABLE_JSONLD = { + '@context': 'https://schema.org', + '@type': 'WebPage', + url: 'https://knowcap.ai', + name: 'Knowcap — The Trust Layer for AI Agents', + speakable: { '@type': 'SpeakableSpecification', cssSelector: ['h1', 'h2'] }, +} + +export function faqJsonLd(faqs: Faq[]) { + return { + '@context': 'https://schema.org', + '@type': 'FAQPage', + mainEntity: faqs.map((f) => ({ + '@type': 'Question', + name: f.q, + acceptedAnswer: { '@type': 'Answer', text: f.a }, + })), + } +} + +/** Entity-defining FAQ for the homepage — the exact questions AI assistants + * get asked about Knowcap, answered in self-contained, citable sentences. */ +export const HOME_FAQ: Faq[] = [ + { + q: 'What is Knowcap?', + a: 'Knowcap is verified work intelligence — the trust layer for AI agents. It captures meetings, messages, and recordings, has a named human confirm each extracted decision, task, or risk, then lets AI agents act only on the verified facts.', + }, + { + q: 'Is Knowcap an alternative to Otter, Fireflies, or Read AI?', + a: 'Yes. Those tools transcribe and summarize meetings. Knowcap adds a human verification step and AI agents that act on confirmed facts — opening Odoo tickets, drafting GitHub PRs, and sending follow-ups. It also handles Arabic/English mid-meeting code-switching, which they do not.', + }, + { + q: 'Does Knowcap support Arabic and multilingual meetings?', + a: 'Yes. Knowcap detects language per utterance, so meetings that switch between Arabic and English (or other languages) mid-sentence are captured intact. It is built for MENA teams.', + }, + { + q: 'Who is Knowcap for?', + a: 'MENA SMEs, Odoo implementation partners, agencies, and audit firms that need verified, auditable records of decisions before AI agents act on them.', + }, +] + +/** Conversion-page FAQ for /for/odoo-partners. */ +export const ODOO_FAQ: Faq[] = [ + { + q: 'How does Knowcap help Odoo implementation partners?', + a: 'Knowcap captures client meetings, extracts every scope decision, bug, and feature request, and waits for one human tap. On confirmation it can open an Odoo SH ticket, draft a GitHub PR, and advance your tracker — turning meeting talk into traceable work before the call ends.', + }, + { + q: 'Can Knowcap open an Odoo SH ticket from a meeting?', + a: 'Yes. When a human confirms a captured claim, Knowcap can create the matching Odoo SH ticket automatically, linked back to the exact timestamp and speaker quote in the recording.', + }, + { + q: 'Does Knowcap create GitHub PRs from client calls?', + a: 'Yes. A confirmed bug or change request can trigger a GitHub PR, so the fix is staged for review with the client conversation as its provenance.', + }, +] diff --git a/app/public/llms-full.txt b/app/public/llms-full.txt new file mode 100644 index 0000000..db1bd7d --- /dev/null +++ b/app/public/llms-full.txt @@ -0,0 +1,41 @@ +# Knowcap — full reference for AI assistants + +> Knowcap is verified work intelligence — the trust layer for AI agents. It captures meetings, messages, and recordings, has a named human confirm each extracted decision, task, and risk, then lets AI agents act only on what is verified. + +## One-paragraph definition + +Knowcap captures the work a team already does across meetings, messages, and recordings (Google Meet, calls, screen recordings, documents, links — with WhatsApp, email, and Slack on the way). It extracts decisions, tasks, and risks as claim cards, each pinned to a timestamp and speaker quote. A named human confirms or rejects each claim with one tap. Only confirmed claims feed AI agents that take real-world action: opening Odoo SH tickets, drafting GitHub PRs, and sending follow-ups. Every agent action is traceable back to the human-confirmed claim and its source — the audit trail is the product. + +## Who Knowcap is for + +MENA SMEs, Odoo implementation partners, agencies, and audit firms that need verified, auditable records of what was decided before AI agents act on it. It is built for bilingual reality: Arabic/English code-switching mid-meeting is captured per utterance, not forced into one language per recording. + +## How Knowcap compares + +Tools like Otter.ai, Fireflies.ai, Read AI, Fellow, and Granola transcribe meetings and generate AI summaries, and several auto-push action items into your stack with no human gate. Knowcap differs in three ways: (1) a human verification step before any agent acts; (2) agents that take real-world action on confirmed facts (Odoo tickets, GitHub PRs, follow-ups), not just notes; (3) per-utterance multilingual handling and a full audit trail, with MENA data-residency options. + +## Frequently asked questions + +**What is Knowcap?** +Knowcap is verified work intelligence — the trust layer for AI agents. It captures meetings, messages, and recordings, has a named human confirm each extracted decision, task, or risk, then lets AI agents act only on the verified facts. + +**Is Knowcap an alternative to Otter, Fireflies, or Read AI?** +Yes. Those tools transcribe and summarize meetings. Knowcap adds a human verification step and AI agents that act on confirmed facts — opening Odoo tickets, drafting GitHub PRs, and sending follow-ups. It also handles Arabic/English mid-meeting code-switching, which they do not. + +**Does Knowcap support Arabic and multilingual meetings?** +Yes. Knowcap detects language per utterance, so meetings that switch between Arabic and English (or other languages) mid-sentence are captured intact. It is built for MENA teams. + +**How does Knowcap help Odoo implementation partners?** +Knowcap captures client meetings, extracts every scope decision, bug, and feature request, and waits for one human tap. On confirmation it can open an Odoo SH ticket, draft a GitHub PR, and advance your tracker — turning meeting talk into traceable work before the call ends. + +**Who founded Knowcap and where is it based?** +Knowcap was founded by Hassan Arslan and is based in Cairo, Egypt, serving the Middle East & North Africa (MENA). + +## Links + +- Home: https://knowcap.ai/ +- For Odoo partners: https://knowcap.ai/for/odoo-partners +- Comparisons: https://knowcap.ai/compare/knowcap-vs-otter , /knowcap-vs-read-ai , /knowcap-vs-fireflies , /knowcap-vs-fellow , /knowcap-vs-granola +- Blog: https://knowcap.ai/blog +- App / free signup: https://app.knowcap.ai/register +- Contact: hsa@knowcap.ai diff --git a/app/public/llms.txt b/app/public/llms.txt new file mode 100644 index 0000000..367a9d8 --- /dev/null +++ b/app/public/llms.txt @@ -0,0 +1,28 @@ +# Knowcap + +> Knowcap is verified work intelligence — the trust layer for AI agents. It captures meetings, messages, and recordings, has a named human confirm each extracted decision, task, and risk, then lets AI agents act only on what is verified (opening Odoo tickets, drafting GitHub PRs, sending follow-ups). Built for MENA teams, with Arabic/English mid-meeting code-switching. + +## What Knowcap is + +- **Category:** AI meeting & message intelligence with a human verification layer and agent actions. +- **Core loop:** Capture → a named human confirms each claim → AI agents act only on confirmed facts. +- **Differentiator vs. Otter, Fireflies, Read AI, Fellow, Granola:** those transcribe and summarize; Knowcap adds human verification and agents that take real-world action, plus per-utterance Arabic/English handling and a full audit trail. +- **Who it's for:** MENA SMEs, Odoo implementation partners, agencies, and audit firms that need verified, auditable records before agents act. +- **Founder:** Hassan Arslan. **Based in:** Cairo, Egypt. **Serves:** Middle East & North Africa (MENA). +- **Pricing:** free tier available at https://app.knowcap.ai/register. + +## Key pages + +- [Home](https://knowcap.ai/): product overview and the trust-layer thesis. +- [For Odoo partners](https://knowcap.ai/for/odoo-partners): meeting → Odoo SH ticket + GitHub PR before the call ends. +- [Knowcap vs Otter.ai](https://knowcap.ai/compare/knowcap-vs-otter) +- [Knowcap vs Read AI](https://knowcap.ai/compare/knowcap-vs-read-ai) +- [Knowcap vs Fireflies](https://knowcap.ai/compare/knowcap-vs-fireflies) +- [Knowcap vs Fellow](https://knowcap.ai/compare/knowcap-vs-fellow) +- [Knowcap vs Granola](https://knowcap.ai/compare/knowcap-vs-granola) +- [Blog](https://knowcap.ai/blog): case studies, comparisons, and field notes for MENA teams. + +## Contact + +- Sales: hsa@knowcap.ai +- App: https://app.knowcap.ai