Skip to content
/ changelog

What Cassandri has shipped.

Customer-facing changes and the data work underneath them, newest first. No roadmap claims.

  1. 2026-09-03

    Purchase retries no longer create duplicate checkout attempts

    Workspace and project-briefing checkout now reserve one user-scoped attempt, reuse a still-open Stripe session, and retire a session that loses the reservation race. Repeated clicks cannot silently become duplicate purchases.

    billingreliability
  2. 2026-08-28

    Three offers, each with one purchase path

    The $199 project briefing, $1,500 monthly Workspace, and $5,000 monthly Workspace + Analyst now keep their selection through account creation and return to one canonical checkout boundary.

    webbilling
  3. 2026-08-27

    Public homepage rebuilt around the bid-decision loop

    A new motion-led homepage connects market context before bid day, the published result after bids open, and the evidence that carries into the next pursuit. Reduced-motion and small-screen paths preserve the same story.

    webdesign
  4. 2026-05-05

    Entity resolution v1: deterministic matches + review queue

    Deterministic normalization resolves the clear contractor matches. Postgres name similarity (pg_trgm) surfaces candidate clusters, and ambiguous clusters stay in a review queue rather than being merged as fact.

    intelligencedata
  5. 2026-05-05

    NCDOT 2024 ingestion + cross-source resolution

    North Carolina DOT bid-tab XLS ingestion, end-to-end. The interesting part isn't the scrape — it's resolving entities across NCDOT, FDOT, and the project ontology so the same contractor in two states is one record.

    scrapersdata
  6. 2026-05-05

    Next.js 16 site + Supabase waitlist wired

    Migrated cassandri.com from a static prototype to a Next.js 16 app on Vercel. Waitlist signups now persist to Supabase. Foundation for the rest of the surface area.

    web
  7. 2026-05-05

    Scrapers SOP: onboarding skill + manifest + health checks

    Standard operating procedure for adding a new public source: onboarding skill, manifest schema, health check, fixture invariants. Phase 1 + Phase 6 gates hard-enforced. Adding the next state is now a checklist, not a snowflake.

    scrapersprocess
  8. 2026-05-04

    ER evaluation scaffold + Wilson CI reporting

    A versioned harness reports Wilson confidence intervals for reviewed match labels. The current label set is not yet sufficient to claim production precision, recall, or measured lift.

    intelligenceevals
  9. 2026-05-04

    Splink probabilistic ER experiment + Parquet bridge

    Built an offline Splink record-linkage experiment and a Parquet bridge to the warehouse. It is not wired into served identities; the experiment remains separate from the production contractor table.

    intelligencedata
  10. 2026-05-04

    FDOT 2025 backfill + multi-slug URL resolution

    Florida DOT publishes the same bid letting under multiple URL slugs depending on the year/letting type. Backfilled 2025 + made the resolver tolerant to the slug variations so we don't miss future lettings.

    scrapersdata
  11. 2026-05-04

    FDOT bid-tab scraper end-to-end

    First public source landed: Florida DOT bid tabs, scraped, parsed, and persisted. Sets the pattern every subsequent state follows.

    scrapers
  12. 2026-05-04

    dbt scaffolding + synthetic bid_tabs source

    dbt models for bid_tabs and a synthetic source so transforms can be tested before real data lands. Lets us evolve the schema with confidence.

    data
  13. 2026-05-04

    Engine + ontology layer scaffolded

    Foundation for the intelligence layer: an engine that runs over a typed ontology of construction-domain entities (contractors, projects, lettings, line items) so downstream questions are queries against meaning, not text.

    intelligencedata
  14. 2026-05-04

    Supabase pooler + R2 archival

    Connected to Supabase via Session Pooler for warehouse workloads; raw scraped artifacts archived to Cloudflare R2 so we always have provenance.

    infra