Focus Group
Area: Marketing Workflow: workflows/marketing/focus-group.json
Purpose
Sección titulada «Purpose»Intake step for Bewomo’s Focus Group product. A requester (client or internal user) submits an asset they want validated (logo, web, ad / content, development), describes the target audience and provides example contacts, and the workflow:
- Captures the brief.
- Persists it to Google Sheets (
focus_group_requeststab). - Notifies the Bewomo back-office team so they can source the audience and run the session.
Optionally — if human feedback ends up low — AI agents trained on the target persona’s psychology can validate alongside humans (claimed ~89% effectiveness). That AI fallback path is not implemented yet; this workflow only captures the preference.
Pipeline (setup)
Sección titulada «Pipeline (setup)»Form Trigger: Receive Focus Group Request → Code: Normalize Focus Group Brief → Google Sheets: Append Request (focus_group_requests tab) → Gmail: Send Internal BO Request (to bo@bewomo.com)Trigger — form fields
Sección titulada «Trigger — form fields»| Field | Type | Required | Notes |
|---|---|---|---|
| Requester Name | text | yes | |
| Requester Email | yes | ||
| Validation Type | dropdown | yes | Logo / Web / Campaign or Content / Development |
| What You Want To Validate | textarea | yes | E.g. comparative preference, general opinion, specific aspect. |
| Asset URL | text | no | For Web (or any URL-based asset). |
| Asset Files | file | no | Multi-file upload. For Logo / Campaign or Content. |
| Asset Description | textarea | no | For Development or extra context. |
| Target Audience Description | textarea | yes | Who should validate. Role, industry, seniority, geography, etc. |
| Target Examples | textarea | yes | Free text — 7 example companies + decision-maker LinkedIn URLs. |
| AI Agent Fallback | dropdown | yes | Yes — if human feedback is low / Always — alongside humans / No — humans only |
Normalized brief shape
Sección titulada «Normalized brief shape»{ "request_id": "<ISO-8601 timestamp>", "requester_name": "string", "requester_email": "string", "validation_type": "Logo | Web | Campaign or Content | Development", "validation_question": "string", "asset_url": "string", "asset_description": "string", "asset_files": [ { "field": "Asset Files", "filename": "logo-v1.png", "mime": "image/png", "size": 12345 } ], "asset_files_count": 1, "target_audience": "string", "target_examples": "string", "ai_fallback": "string", "status": "pending", "submitted_at": "<ISO-8601 timestamp>"}Persistence — focus_group_requests tab
Sección titulada «Persistence — focus_group_requests tab»Lives in the existing workbook ($env.WORKBOOK_ID). One row per submitted request.
| Column | Type | Notes |
|---|---|---|
request_id |
string | PK. ISO-8601 timestamp. |
requester_name |
string | |
requester_email |
string | |
validation_type |
enum | Logo / Web / Campaign or Content / Development. |
validation_question |
string | Free text. |
asset_url |
string | Nullable. |
asset_description |
string | Nullable. |
asset_files_count |
number | Count of uploaded files. |
asset_files_summary |
json | JSON array of { filename, mime, size } — metadata only, files not stored yet. |
target_audience |
string | |
target_examples |
string | Free text — 7 LinkedIn URLs + companies. |
ai_fallback |
string | The requester’s preference for AI agent validators. |
status |
enum | pending → sourcing → running → completed → dropped. Advanced manually. |
submitted_at |
string | ISO-8601. |
last_updated_at |
string | ISO-8601. |
Internal BO email
Sección titulada «Internal BO email»Sent via Gmail to bo@bewomo.com (placeholder — edit in the Gmail node after import).
The body contains the full brief so the BO team has everything to start sourcing the audience.
commercial.
Credentials
Sección titulada «Credentials»- Google Sheets:
googleSheetsOAuth2Api. - Gmail:
gmailOAuth2.
Open questions
Sección titulada «Open questions»- File storage. Files are uploaded to the form but currently only their metadata is recorded. Decide where the actual binaries go (Google Drive folder? S3? n8n binary store with TTL?).
- Type-specific routing. A Switch by
validation_typeis not wired yet. When each type gets its own follow-up logic (e.g. comparative LLM analysis for Logo, accessibility audit for Web), add aSwitch: By Validation Typeafter the Code node. - AI agent fallback. The preference is captured but the AI-agent simulation stage is not built. Needs: target-persona prompting, agent personalities, scoring rubric, comparison vs. human results.
- Confirmation to requester. Currently only the form’s response text confirms. Decide if we want a follow-up email to the requester (with the request ID, expected timeline, etc.).
target_examplesstructure. Free text now. Could become a repeatable field set (company + LinkedIn URL pairs) or a CSV upload.