AI Solutions Hub — Architecture & Automated Quality Process

How ai.marketeq.net produces reliable, source-backed data on AI solutions in Swiss insurance: from the source, through multi-stage AI quality gates, to the published catalogue page — largely fully automated, with a human as the final authority on doubtful cases.

USP: Data Quality & Review Process Every claim source-backed (Admiralty Code A–F / 1–6) Auto-publish only after a 3-stage duplicate gate Bilingual DE/EN
LAYER 1

Data sources

Curated sources around the Swiss insurance market. Every source is continuously measured by its hit rate (source precision) — weak feeds are dropped.

Insurer newsrooms
Press releases from primary insurers & reinsurersRSS-Feeds
Brave Search API
Targeted web searches per insurer & vendorREST · 12 search profiles
Trade press & events
Industry media, conference materialRSS / Sitemaps
LinkedIn & tips
Manual finds — submitted via Telegram linkvia Telegram bot
Artificial Analysis
Benchmark data for all major AI modelsREST API · daily
Annual reports
KPIs of the 15+ largest EU insurers, CHF-normalisedcurated + sourced
automated crawls (weekly + daily) · manual submission (instant)
LAYER 2

Automation layer

Two orchestration services share the work: scheduled crawler jobs and the interactive review/intake workflow.

T.Dcloud.trigger.dev — scheduled jobs
  • discover-sources · Sun 10:00 — finds new solution signals
  • process-leads · every 6 h — relevance gate → extraction → draft
  • refresh-existing-sources · Sun — new sources for existing entries
  • refresh-ai-models · daily — refresh AI model benchmarks
  • saved-solution-digest · daily — email on changes to watched solutions
n8n Cloud — interactive agent
  • AI review · daily 07:00 or instantly via the Telegram command /review
  • Telegram intake: send a link to the bot → the source is read, fields extracted, an entry created or routed as an update
  • Replies come back as a Telegram message (incl. publication links)
Telegram Bot API ↔ n8n ↔ Supabase REST ↔ OpenAI
EVERY signal — whether from the crawler or a human — passes the same gates
LAYER 3

AI quality gates

The core — the USP
Why it matters: Generic AI directories collect marketing claims. MarketEQ publishes only what a named insurer demonstrably deploys — every data point with a graded source, every approval cross-read against the live source.
Relevance gateOnly concrete deployments at named (re)insurers, Swiss market scope. Threshold calibrated from data (0.75). Learns from moderator rejections. OpenAI gpt-4o-mini
Extraction & source ratingStructured fields in EN + DE, enum-validated; every source graded by the Admiralty Code (reliability A–F, credibility 1–6). Nothing is invented — unsourced fields stay empty. OpenAI gpt-4o / gpt-4.1
AI review (5 criteria)Cross-reads the primary source live against: relevance, deployer vs. vendor, DE/EN completeness, source support, EU AI Act plausibility. Approval only at ≥ 75 % confidence + source backing. OpenAI gpt-4.1
Duplicate gate (3-stage)Before every auto-publication: ① exact source URL ② fuzzy name match (pg_trgm) ③ semantic AI judgement against all entries of the same insurer. When in doubt: stop → a human decides.Postgres pg_trgm + gpt-4.1
Reject-feedback loop: Every moderator rejection reason is stored (moderation_feedback) and flows back automatically as a negative example into the filter prompts — the gates get stricter with each human decision.
passed → auto-published · doubt → escalated to the moderator · irrelevant → discarded with a reason
LAYER 4

Supabase — database, auth & row-level security

Postgres as the single source of truth. Access is secured by role (RLS): only status = published is publicly visible. Example tables:

solutionsname · name_de · description(_de) · provider (insurer) · implementation_partner (vendor) · sources jsonb[url, reliability A–F, credibility 1–6] · status · eu_ai_act_risk…The catalogue — one entry = one deployment
crawl_logsource_url · relevance_score · lead_state · crawl_status · discovery_channelEvery signal, auditable incl. reason for discard
source_update_candidatessolution_id · url · is_material · ai_diff_summary · suggested_reliabilityNew sources for existing entries (append-only)
moderation_feedbackkind · reason · context · created_byLearning loop: rejection reasons → prompts
profiles / rolesrole: viewer · plus · professional · team · moderator …Feature gating per subscription tier
ai_modelsintelligence_index · pricing · speed · benchmarksDaily snapshot from Artificial Analysis
watchlists + notification_prefsuser_id · solution_id · digest opt-outBasis for the daily email digest
solution_confidence_assessmentsfield_name · confidence_level · noteConfidence per data field — shown in the frontend
Server rendering with role-based access
LAYER 5

Platform — ai.marketeq.net (Next.js on Vercel)

Catalogue & detail pages
Solutions with source backing, confidence badges, DE/EN
Market Landscape
Heatmap, gap analysis, vendor landscape, insurer KPIs
Analytics & Insights
Opportunity matrix, maturity model, comparisons, ranking
AI Models Dashboard
Public model benchmarks, updated daily
Moderation cockpit
Review queue, publish log, source precision, duplicate merge

Connected services:

Stripe
Subscriptions (Free → Plus → Professional → Team); webhook assigns roles automaticallyCheckout + Webhooks · CHF
Resend
Daily email digest for watched solutions, GDPR-compliant with an unsubscribe linkEmail API
BPBotpress
EQ chatbot on the website — questions about the platform & catalogueWeb widget
Vercel Web Analytics
Cookieless visitor stats + own first-party trackingno cookies / raw IP
Telegram
Operator's control channel: submitting, /review, publication confirmationsBot API
Ongoing development — even on the go
LAYER 6

Development & operations — AI-assisted

The platform itself is developed with AI: Anthropic Claude models build, test and deploy changes — traceable via Git and a Kanban board.

Claude Code (Anthropic)
Claude models build features, run audits & end-to-end tests, and deploy to Vercel + Trigger.devAnthropic Claude · Fable/Opus
Claude Dispatch
Trigger changes from your phone: describe what you want → Claude implements it → pull request → deploy. No laptop needed.mobile → PR → live
GitHub
Version control, pull requests as change docs, audit trail of all migrationsgit · gh CLI
Todoist — "Platform Tasks"
Kanban: Backlog → Planned → In Development → Testing → Done. Every ticket with a definition of done; the Done column = change historyTodoist MCP
Own component / core process External service / API ◇ AI quality gate dashed = database table (example)