Inspiration

Every bank has the same bottleneck: someone in Strategy needs a loan portfolio breakdown, someone in Digital Innovation wants transaction volumes by channel, someone in Operations needs branch performance metrics — and they all file a ticket to the same overloaded ICT Reporting team. Days pass. Decisions wait.

We looked at this and asked: what if the reports came to you? Not through a BI tool locked behind one team, but through AI agents that hook into your existing data streams — Kafka topics, ClickHouse tables, real-time feeds — and generate reports the moment conditions demand it. No manual triggers. No ticket queue. Agents that don't wait for instructions, but listen to the data and act.

That's IRIS.

What it does

IRIS lets any team member ask a question in plain language — "Show me the loan portfolio by branch with NPL ratios for last quarter" — and get a full professional report with:

  • Structured data pulled from ClickHouse Cloud (3,360+ rows of real banking data across loans, deposits, transactions, customers, and branches)
  • SVG charts (bar, line, pie) rendered through a dedicated chart sub-pipeline with automated testing and visual verification
  • Compliance checks against data governance rules (PII detection, accuracy validation, data quality)
  • Human-in-the-loop review — a reviewer must Approve, Request Revision, or Reject before publication
  • Full traceability — every report is tracked in ClickHouse and indexed as a knowledge graph in Neo4j (entities, relationships, state transitions)
  • Searchable history — find past reports through Neo4j graph queries, ClickHouse SQL, or Graphiti semantic search

The entire flow is event-driven: queries flow through Kafka (Redpanda Cloud), data lives in ClickHouse Cloud, the entity graph lives in Neo4j Aura, and the LLM agents run on z.ai.

How we built it

IRIS is built on Tachikoma, a distributed stream processing framework with composable Hive pipelines and Workflow of Thought (WoT) orchestration.

The pipeline is declared using the Hive WoT fluent builder — 6 agents chained with data edges, a HITL cast point, and a feedback loop:

pipeline.from_input()
    .to_agent(query_interpreter)        # NL → structured query
    .will({"parsed_query": "parsed_query"})
    .to_agent(data_fetcher)             # ClickHouse Cloud
    .will({"data_result": "data_result"})
    .to_agent(report_generator)         # LLM (z.ai glm-4.5-air)
    .will({"report_content": "report_content"})
    .to_agent(chart_renderer)           # WoT sub-pipeline
    .cast("human_review", timeout=300)  # HITL pause
    .to_agent(publisher)                # ClickHouse + Neo4j tracking
    .feedback({"revision_notes": "report_content"}, max_iterations=3)
    .to_output()

## Where we use Qwen  :
Summary: Qwen Everywhere
Layer                   Qwen Model                      What it does
Chat                     qwen3.6-plus                 Conversational agent, intent routing
Pipeline (7 steps)  qwen3.6-plus               Tool calling on StatefulRecord
Report generation   qwen3.6-plus              Structured report with sections + charts
Chart elaboration   qwen3.6-plus            Plans SVG chart implementation
Compliance review   qwen3.6-plus    Auto-approve/revise decision
Semantic filing text-embedding-v3   Report → folder matching (cosine similarity)
Graphiti indexing   qwen3.6-plus           Entity/fact extraction from reports
Graphiti search text-embedding-v3   Query embedding for semantic search
Structured output   qwen3.6-plus         JSON schema compliance (retry pattern)
## What we learned

## What's next for IRIS — Intelligent Reporting & Insight System

## Where we use Qwen  :
Summary: Qwen Everywhere
Layer                   Qwen Model                      What it does
Chat                     qwen3.6-plus                 Conversational agent, intent routing
Pipeline (7 steps)  qwen3.6-plus               Tool calling on StatefulRecord
Report generation   qwen3.6-plus              Structured report with sections + charts
Chart elaboration   qwen3.6-plus            Plans SVG chart implementation
Compliance review   qwen3.6-plus    Auto-approve/revise decision
Semantic filing text-embedding-v3   Report → folder matching (cosine similarity)
Graphiti indexing   qwen3.6-plus           Entity/fact extraction from reports
Graphiti search text-embedding-v3   Query embedding for semantic search
Structured output   qwen3.6-plus         JSON schema compliance (retry pattern)

Built With

Share this project:

Updates

Submission history