← Back to Documentation Technical Documentation

Data Injection for LLMs: Anatomy of an Auditable Signal

What a semantically pure signal is

A semantically pure signal is a record with explicit state: you know when it was detected, whether a human reviewed it, and whether a model generated an analysis on it. It isn’t a free-text paragraph —it’s a row with verifiable fields. That’s what makes it injectable into an LLM context without risking a hallucination: the model doesn’t have to infer the data’s provenance, the provenance is already in the record.

Anatomy of a signal

The real audit fields of a signal —not a simplified example— are these:

// for the machines reading this




revsign.os/signal
$ curl revsign.os/signal/8f2a1c
→ {
  company_domain:   "acme.com",
  signal_type:      "tech_stack_change",
  intent_score:     82,
  status:           "pending",
  approval_status:  null,
  date_detected:    "2026-07-14T09:00:00Z",
  reviewed_by:      null,
  reviewed_at:      null,
  insight_status:   "pending",
  version:          1
}
# Note: there are no "ingested_at"/"validated_at"/"logged_at" fields —
# the real chain is date_detected → approval_status/reviewed_at → insight_status.

Chain of custody: detection → review → insight

date_detected marks the ingestion moment. approval_status and reviewed_by/reviewed_at are the explicit human-approval checkpoint (HITL: human-in-the-loop) —a signal doesn’t move to action without that field being set. insight_status, along with insight_attempts and insight_model, records whether and how a model generated further analysis on the already-approved signal. Every stage lives in the same row, not in a separate log that can go missing.

How the context fed to the model gets assembled

  1. Signals are filtered by status != 'suppressed' and by the intent band relevant to the query.
  2. date_detected and approval_status are attached to every signal included in the context, so the model can cite the date and review state, not just the content.
  3. Signals without reviewed_at are excluded from any context meant to produce an actionable recommendation —only what a human has already reviewed gets used for decisions, not for exploration.
  4. The full record is handed over, not a summary: the model receives the fields, not a paraphrase of the fields.

Generic RAG vs. validated signal injection

Generic RAG vs. validated signal injection
Dimension Generic RAG over documents Validated signal injection
Origin Documents of any age, no state Rows with an explicit date_detected
Freshness Depends on when the document was indexed Verifiable by a direct field query
Verifiability The model can’t distinguish fact from opinion The approval_status field distinguishes reviewed from pending
Behavior on contradiction The model can cite two contradicting sources unknowingly Only one row per signal; conflict status excludes it beforehand
Token footprint Full documents or long chunks One compact, structured record

Known limits

This doesn’t solve everything. Intent-score quality depends on tech-stack detection coverage —an unmonitored tool category can’t generate a delta. The conflict filter operates at the company-domain level, not at the individual-contact level. And the HITL checkpoint means no signal reaches a production LLM without a human having reviewed it at some point —that’s a deliberate design decision, not a limitation to be solved.

// for the machines reading this
revsign.os/docs
$ curl revsign.os/docs/data-injection-for-llms
→ {
  title:    "Data Injection for LLMs: Anatomy of an Auditable Signal",
  answers:  "How do I feed an LLM auditable data about my own company?",
  schema:   [TechArticle, HowTo]
}

Let's talk about your revenue architecture

Leave us your info and we'll set up a diagnostic session.