Repository Public
1/*2 groupe-ka.ts3 spboucher.ai Web4 Author: Simon-Pierre Boucher5 Mail: contact@spboucher.ai6*/78export interface KaApp {9 slug: string;10 /** Official brand icon (favicon.svg from the ka-ui design system). */11 icon: string;12 /** Display wordmark, e.g. "Lou·Ka" */13 name: string;14 domain: string;15 url: string;16 tagline: string;17 description: string;18 /** Brand accent color of the platform (hex). */19 accent: string;20 category: KaCategory;21}2223export type KaCategory =24 | "Housing"25 | "Mobility & Employment"26 | "Consumer"27 | "Culture & Discovery"28 | "Data & Infrastructure"29 | "AI Explorer Bots";3031export const kaCategories: KaCategory[] = [32 "Housing",33 "Mobility & Employment",34 "Consumer",35 "Culture & Discovery",36 "Data & Infrastructure",37 "AI Explorer Bots",38];3940/** The Groupe Ka ecosystem hub. */41export const kaHub = {42 name: "Groupe Ka",43 domain: "www.groupe-ka.com",44 url: "https://www.groupe-ka.com",45 icon: "/icons/ka/groupe-ka.svg",46 tagline: "The Quebec data ecosystem",47 description:48 "Groupe Ka is an ecosystem of data platforms built for Quebec (and now the rest of Canada): each site aggregates a whole market — rentals, properties, cars, jobs, grocery prices, restaurants, events, creators — from hundreds of sources, enriches it with analytics, and publishes it openly. A shared design system (ka-ui), a central identity (KA ID single sign-on with cross-site favorites), a unified data API, native iOS apps, and autonomous guardian agents keep the fourteen platforms consistent and alive.",49 accent: "#141814",50};5152/** Every public platform of the Groupe Ka ecosystem. */53export const kaApps: KaApp[] = [54 {55 slug: "lou-ka",56 icon: "/icons/ka/lou-ka.svg",57 name: "Lou·Ka",58 domain: "www.lou-ka.com",59 url: "https://www.lou-ka.com",60 tagline: "Every apartment for rent in Quebec",61 description:62 "The rental aggregator for Quebec — thousands of live listings collected from 190+ sources, with a unified map + list search, market statistics, rent-registry and neighbourhood data layers (flood zones, crime, air quality, transit), and KA Scores for every listing.",63 accent: "#ff6a00",64 category: "Housing",65 },66 {67 slug: "immo-ka",68 icon: "/icons/ka/immo-ka.svg",69 name: "Immo·Ka",70 domain: "www.immo-ka.com",71 url: "https://www.immo-ka.com",72 tagline: "Every property for sale in Quebec",73 description:74 "Properties for sale across Quebec, aggregated from brokers, builders and listing platforms, then passed through a data-quality pipeline — enriched detail pages with price analysis, comparables, mortgage tools and the same neighbourhood layers as Lou·Ka.",75 accent: "#e23744",76 category: "Housing",77 },78 {79 slug: "vrai-prix",80 icon: "/icons/ka/vrai-prix.svg",81 name: "Vrai-Prix",82 domain: "www.vrai-prix.com",83 url: "https://www.vrai-prix.com",84 tagline: "The real value of every property",85 description:86 "A property-valuation engine covering 3.7M Quebec properties: address search, estimates with P10–P90 ranges, dollar-adjusted comparables, map exploration, and standard or bank-grade PDF valuation reports.",87 accent: "#ff5148",88 category: "Housing",89 },90 {91 slug: "house-ka",92 icon: "/icons/ka/house-ka.svg",93 name: "House·Ka",94 domain: "www.house-ka.com",95 url: "https://www.house-ka.com",96 tagline: "Homes for sale — Canada outside Quebec",97 description:98 "The English-language counterpart to Immo·Ka for the rest of Canada — 200,000+ homes for sale aggregated nationally, with full detail pages, market analytics and map search.",99 accent: "#0f6b4f",100 category: "Housing",101 },102 {103 slug: "rent-ka",104 icon: "/icons/ka/rent-ka.svg",105 name: "Rent·Ka",106 domain: "www.rent-ka.com",107 url: "https://www.rent-ka.com",108 tagline: "Residential rentals — Canada outside Quebec",109 description:110 "The English-language counterpart to Lou·Ka for the rest of Canada — rental listings published across eight provinces, collected through 680 connectors covering property managers and rental platforms.",111 accent: "#2456e6",112 category: "Housing",113 },114 {115 slug: "auto-ka",116 icon: "/icons/ka/auto-ka.svg",117 name: "Auto·Ka",118 domain: "www.auto-ka.com",119 url: "https://www.auto-ka.com",120 tagline: "Quebec's used cars",121 description:122 "Used vehicles across Quebec, aggregated from dealers and marketplaces into one searchable inventory — with pricing context, filters, and per-listing detail pages.",123 accent: "#ff5a2a",124 category: "Mobility & Employment",125 },126 {127 slug: "job-ka",128 icon: "/icons/ka/job-ka.svg",129 name: "Job·Ka",130 domain: "www.job-ka.com",131 url: "https://www.job-ka.com",132 tagline: "Every job from Quebec employers",133 description:134 "Job postings collected directly from Quebec employers and job boards — searchable by region, sector and role, with market statistics on hiring across the province.",135 accent: "#0c8599",136 category: "Mobility & Employment",137 },138 {139 slug: "food-ka",140 icon: "/icons/ka/food-ka.svg",141 name: "Food·Ka",142 domain: "www.food-ka.com",143 url: "https://www.food-ka.com",144 tagline: "Grocery prices, tracked at the source",145 description:146 "Grocery prices followed directly at the source across Quebec grocers — price histories, comparisons between banners, and analytics on what food really costs week to week.",147 accent: "#1f9d55",148 category: "Consumer",149 },150 {151 slug: "resto-ka",152 icon: "/icons/ka/resto-ka.svg",153 name: "Resto·Ka",154 domain: "www.resto-ka.com",155 url: "https://www.resto-ka.com",156 tagline: "Every restaurant, every dish, every price",157 description:158 "Quebec restaurants with their menus and dish-level prices aggregated in one place — browse by cuisine, city or dish, and see how menu prices move over time.",159 accent: "#f08c00",160 category: "Consumer",161 },162 {163 slug: "fabri-ka",164 icon: "/icons/ka/fabri-ka.svg",165 name: "Fabri·Ka",166 domain: "www.fabri-ka.com",167 url: "https://www.fabri-ka.com",168 tagline: "Products made in Quebec",169 description:170 "A catalogue of products actually made in Quebec and the makers behind them — local manufacturers, artisans and their boutiques, searchable by category and region.",171 accent: "#c4532e",172 category: "Consumer",173 },174 {175 slug: "sorti-ka",176 icon: "/icons/ka/sorti-ka.svg",177 name: "Sorti·Ka",178 domain: "www.sorti-ka.com",179 url: "https://www.sorti-ka.com",180 tagline: "Every outing, in all 17 regions",181 description:182 "Shows, festivals, exhibitions and events across Quebec's 17 administrative regions, aggregated into one agenda — find what is happening tonight anywhere in the province.",183 accent: "#d6336c",184 category: "Culture & Discovery",185 },186 {187 slug: "crea-ka",188 icon: "/icons/ka/crea-ka.svg",189 name: "Créa·Ka",190 domain: "www.crea-ka.com",191 url: "https://www.crea-ka.com",192 tagline: "Quebec creators, all their links",193 description:194 "A directory of 9,000+ Quebec content creators indexed across Instagram, TikTok, YouTube, Twitch, Kick and more — one profile per creator with every platform they publish on.",195 accent: "#7048e8",196 category: "Culture & Discovery",197 },198 {199 slug: "trouve-ka",200 icon: "/icons/ka/trouve-ka.svg",201 name: "Trouve·Ka",202 domain: "www.trouve-ka.com",203 url: "https://www.trouve-ka.com",204 tagline: "The search engine of the Quebec web",205 description:206 "A search engine focused on the Quebec web — its own crawl, index and semantic search over Quebec sites, businesses and content, backed by OpenSearch and local embeddings.",207 accent: "#1c7ed6",208 category: "Culture & Discovery",209 },210 {211 slug: "api-ka",212 icon: "/icons/ka/api-ka.svg",213 name: "API·Ka",214 domain: "www.api-ka.com",215 url: "https://www.api-ka.com",216 tagline: "The ecosystem's data, by API",217 description:218 "The data layer of the ecosystem: a unified API exposing the datasets of every Ka platform, plus the backend of the KA Agent — the conversational assistant embedded on all sites — secured with KA ID tokens.",219 accent: "#3b5bdb",220 category: "Data & Infrastructure",221 },222 {223 slug: "ka-stats",224 icon: "/icons/ka/ka-stats.svg",225 name: "Ka·Stats",226 domain: "www.ka-stats.com",227 url: "https://www.ka-stats.com",228 tagline: "The Quebec statistics observatory",229 description:230 "The observatory of the ecosystem — live dashboards from all public platforms aggregated into one explorer: millions of data points, cross-platform comparisons, a custom-indicator studio, and downloadable reports.",231 accent: "#095797",232 category: "Data & Infrastructure",233 },234 {235 slug: "ka2",236 icon: "/icons/ka/ka2.svg",237 name: "ka2",238 domain: "www.ka2.bot",239 url: "https://www.ka2.bot",240 tagline: "Quebec web explorer — light edition",241 description:242 "An AI-driven scraper + search bot mapping the Quebec web as a knowledge graph of entities and typed relations. The economical tier of three twin bots: Claude Haiku controller, 6 concurrent missions, ~800 pages a day, live dashboard.",243 accent: "#84cc16",244 category: "AI Explorer Bots",245 },246 {247 slug: "ka4",248 icon: "/icons/ka/ka4.svg",249 name: "ka4",250 domain: "www.ka4.bot",251 url: "https://www.ka4.bot",252 tagline: "Quebec web explorer — aggressive edition",253 description:254 "The middle tier of the knowledge-graph bots: same engine as ka2, driven by Claude Sonnet with 10 concurrent missions and ~3,000 pages a day — deeper missions, four times the throughput.",255 accent: "#e11d48",256 category: "AI Explorer Bots",257 },258 {259 slug: "ka6",260 icon: "/icons/ka/ka6.svg",261 name: "ka6",262 domain: "www.ka6.bot",263 url: "https://www.ka6.bot",264 tagline: "Quebec web explorer — flagship",265 description:266 "The flagship bot: Claude Sonnet controller, 16 concurrent missions, ~9,000 pages a day. The largest entity graph of the three, and the tier whose crawl capacity also supervises connector health across the ecosystem.",267 accent: "#7c3aed",268 category: "AI Explorer Bots",269 },270];271272/** Ka apps grouped by category, in display order. */273export function kaAppsByCategory(): { category: KaCategory; apps: KaApp[] }[] {274 return kaCategories.map((category) => ({275 category,276 apps: kaApps.filter((app) => app.category === category),277 }));278}279