Every Echo capability and where to operate it
Echo keeps growth, content, distribution, and their evidence in one database. Reads stay bounded; the CLI, web dashboard, and Desktop share one authenticated existing-profile setup operation.
Measure and decide#
- First-party analytics: de-duplicated web and mobile events, attribution, funnels, tracking coverage, and production chat response latency. GUI /analytics; CLI echo-cli analytics <days> and echo-cli chat-latency <days>; Echo Desktop Chat latency, with a Days field the operator fills.
- Adaptive experiments: sticky variants, rewards, guardrails, serving weights, and graduation. GUI /analytics; CLI echo-cli experiments.
- Onboarding journeys: immutable publication, activation, rollback, and runtime progress. GUI /onboarding; CLI echo-cli onboarding.
- Existing data: adopt an account already stored in Weles and create its deterministic Echo product. GUI /setup/existing-profile; CLI echo-cli seed-profile; Echo Desktop Start with existing data.
Create and publish#
- Product blog CMS: drafts, revisions, publication, archival, public reads, and landing revalidation. GUI /blog-admin; CLI echo-cli blogs.
- Content generation: image, video, audio, meme, lipsync, style-series, influencer, and LoRA workflows. GUI /generate; CLI echo-cli generations.
- Asset and character library: imported assets, generated outputs, characters, sounds, templates, briefs, and LoRAs. GUI /assets; CLI echo-cli assets.
Distribute and learn#
- Social operations: accounts, queues, calendars, campaigns, reviews, activity, and platform performance. GUI /ecosystem; CLI echo-cli social-accounts.
- CRM and outreach: creator contacts, lists, campaigns, conversations, inbox state, and briefs. GUI /contacts; CLI echo-cli outreach.
- Paid advertising: campaign state, spend, attribution, and conversion feedback. GUI /paid-ads; CLI echo-cli paid-ads.
- Trends and competition: platform trends and evidence-backed competitor observations. GUI /competitors; CLI echo-cli market.
- GEO prompt panel: the questions buyers ask AI assistants in a product's niche, by locale and intent, added, edited, retired and restored through one Echo Web operation. GUI /geo; CLI echo-cli geo prompts list|add|edit|retire|restore; MCP echo_list_geo_prompts; Echo Desktop GEO prompts.
- GEO measurement and what it shows: runs that ask the panel of each declared assistant through Brama, accuracy and tone judgements of every answer, the competitors looked for beside the product, where each answer names them, share of voice per run and assistant, corrections for facts stated wrongly, cited sources and the cited pages that leave the product out, and experiments comparing answers before and after a page change. GUI /geo; CLI echo-cli geo runs|competitors|share|corrections|sources|experiments; MCP echo_list_geo_runs, echo_geo_run_checks, echo_geo_run_tones, echo_list_geo_competitors, echo_geo_share_of_voice, echo_list_geo_corrections, echo_list_geo_source_targets, echo_list_geo_experiments, echo_geo_experiment_report; Echo Desktop GEO prompts.
- What a product publishes for AI models: a fact sheet served publicly as JSON, each blog surface's llms.txt and llms-full.txt, the AI crawler rules its robots.txt is built from with a check of the live file, checks of whether a post alone answers a panel prompt with a block proposed when it does not, reply drafts for the Reddit threads assistants cite, and the visits AI assistants send. GUI /geo; CLI echo-cli geo facts|llms|crawlers|extraction|referrals and geo sources threads; MCP echo_list_fact_sheets, echo_list_geo_crawler_rules, echo_list_geo_extraction_checks, echo_geo_ai_referrals; Echo Desktop GEO prompts; public GET /api/public/facts/<product-id>, /api/public/llms/<surface> and /api/public/robots/<surface>.
- Tracking quality, the metric tree, retention cohorts and the UTM vocabulary: the events each analytics source is declared to send with the properties each must carry, and, over a window, the undeclared events, missing properties (with an example event) and declaring sources that sent nothing; events a product backend reports itself, stored once beside the browser's copy; one person resolved across web, mobile and desktop from the identifiers linked at sign-in; each product's North Star and the metrics feeding it, each counting stored events, the metrics that left the range their earlier windows give, and reports whose commentary cites only the computed numbers; published posts losing visits, and what each post brings in (first landings and signups); weekly retention cohorts of a web source split by acquisition channel; each source's declared UTM values, links built only from them, and stray values events carried. GUI /tracking; CLI echo-cli tracking schemas|quality|metrics|reports|content|identity|cohorts|events|utm; MCP echo_list_event_schemas, echo_tracking_quality, echo_metric_tree, echo_metric_anomalies, echo_list_reports, echo_decaying_posts, echo_post_returns, echo_resolve_subject, echo_retention_cohorts, echo_stray_utm_values; HTTP POST /api/analytics/server/collect.
- Diagnostics and cost: failures, reliability, pending operator work, service costs, and balances. GUI /diagnostics and /balances; CLI echo-cli operations <days>.
Account action completion#
Account actions, account creation and bulk email creation follow each admitted Weles run with one authenticated GET /api/accounts/jobs/<job-id>?wait=terminal. The account screens remain busy until Weles persists the actual completed or failed outcome. They do not fail a running account action because a read count or elapsed interval has been exceeded.
A status request without wait still returns the current state immediately. Any supplied wait value other than terminal is refused with HTTP 400; an unknown job returns HTTP 404. A failed upstream read returns HTTP 502 with its cause. If Weles returns a running or unknown state to a held request, Echo refuses that response rather than declaring success or starting a polling loop. Echo and Weles must both support the held-result contract.
Leaving an account screen cancels its observation request, not the detached action; the run remains available in its history. Bulk creation reports a provider lock refusal as received instead of retrying the account submission. Stop after current account lets the admitted action finish and marks only the remaining, unsubmitted entries as stopped. Elapsed time is recorded when each observed operation ends.
Clipboard feedback#
Copy controls in Humanizer, Verification, character Visual Profile and trending idea cards remain busy until the browser finishes writing to the clipboard. Copied is shown only after that operation succeeds. A browser refusal appears beside the control with its original error; it is not reported as a successful copy.
The confirmation belongs to the copied text, so a changed value cannot inherit another value's confirmation. A new copy attempt replaces the previous feedback, and a late result from an earlier attempt cannot replace the newer attempt's state. Feedback follows these actions and values rather than a timed reset or a copy notification that disappears on a timer.
Interface rule#
Operational CLI and MCP queries select explicit safe columns only. The CLI's mutating commands (seed-profile, product edit and remove, geo prompts add, edit, retire and restore) never write the database themselves: each calls Echo Web's authenticated operation, which the web and Desktop screens also use.