Описание
We are looking for a Python developer to join the Backoffice Reports team behind the Reports section of our back-office. You will own the backend of analytics reports used daily by operation teams (risk management, trading, account management and etc). The stack is async Python on top of ClickHouse. Reports are described as typed Pydantic models plus Jinja-templated ClickHouse SQL, executed through an RPC service over RabbitMQ and exposed to the UI through REST/GraphQL endpoints with OpenAPI-driven dynamic forms.
Задачи
•Develop and maintain reports in the Backoffice: filters, grouping, sorting, pagination, totals, drill-down links between reports, CSV exports and chart data
•Write and optimize analytical ClickHouse SQL: aggregations over hundreds of millions of bets, multi-level grouping, period breakdowns (day / week / month / year)
•Describe reports as typed contracts (Pydantic models for filters and output) in our shared reports library, which the analytics team also uses to tune queries
•Work with the RPC layer between the backoffice API and the ClickHouse reporter service (RabbitMQ)
•Implement access control for reports: scopes and roles, operator / brand data isolation, hiding fields depending on user role
•Investigate slow reports: read query plans, choose the right filters, PREWHERE, pre-aggregation, and work with the analytics/DataFlow team on table design
•Cover reports and SQL with tests, keep data correct across backoffice applications
•Take part in code review and help evolve the reports framework (new report types, presets, custom segments)
Требования
•3+ years of commercial development in Python
•Confident asyncio: async/await, concurrency, async I/O clients
•Pydantic v2 (models, validation, serialization) and type hints
•Strong SQL - this is the key requirement:
•Complex SELECTs with JOINs, subqueries and CTEs (WITH)
•GROUP BY on several dimensions, conditional aggregation (SUM / COUNT with conditions)
•Window functions
•Understanding of how analytical queries scale and why a query is slow
•Experience with a columnar / OLAP database (ClickHouse preferred; Vertica, Exasol, BigQuery, Redshift, Snowflake are a plus)
•Experience building REST APIs in an async framework (Sanic, aiohttp, FastAPI, Starlette)
•Understanding of message brokers (RabbitMQ and/or Kafka) and RPC over queues
•Git, Docker, writing tests with pytest
•Ability to understand a business metric (GGR, stake, payout, margin, etc.) and turn it into a correct query
Будет плюсом
•Hands-on ClickHouse: MergeTree family engines, FINAL, PREWHERE, dictionaries (dictGet), -If combinators, ARRAY JOIN, WITH TOTALS, quantiles, uniq / uniqExact
•Jinja2 or other SQL templating / query builders
•Pandas for data post-processing and exports
•MongoDB
•GraphQL
•Domain knowledge: sports betting, iGaming, fintech or ad-tech analytics
•Prometheus / Grafana / ELK for monitoring and troubleshooting
•Monorepo tooling (Pants, Poetry, uv), Nix
Условия
•Comprehensive health insurance with coverage for your well-being
•Paid sick leave up to 10 days without medical certificate
•20 days of paid vacation plus additional leave for important life events
•Learning and growth opportunities with support for professional development
•Language learning support for multilingual collaboration
•Modern hardware provided for your work
•International team environment across multiple countries
•Corporate events and team activities
•Welfare support program for critical situations
•Gifts and support for major life milestones