What Cassandri has shipped.
Customer-facing changes and the data work underneath them, newest first. No roadmap claims.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.