Inspiration — A real conversation about a retired teacher in Jayanagar with a chronic cough who had no easy way to connect the AQI data, BBMP fogging PDFs, and health advisories into a single actionable answer. Three personas, one question.

How we built it — Five concrete steps: data modelling first (with the round-trip integrity property expressed as a formal equation), Elasticsearch data stream design (including the null_value trick for open-ended advisories), ES|QL for the query layer (with the IST-aware 7-day trend formula), the Bedrock prompt engineering approach, and observability as a first-class concern (with the health-check HTTP status formula).

What we learned — ES|QL feels genuinely like SQL and not like query DSL. Factual constraint prompting is harder than prose generation. UTC+5:30 is a silent bug factory. Partial advisories beat error pages.

Challenges — CPCB and BBMP don't have clean public APIs. ILM + data streams on Elastic Cloud took iteration. The 150-word limit conflicts with mandatory safety content (resolved with a conditional ceiling). The "descriptive not prescriptive" constraint required explicit prompt rules and adversarial testing.

LaTeX math is used for the round-trip integrity property, the 7-day mean AQI formula, and the health-check HTTP status decision function.

Built With

  • amazon-ec2-scheduling-amazon-eventbridge-search-&-analytics-elasticsearch
  • bbmp
  • es-visualisation-kibana-managed-cloud-elastic-cloud-aws-sdk-boto3-data-sources-cpcb
  • imd
  • iso-8601
  • karnataka-health-dept-storage-pattern-elasticsearch-data-streams-+-ilm-wire-format-json
  • language-python-3.11-api-framework-fastapi-+-uvicorn-ui-streamlit-llm-amazon-bedrock-?-claude-3-haiku-compute-aws-lambda
Share this project:

Updates