Social report
ivy.agent.social-report · v0.1.0
ivyx
Renders a brand's period report from the fold IVYX Social hands over (the pulse with its months, the plan kept, the best posts): the charts as SVG, a cover card, packed as kind deliverables that IVYX Social keeps with the run. No model, no network.
Steps
In the order the agent's file lists them, each with where its inputs come from and the values the file fixes. A branch or a loop is a step too.
- 01Ivy NodeThe report as chart rows and a coverivy.node.report-rows
Turns IVYX Social's period report (the pulse with its months, the plan kept per account, the best posts) into the chart rows the chart node draws and the cover card's spec.
- takes
reportfrom the agent's inputclientfrom the agent's inputbrandfrom the agent's inputcolorfrom the agent's input
- 02Ivy NodeDraw the chartsivy.node.design-chart-svg
Draws bar or line charts of rows as SVG, one per chart asked for: axes with nice ticks, labels, a legend, the values on the bars.
- takes
chartsfrom step 1
- 03Ivy NodeDraw the coverivy.node.design-svg-card
Draws a social post, a poster or a banner as SVG from a spec (headline, subline, cta, palette, layout, brand) in the sizes asked for.
- takes
specfrom step 1name_prefixfrom the agent's input,client- set
sizes["1200x628"]
- 04Ivy NodePack the filesivy.node.design-pack
Gathers the files the steps before it made into one answer of kind deliverables (request, client, service, brief, the spec, the files with their bytes).
- takes
files_afrom step 2,filesfiles_bfrom step 3,filesspecfrom step 1request_idfrom the agent's inputclientfrom the agent's input- returns
kind,request_id,client,brief,spec,files,count
Nodes it brings
Adding this agent in IVYX Studio adds these nodes with it. A node your workspace already has is kept as it is, even at another version.
What it touches
Collected from what each of its nodes declares, plus the model call when a step is a model turn. A declaration is the author's statement, and it is what policy rules select on.
Its nodes declare no side effects.
Inputs
| Field | Type | Description |
|---|---|---|
| firm | string | The firm's slug in IVYX Social; the destination routes the delivery by it. |
| clientrequired | string | Not declared |
| request_id | string | The report's id; the key that keeps one request from running twice. |
| reportrequired | object | The report as IVYX Social's GET …/report answers it. |
| brand | string | The name on the cover. |
| color | string | The accent colour. |
Outputs
| Field | Type | Description |
|---|---|---|
| kindrequired | string | deliverables |
| request_id | string | Not declared |
| client | string | Not declared |
| brief | string | Not declared |
| spec | object | Not declared |
| filesrequired | array | Not declared |
| countrequired | integer | Not declared |
Tests
2 of 2 test cases passed on Oct 25, 2026, in the publisher's own environment, before this version was published. The registry keeps that record; it does not run the cases again.
Requires: python:3.9
- october
A month's report is its two charts and a cover, three SVG files.
- given
firmivyxclientIVYXrequest_idcase-report-1report{"client":{"name":"IVYX"},"window":{"from":"2026-09-25","to":"2026-10-25"},"pulse":{"followers":{"value":4173},"month...- expects
kindequals deliverablescountequals 3request_idequals case-report-1files.0.mimeequals image/svg+xml
- empty-report
A report with nothing in it is the cover alone.
- given
firmivyxclientIVYXreport{}- expects
kindequals deliverablescountequals 1