← All ivy-agents
IVYXSTUDIO · IVY AGENT
M

Monthly report visuals

ivy.agent.monthly-report-visuals · v0.1.0

ivyx

Draws the month's charts for a client's report from the rows posted (sessions, leads, spend, whatever the report tracks) and a cover card naming the month; a model writes the three findings as captions when a brief is given, the charts need none. The Monthly Reporting service's visible output; kind deliverables for IVYX Agency.

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.

  1. 01
    Put the request together for the model
    ivy.node.design-brief

    Puts the request together as one text for the model's turn: the client, the service, the month, the brief and the figures, so the model writes for the right client.

    takes
    brief from the agent's input
    client from the agent's input
    service from the agent's input
    request_id from the agent's input
    charts from the agent's input
    month from the agent's input
    Ivy Node
  2. 02
    Name the month's findings

    The context is a client's monthly report brief with the month and the figures as rows. Return a JSON object with: headline (the month and the client, at most 7 words), subline (the one finding that matters most, at most 16 words, from the rows), cta (at most 3 words, e.g. "Read the report"), palette (bg, accent, text as 6-digit hex; a calm report palette), layout (minimal), brand (the client's name), caption (one sentence). Answer with the JSON object only. Colours are 6-digit hex. Keep the words short and concrete; no exclamation marks; no claims the brief does not make.

    takes
    context from step 1
    Model turn
  3. 03
    Draw the cover card
    ivy.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
    spec from step 2, output
    fallback_text from the agent's input, month
    name_prefix from the agent's input, client
    set
    sizes ["1200x628"]
    Ivy Node
  4. 04
    Draw the charts
    ivy.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
    charts from the agent's input
    palette from step 2, output.palette
    name_prefix from the agent's input, client
    set
    size 900x500
    Ivy Node
  5. 05
    Pack the deliverables
    ivy.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
    spec from step 2, output
    request_id from the agent's input
    client from the agent's input
    service from the agent's input
    brief from the agent's input
    files_a from step 3, files
    files_b from step 4, files
    returns
    kind, request_id, client, service, brief, spec, files, count
    Ivy Node

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.

Calls a model

Inputs

FieldTypeDescription
briefrequiredstringWhat the client asked for, in their words or the account lead's: the subject, the audience, the tone, the colours if any.
clientstringThe client's name, as IVYX Agency knows it.
servicestringThe service this is work for, as IVYX Agency knows it (e.g. Content Production).
request_idstringThe request's id on the channel it came from; the key that keeps one request from running twice.
chartsarrayOne object per chart: title, rows, x, series, kind (bar, line).
monthstringThe month reported, e.g. October 2026.
paletteobjectNot declared

Outputs

FieldTypeDescription
kindrequiredstringdeliverables: what this output is, for a receiver that takes several kinds.
request_idstringNot declared
clientstringNot declared
servicestringNot declared
briefstringNot declared
specobjectThe design spec the model wrote from the brief, as rendered.
filesrequiredarrayThe files made: name, mime, kind, bytes, data (base64), width, height, caption, variant.
countrequiredintegerNot 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, a model core

  • october

    A month's two charts of figures and a cover are three SVG files, the charts drawn from the rows given.

    given
    brief Bluefin's October report: sessions and leads by week.
    client Bluefin
    service Monthly Reporting
    request_id case-report-1
    month October 2026
    charts [{"title":"Sessions by week","rows":[{"week":"W1","sessions":1200},{"week":"W2","sessions":1500},{"week":"W3","sessio...
    expects
    kind equals deliverables
    count equals 3
    files.0.data matches ^PHN2Zy
  • no-figures

    A report brief with no figures is the cover alone.

    given
    brief Bluefin's quiet month.
    client Bluefin
    month November 2026
    expects
    kind equals deliverables
    count equals 1
    files.0.variant equals 1200x628