Every funnel chart and every feature matrix built from event logs starts as a long table and ends as a wide one, and the wide version is wrong the moment a column goes missing.
Write event_counts_pivot(df, categories). Given a long DataFrame with user_id and event_type columns (one row per event) and a list categories naming every event type that exists in the product, return a wide DataFrame with:
user_id, sorted ascending,categories, in that order,A user who never triggered a given event type gets 0 in that column, not a missing value. An event type in categories that no user in this data ever triggered still gets its own all-zero column — the columns come from categories, not from what happens to appear in the data.
Build the architecture on a canvas: place the components, configure them, connect them into a data flow, and write a short reason for each one. The AI reviewer grades your design against a rubric written specifically for this problem.
Minimum 5 components · needs a wide desktop screen