B2B SaaS (Data Intelligence / Decision Automation) Full-Stack SaaS Build

From Spreadsheet Overload to 60-Second Decision Briefs: Signelle's AI Data Platform

Full-stack AI SaaS built for Signelle — transforms uploaded spreadsheets into Decision Briefs in 60s, powered by Claude API + rule-based analysis.

"From Raw Data to Actionable Brief in 60 Seconds — 300k+ Documents Processed"
React 18TypeScriptTailwind CSSshadcn/uiFramer MotionTanStack QueryExpress.jsNode.jsFirebase AuthFirebase Admin SDKPostgreSQLDrizzle ORMClaude APIAnthropicResendViteMulterxlsxcsv-parseZodWouter
Frontend
React 18TypeScriptTailwind CSSshadcn/uiFramer MotionTanStack QueryWouter
Backend
Express.jsNode.jsTypeScriptMulterZod
AI Models
Claude API (Anthropic)
Infrastructure
Firebase AuthFirebase Admin SDKPostgreSQLDrizzle ORMResendVite
300k+
Documents Analyzed
Total data files processed through the analysis pipeline
~60s
Avg. Processing Time
From file upload to complete Decision Brief with signals
4
Brief Types
Decision, Monitor-Only, All-Quiet, Data-Stale — governed by rules, not AI
5
File Formats Supported
CSV, Excel (multi-sheet), JSON, TSV, and plain text

Problem Statement

Founders and operators were drowning in spreadsheets with no time or bandwidth to interpret their own data. Every business decision required digging through files, building ad-hoc summaries, and still being left uncertain about what to actually do. The problem wasn't a lack of data — it was a lack of signal.

Our Approach

HadidizFlow built Signelle from the ground up: a full-stack SaaS platform where users upload any data file (CSV, Excel, JSON, TSV, or plain text) and receive a structured AI-powered Decision Brief within 60 seconds. The platform combines a deterministic 6-stage analysis pipeline with Claude API narration, producing tiered briefs — Decision, Monitor-Only, All-Quiet, or Data-Stale — each with signals, confidence indicators, and one-click actions. Multi-workspace support, email delivery, and an AI Brief Assistant chat widget round out the product.

6-Stage Analysis Pipeline + Brief Assistant Chat

Technical Details
The pipeline runs sequentially: inspectRows() detects column types and numeric density; detectTier() classifies the dataset (t1/t2/t3-small/t3-large); computeMetrics() calculates baseline, delta, and impact scores; governOutcome() applies freshness and confidence rules to assign a briefType; buildNarrative() produces structured brief fields deterministically; then AI enhance() calls Claude API to patch the narrative for t2 and t3-small tiers — falling back to rule-based output if the API is unavailable. The Brief Assistant is a contextual chat widget embedded in each run, letting users ask plain-language questions about any brief.
Business Value
Decision-makers get a plain-English brief with a clear recommended action — no dashboards, no interpretation required. The governance layer ensures briefs are only sent when something actually matters, preventing alert fatigue.

Challenges We Solved

Deterministic Pipeline + Optional AI Narration

Pure AI-generated briefs are unreliable — they hallucinate metrics, skip signals, and have unpredictable latency. But pure rule-based output reads like a spreadsheet dump. The system needed to be trustworthy first, good-sounding second.

The pipeline is purely deterministic through five stages — column inspection, tier detection, metric computation, governance, and narrative building — producing a complete, valid brief with no AI dependency. Claude API is only called at stage 6 to improve the narrative tone for medium and large datasets. If the API fails or times out, the user still gets a complete brief. AI is an enhancement, not a requirement.

Claude APITypeScriptExpress.jsZod

Multi-Sheet XLSX Parsing with Combined Run

Real-world Excel files often have multiple sheets representing different time periods, regions, or business units. Treating the whole file as a single run loses the per-sheet signal; ignoring the relationships loses the cross-sheet context.

The ingest layer uses parseXlsxAllSheets() to generate one analysis run per sheet plus a combined run where all sheets are merged with a _sheet column tag. A single upload produces N+1 briefs — one for each sheet and one for the combined dataset — giving users both granular and aggregate views automatically.

xlsxcsv-parseMulterNode.js

Governance Rails: All-Quiet and Data-Stale Trust System

Sending a brief every time a file is uploaded creates noise and trains users to ignore alerts. But never sending one when nothing changed isn't obviously better than a dashboard. Users needed a reason to trust that silence means safety.

governOutcome() applies cooldown logic against recent runs and checks data freshness before assigning briefType. If the data hasn't changed materially since the last run, the brief is typed as Monitor-Only or All-Quiet — explicitly telling the user nothing needs action. If the data appears stale (old timestamps, no variation), it surfaces as Data-Stale. Users learn to treat the inbox as a signal, not a firehose.

PostgreSQLDrizzle ORMTypeScript

Multi-Workspace Auth with Firebase + PostgreSQL

The platform needed to support teams — multiple seats per workspace, per-workspace data isolation, and role-based permissions — without locking into a BaaS that would constrain the data model.

Firebase Auth handles identity and session tokens via the frontend SDK; the Express middleware (requireAuth) verifies the Firebase JWT server-side on every API request and maps it to an internal account in PostgreSQL. Workspaces, memberships, data sources, runs, and signals all live in Postgres with Drizzle ORM providing type-safe queries. Firebase does auth; Postgres owns the data.

Firebase AuthFirebase Admin SDKPostgreSQLDrizzle ORMExpress.js

Project Timeline

1

Discovery

Mapped the core problem: decision-makers don't lack data, they lack time to interpret it. Defined the four brief types (Decision, Monitor-Only, All-Quiet, Data-Stale) and the governance rules that determine which one fires — establishing that trust and silence are as valuable as the brief itself. Identified the five file formats that cover 95% of real-world data workflows.

2

Build

Built the full stack from scratch: the 6-stage analysis pipeline with optional Claude API narration, the multi-sheet XLSX ingest layer, the React dashboard with Kanban board and inbox, the AI Brief Assistant chat widget, email brief delivery via Resend, and multi-workspace/multi-seat support with Firebase Auth + PostgreSQL. The pipeline was designed so AI is never a dependency — briefs are complete before Claude is called.

3

Launch

Validated the product against the client's own businesses before opening to users — a real-world stress test across diverse datasets. Reached 300,000+ documents analyzed with an average processing time of approximately 60 seconds per file. The governance rails proved their value early: the All-Quiet and Monitor-Only brief types reduced noise and increased user trust in the inbox as a meaningful signal.

Ready to Build Something Similar?

Let's discuss how we can help transform your business with AI.

Start Your Project