Updates
v0.20
One site, one typeface, and a password reset that works: the content-security policy that hardens every page had an allowlist, and three URLs were missing from it —
/blog, its posts, and /reset-password. On the reset page that was not cosmetic: the CAPTCHA script and the auth call were both blocked, so password reset could not complete for anyone. It is fixed, along with the same hole on /404 and the trailing-slash twin of every URL on the site, which had been serving duplicate content under the strict policy. Same wave, the thing you can actually see: the site used to invert to near-black for anyone whose operating system is set to dark mode, with the homepage’s own light widgets stranded on top of it — every page now renders light in both settings, verified across 24 page loads. The blog stopped borrowing the pricing page’s plan grid and became a real section: its own typography, tags, bylines, a feed at /rss.xml, and links from the nav and footer of all 36 pages — until now, nothing on the site linked to it at all. Fonts are now served from our own origin instead of a third party, which deletes the class of bug above rather than patching it. And a grey we had been using for footer headings on every page measured 2.81:1 against white, below the accessibility floor; it is gone, and the audit that found it now runs over the whole site. Aug 13, 2026v0.19
A half-million pages of our own index, and one answer we took away: a build of 535,371 crawled pages / 21.3 million passages cleared every bar in the publish gate — hard-query relevance 37 against a bar of 6, marquee precision 1.0, honesty 1.0, zero negative-control leaks. It was blocked first, and the reason is worth stating: a single ranking clause was treating any short two-part country-code domain as a national tourism board, which handed that authority to
amazon.nl, vogue.de and dennys.jp — 651 hosts across the candidate corpus. We deleted the rule rather than narrowing it, because a rule that infers a fact (who owns this site) from a form (how it is spelled) does not get better when you shrink the form. Same wave, the harder change: we retired the answer "we haven't crawled that." Our own new measurement built queries out of a page's own title and ran them against the index holding that page — roughly one in five came back empty. An empty result means retrieval found nothing; it never proved the corpus lacks the subject, and saying otherwise was a confident claim we could not support. search_web now answers covered, uncertain or unavailable, and an outage is never dressed as an abstention. The publish gate also gained its first broadly-sampled bar in the opposite direction: the bar that counts empty answers improves no matter what the engine returns, and an engine can always return more, so nothing was measuring the cost of returning junk at scale. Where it's honest: we are not claiming coverage or precision parity with general web search, and we say so on stage; the axis that survives our own audit is verbatim page-level provenance — 31 result URLs independently re-fetched, zero fabrications. Also this week: nothing published for two days because the crawl process was PID 1 in its own container and exited cleanly at the end of each window, taking the build down with it. Aug 3, 2026v0.18
The crawler goes continuous, and the gateway gets hardened: SeaWeb's own web crawler now runs a continuous crawl→build→verify→publish loop, and
search_web — full-text search over that owned, self-crawled index — answers on production with an honest coverage signal: when it finds nothing for a query it abstains instead of serving a confident lookalike. Publishing sits behind a deliberate quality gate: the first two auto-published indexes regressed live answer quality within hours, so automatic publishing is paused until the pre-publish eval scores honesty, not just relevance — we would rather serve a smaller index than a confidently wrong one. Same day, a security and quality wave: the MCP gateway went stateless (closing a session-identity edge found in our own audit), request handling now runs concurrently instead of single-file, and location queries like "hotel in San Francisco for 2 nights" resolve the city instead of tripping over the words after it. Jul 28, 2026v0.17
One million queries against all of Wikipedia: we pointed the exact ranking rail that answers travel queries, unchanged, at the full 7.2-million-article Wikipedia corpus and attacked it with 1,000,000 adversarial queries — typos, aliases, negations, foreign-language titles — across a 5-engine benchmark: 5 million scored evaluations, zero errors. The full pipeline lifted top-10 hits +149% over baseline, made 2.6× as many questions reachable at all (recall .15→.41), took the worst typo category up 16× (audit re-verified), and "find X, not Y" exclusion queries went from violated 98.9% of the time to 0.0%. Where it's honest: absolute scores on this deliberately hostile suite are ~.29 top-10, and we published the audits saying so — including the one that caught our own benchmark echoing itself, with independent human-phrased and public-benchmark checks now running. Research track only: live search is unchanged. Jul 20, 2026
v0.16
Proven on 10,000 queries, and your agent can finally ask "near me": we built a permanent 10,000-query benchmark — long, messy, multi-constraint questions across 20 categories (locations, dietary needs, budgets, typos, Spanish/Chinese/French, things we don't even carry) — and drove clean answers from 75.5% to 83.1% in one night, with confidently-wrong answers on out-of-index questions at zero. Agents connected over MCP can now pass your coordinates: results carry distance from you and sort nearest-first, and when no location is known the engine explicitly tells your agent to ask where to search instead of guessing. Asking for "restaurants in Tokyo" now says we don't cover Tokyo instead of serving a lookalike. Family-friendly asks actually filter to family-friendly places. And booking got real: 38 Marriott-brand hotels now hand off to marriott.com with your dates, rooms, and guests pre-filled, maps open in Google or Apple Maps, and the map itself is clickable. Jul 16, 2026
v0.15
We read our own results and fixed what we found: five things were quietly wrong, and every one of them showed up by actually running real searches instead of reading benchmarks. Typos in longer words now correct — "chinnes food" finds Chinese, "hotles" finds hotels — with guards so a real word is never rewritten into a different one. "Hotels near Salesforce Park" now returns hotels, not the park: naming a place resolves it to its neighborhood and searches there, and it says so. Questions we can't answer say so — asking "what's the date" used to return a concert, because a filler result looks identical to a real one once it's a card on a screen; those are gone now. Cards got cleaner too: no more repeated photos across listings from the same operator, no internal "verified" stamp, a close match chip when a result is only nearby-relevant, and location is requested when you arrive so "near me" works on the first try instead of after hunting for a button. Re-measured on the same 1,016-query benchmark: clean answers 85%, confident junk on unanswerable queries 5%. Jul 15, 2026
v0.14
Results you can trust at a glance: every result now has to earn its "strong" label — it must actually satisfy what you asked for (the cuisine, the neighborhood, the name), not just share a word with it. Searching a sold-out past game or festival now says so — "already happened on June 14" — instead of confidently serving other events. Asking for something we don't carry gets an honest fallback instead of look-alikes. Typos are fixed word-by-word ("ssuhi" finds sushi) and always disclosed. Measured on a 1,016-query benchmark: clean answers up from 54% to 85%, confident junk on unanswerable queries down from 44% to 5%. Also new: Marriott hotels book via direct marriott.com links on the same honest rail, and Salesforce Park joined the index — "events near Salesforce Park" now resolves the real place. Jul 15, 2026
v0.13
Search and request in your browser + results that know where you are: seaweb.tech/chat is live — sign in and run real searches and the full booking loop against the live index with no API key, no config, and answers rendered as readable cards instead of raw JSON. Results got location-aware and visual in the same wave: listings carry real US Census coordinates, show distance from you (with a nearest-first sort when you share location), a mini-map and Google Maps link on every located venue, real venue photos, and event cards with dates, venues, and an honest Tickets link-out — while past-dated events dropped out of search results entirely. Lodging searches now put hotels above name-matched attractions. Site-wide polish shipped alongside: a decluttered homepage, motion across the dashboard and partner queue, a fixed partner-queue sign-in, and one contact email everywhere. Jul 14, 2026
v0.12
Restaurant reservations + verified inventory: Restaurants now book on the same partner-confirm rail as hotels — an agent sends a date, a time, and a party size, the venue confirms, and the traveler gets the outcome (with the venue's own payment page when one is on file). No more deep-link handoffs for dining. Behind it, the index moved to a web-verified San Francisco inventory: real hotels, restaurants, tours, and live event listings sourced from MLB, Chase Center, Live Nation, and Ticketmaster — with duplicate and fabricated-data screens now enforced by tests on every reseed. Jul 13, 2026
Travel focus
SeaWeb is now travel-only while we go deep on one vertical: hotels, rail, attractions, and the booking rail. The other ten verticals are parked, not deleted. Their landing pages redirect here and their configs stay registered so they can come back once travel is nailed. Jul 13, 2026
v0.11
Partner payments + demand insights: When a partner confirms a booking, the traveler now gets the partner's own payment page in the confirmation — SeaWeb never handles the money, the partner stays merchant-of-record. Partners also get a new demand card on their dashboard: how often their listings appeared in agent searches and their average and best rank over the last 7 days, aggregate only (min-count suppressed, no individual search ever exposed). Under the hood we also added OAuth 2.1 groundwork so web-based agent connectors can authenticate down the line. Hardening from a five-way adversarial review: payment links are checked against host-spoofing, and partner records now fail loudly instead of silently on a bad write. Jul 12, 2026
v0.10.3
Real news, verified-only serving, result feedback: The news vertical now serves 351 real Bay Area articles ingested from 28 live RSS/Atom/WordPress feeds (the synthetic placeholder set is fully retired). Production now serves verified (published) entities only. Draft serving is hard-blocked in the production environment itself, not just by configuration, and every boot logs exactly what the container is serving. Agents can rate results they actually used via a new
submit_feedback tool (up/down + reason: feedback feeds ranking), and ranker A/B comparison moved to the terminal with compare_search + vote_comparison tools. Shared links got proper preview cards: OG/Twitter image + apple-touch-icon across all site pages. Jul 6, 2026v0.10.2
One canonical ID scheme + dietary unification + conversion-watch analytics: Every tool response now returns one canonical entity id form,
seaweb://{vertical}/{slug} (legacy travel:// ids still accepted as inputs), so ids an agent stores today never go stale tomorrow. The dietary filter accepts a string or a list on both search and filter tools. The last known way to hard-fail a well-meaning agent on parameter shape is gone (and the same contract is pinned on both ranking engines). Telemetry got honest at the edges: in-flight rows flush at shutdown instead of vanishing on every deploy, failed lookups log a link-rot signal, and demo bookings are tagged so they never inflate real conversion numbers. New analytics tooling: offline shadow replay of real logged queries across all 24 ranking combos, plus a daily combo watch that alerts only on real booking-conversion evidence. Research vertical grew to 160 entities (10 radar-sleep datasets). Jul 6, 2026v0.10.1
MCP identity rename: travel-restaurants → SeaWeb: the server's registered name no longer carries a leftover "travel" label from before the engine went multi-vertical; renamed everywhere it showed up (server registration, every client config example, the install script's env vars and default install dir, CLI defaults, docs). Scoped keys now render a matching config key too: an all-verticals key connects as
SeaWeb, a vertical-scoped key (travel, salons, etc.) connects as SeaWeb-<vertical>, computed live from the key's actual scope instead of a hardcoded label. Jul 6, 2026v0.10
Full query/result logging + real-traffic analytics: All ~16 MCP tools now log to our experiments pipeline (was 3); fixed a silent insert failure that had been dropping rows since launch. New
analyze_combos.py ranks ranking-strategy combos by real booking-conversion rate instead of proxy metrics. Search-quality fixes from a live 100-query audit: workspace results no longer surface government/legal offices as "coworking," financial listings no longer collapse to the same result for every query, BART transit routes now match on the cities they actually serve. Privacy hardening: sub-processors fully disclosed, cookie-consent gating fixed, a GDPR-erasure endpoint shipped, and experiment data now auto-purges past its stated 90-day retention window. Jul 5, 2026v0.9.1
Homepage logo wall: Added a company logo-wall section (parallax marquee, neubrutalist styling) to the homepage and all 10 vertical landing pages; each of the 17 logos links out to that company's site. Perf: de-duplicated logo images from inline base64 to shared static files (page weight ~767KB → ~33KB per page, images cached once across all 11 pages instead of re-downloaded per page). Jul 4, 2026
v0.9
Ranking engine v0.9 + deterministic serving + site polish: Search quality more than doubled on our graded benchmark (nDCG@5 0.82 vs 0.40 baseline): field-weighted BM25F + TF-IDF fusion, typed constraint parameters (dietary, price, party size, bookable), and typo correction. The hosted API now serves deterministically: same query, same results, every time; the experiment harness is opt-in for research runs. Hardening: availability crash fix on closed days, dietary-negation scoping fix, key lifecycle verified end-to-end against the live API. Site: faster first paint (removed the animation CDN from the render path), signed-in nav greeting, pricing update. Jul 2, 2026
v0.8
Data enrichment + cloud API + closed-source shift: Entity corpus expanded from ~110 to 1,001 SF Bay Area restaurants (10x milestone; since curated to 153 verified) with full structured profiles (hours, dietary tags, price range, booking URLs). Hosted MCP over streamable HTTP with API key auth and per-key rate limiting. The cloud API is now the primary distribution channel. Index and gateway remain closed source to protect publisher relationships and data quality; MCP install is the only access path for external testers. Adversarial testing (84 adversarial + 25 security tests) all passing. 8 adversarial mitigations coded (userinfo bypass, field injection, partial pipeline failure, intent parser bypass, and 4 more). Manifesto updated: "open standards, proprietary supply." Jul 1, 2026
v0.7
Multi-agent install + docs refresh: One-line installer supports 8 MCP clients (Claude Desktop, Cursor, Claude Code, OpenCode, Google Antigravity, OpenAI Codex, Devin, ZCode). README rewritten with concrete "how to use" examples: real commands with real output. Website docs page updated with agent conversation examples and terminal console guide. Bug fixes: search result counts now work across all output formats (JSON, YAML, CSV, etc.), filter no longer silently truncates at 20 results. Jul 1, 2026
v0.6
Experiment system: Randomized rank tracks (A–H), blend modes, and output formats (JSON pretty/min, Markdown, CSV, YAML, TOML) per query. Auto-logging with dual JSONL + HTTP POST output. Set
SEAWEB_DETERMINISTIC=1 to disable randomization. Publisher page fleshed out. Site-wide SEO meta tags + Open Graph cards added. Social links completed. Jun 30, 2026v0.5
Entity data + field research: 27 restaurant entities live (
entities/*.json) with verified hours, phone, dietary tags, booking URLs. Eval re-run: 27 rows in mission_restaurants.json; E1 Track A winner (all tracks identical). Cookie consent banner deployed. Social links live (YouTube, Instagram, Discord, Reddit). Domain @seaweb.tech email confirmed. Jun 29, 2026v0.4
Documentation refresh: README + docs index rebuilt with mermaid diagrams, codebase map, and line-level citations (
gateway/server.py, rank_core.py, publish.py). Vercel project renamed to SeaWeb (seaweb.tech). Jun 29, 2026v0.3.1
Rank tracks D–G + live entities: MMR, trigram-semantic, freshness-first, and popularity rankers in
rank_core.py. Gateway reads entities/*.json live (drop a file → searchable). Hosted MCP API with API key auth: connect via config snippet. Jun 29, 2026v0.3
Launch site & animation: SeaWeb landing live (seaweb.tech). Docs page with roadmap, GSAP scroll animations, social links. Jun 28, 2026
v0.2
Human-loop booking:
request_booking tool (gateway/server.py L357) with deep link + SMS notify. Publisher preview page and review queue stubs. Jun 2026v0.1
Initial MCP schema: JSON index with search/filter/menu/hours tools. Cursor MCP wired (
.cursor/mcp.json). Slash commands for /search, /grep, /get, /book. Jun 2026