DEV Community

张洲诚(Zack.ZHANG)
张洲诚(Zack.ZHANG)

Posted on

I Generated 50 Sales Reports with One CLI Command — Here's How

Mid-year review season. You know the drill.

My team owed leadership a polished Q2 deck, plus every regional sales lead needed their own weekly report. Total count: about 50 reports. Same structure, different data.

The first deck I did the honest way — PowerPoint, three full days. Not because I can't use templates, but because the "raw data → insight → visual story" pipeline is brutally long. Each chart means copying numbers from Excel, fixing formatting, writing analysis. One slide averages 40 minutes. Twenty slides = two working days gone.

Then I looked at the remaining 49. That math doesn't work.

The GUI tool problem

I tried the obvious solutions:

  • Gamma ($20/mo): Fast AI generation, but no batch mode — each deck requires manual input and manual export
  • Beautiful.ai ($12/mo): Great design, but can't read my raw Excel data
  • WPS AI (~$4/mo): Can read data, inconsistent quality, no batch

The common issue: GUI tools don't support scripting. One deck saves time. Fifty decks means doing it fifty times by hand.

The CLI approach

I found Bailian CLI on GitHub — a command-line tool that calls large models directly from the terminal, reads files as context, and can be looped in a script. Here's what my workflow ended up looking like.

Setup

pip install dashscope-cli
bl configure --api-key YOUR_API_KEY
Enter fullscreen mode Exit fullscreen mode

Free API key from the Bailian console — new users get complimentary credits.

Step 1: Generate an outline

The worst part of building a deck isn't layout — it's "what goes on slide one."

bl chat --model qwen-plus \
  --prompt "Generate a PPT outline for Q2 sales performance review, covering:
1. Performance overview (revenue, profit, YoY/QoQ)
2. Regional comparison (East/South/North/Southwest)
3. Growth attribution (which product lines drove growth)
4. Risks and anomalies
5. Next quarter action plan
Include 2-3 key points and visualization suggestions per module."
Enter fullscreen mode Exit fullscreen mode

30 seconds → structured outline with chart recommendations (stacked bars for revenue composition, heatmaps for growth distribution). Previously this took 30 minutes on a whiteboard.

Step 2: Data-driven content

The key differentiator — feeding in the actual data file:

bl chat --model qwen-max \
  --file sales_q2.xlsx \
  --prompt "Based on this Q2 sales data, generate executive-facing PPT content:
1. Extract 3 core conclusions (with data support)
2. Identify 2-3 anomalies or notable trends
3. Recommend next-quarter actions
4. Write out each slide's title and bullet points
Emphasize YoY growth trends and regional differences."
Enter fullscreen mode Exit fullscreen mode

It reads the actual numbers, analyzes them, and outputs specific conclusions — not template filler. For example: "East China Q2 revenue grew 23% YoY, driven by enterprise SaaS, while North China saw -5% negative growth — renewal rate decline needs attention."

GUI tools can't do this. Gamma and Beautiful.ai only work with text you type in; they won't read your source files.

One complete executive deck: ~1 hour (including manual tweaks and layout). Down from three days.

Step 3: Batch it

Same structure, different data per region. Textbook scripting scenario:

for region in east south north southwest central northeast northwest; do
  bl chat --model qwen-plus \
    --file "data/${region}_q2.xlsx" \
    --prompt "Based on ${region} region Q2 sales data, generate weekly report content:
1. Regional performance summary
2. Top 5 customer contribution analysis
3. YoY and QoQ changes
4. Items requiring HQ support
Output as structured PPT page content." \
    --output "output/${region}_weekly_report.md"
done
Enter fullscreen mode Exit fullscreen mode

Seven regions, 8–10 minutes total. Structured Markdown output → batch import into deck template.

Approach Time for 50 reports Data accuracy Repeatability
Fully manual ~25 hours (30 min each) Copy-paste errors likely Redo from scratch
GUI tools ~12 hours (15 min each) Manual data entry Semi-automated
CLI script ~10 min + 1 hr layout Reads source data directly Fully repeatable

Next quarter? Swap the data files, run the same script. Zero rewrite.

Beyond decks

The same pattern works for anything "given materials → structured document":

# Business plan
bl chat --model qwen-max \
  --prompt "Draft a business plan outline for an enterprise analytics SaaS..."

# Data analysis report
bl chat --model qwen-max \
  --file user_behavior_june.csv \
  --prompt "Write a product data report: DAU, retention, conversion, anomalies..."

# Excel formulas
bl chat --model qwen-plus \
  --prompt "Write an XLOOKUP formula that..."
Enter fullscreen mode Exit fullscreen mode

Meeting minutes, contract drafts, quarterly summaries — same logic.

Cost

Tool Monthly cost Batch support File input Best for
Gamma $20/mo No No One-off polished decks
Beautiful.ai $12/mo No No Design-first
WPS AI ~$4/mo Limited Partial WPS ecosystem
Bailian CLI Pay-per-token Native scripting Yes Batch + data-driven

Using qwen-plus: one deck ~$0.05–0.07, 50 regional reports ~$2–4, daily misc ~$1–2/month.

Honest limits

  • CLI has a learning curve — not as plug-and-play as GUI tools
  • Output is content structure; final .pptx layout still needs human work
  • Quality depends on prompt quality
  • Complex visualizations still need manual handling
  • If you only make one deck occasionally and care about design polish, Gamma/Beautiful.ai are better

The CLI's edge: batch processing + data-driven generation + programmability.


If mid-year reporting season is crushing you too, consider a scripting approach. Core idea: hand the repetitive content generation to the machine, keep the aesthetic judgment and business decisions for yourself.

Top comments (0)