Skip to Content

Core pipeline

Timelining ingests Telegram contributions, stores them in Neo4j, and vectorises text for retrieval. That is the core workflow. Dispatch to sibling resolvers is separate — see Resolvers.

Overview

Telegram (_bot* topic) → Ingest webhook → Redis → Neo4j Entry → Vectorise transcribe → chunk → embed → Neo4j (graph + vector index) ↳ consumed by evaluate (RAG), visualise APIs, etc.

Chained HTTP (mode=chain) handles the happy path; Vercel crons sweep backlogs and failed queues.

Modules

PageStageCode
IngestWebhook, Redis backlog, Neo4j writeservices/ingest/, api/story/webhook
VectoriseTranscribe, chunk, embedservices/vectorise/
Organising configTopic → sibling routingorganising.config.ts
ResolversForward + resolve dispatchservices/resolve/, services/webhook/

Shared infrastructure: services/pipeline/ (routing, execute, retry), lib/db/neo4j.ts.

Infrastructure

DependencyRole
Upstash RedisBacklog + failed queues
Neo4j (Railway)Graph + embeddings
OpenAIWhisper + embeddings
VercelServerless routes + crons

Deploy via propagate (app.manifest.yaml).

Evolution from earlier docs

Previous documentation described webhook → Redis worker → Neo4j as a two-step ingest. Purpose unchanged; current version adds inline chaining, vector stages, Neo4j vector indexes, and organising config for sibling integration. Older references to PostgreSQL/pgvector or S3-first storage are superseded.

Last updated on