fusesell 1.2.9__tar.gz → 1.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of fusesell might be problematic. Click here for more details.

Files changed (43) hide show
  1. {fusesell-1.2.9 → fusesell-1.3.0}/CHANGELOG.md +328 -314
  2. {fusesell-1.2.9/fusesell.egg-info → fusesell-1.3.0}/PKG-INFO +1 -1
  3. {fusesell-1.2.9 → fusesell-1.3.0/fusesell.egg-info}/PKG-INFO +1 -1
  4. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/__init__.py +1 -1
  5. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/stages/initial_outreach.py +350 -184
  6. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/utils/data_manager.py +8 -0
  7. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/utils/event_scheduler.py +1 -1
  8. {fusesell-1.2.9 → fusesell-1.3.0}/pyproject.toml +1 -1
  9. {fusesell-1.2.9 → fusesell-1.3.0}/LICENSE +0 -0
  10. {fusesell-1.2.9 → fusesell-1.3.0}/MANIFEST.in +0 -0
  11. {fusesell-1.2.9 → fusesell-1.3.0}/README.md +0 -0
  12. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell.egg-info/SOURCES.txt +0 -0
  13. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell.egg-info/dependency_links.txt +0 -0
  14. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell.egg-info/entry_points.txt +0 -0
  15. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell.egg-info/requires.txt +0 -0
  16. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell.egg-info/top_level.txt +0 -0
  17. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell.py +0 -0
  18. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/api.py +0 -0
  19. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/cli.py +0 -0
  20. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/config/__init__.py +0 -0
  21. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/config/prompts.py +0 -0
  22. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/config/settings.py +0 -0
  23. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/pipeline.py +0 -0
  24. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/stages/__init__.py +0 -0
  25. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/stages/base_stage.py +0 -0
  26. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/stages/data_acquisition.py +0 -0
  27. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/stages/data_preparation.py +0 -0
  28. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/stages/follow_up.py +0 -0
  29. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/stages/lead_scoring.py +0 -0
  30. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/tests/conftest.py +0 -0
  31. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/tests/test_api.py +0 -0
  32. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/tests/test_cli.py +0 -0
  33. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/tests/test_data_manager_products.py +0 -0
  34. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/tests/test_data_manager_sales_process.py +0 -0
  35. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/tests/test_data_manager_teams.py +0 -0
  36. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/utils/__init__.py +0 -0
  37. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/utils/birthday_email_manager.py +0 -0
  38. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/utils/llm_client.py +0 -0
  39. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/utils/logger.py +0 -0
  40. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/utils/timezone_detector.py +0 -0
  41. {fusesell-1.2.9 → fusesell-1.3.0}/fusesell_local/utils/validators.py +0 -0
  42. {fusesell-1.2.9 → fusesell-1.3.0}/requirements.txt +0 -0
  43. {fusesell-1.2.9 → fusesell-1.3.0}/setup.cfg +0 -0
@@ -1,315 +1,329 @@
1
- # Changelog
2
-
3
- All notable changes to FuseSell Local will be documented in this file.
4
-
5
- # [1.2.9] - 2025-10-24
6
-
7
- ### Changed
8
- - Primary sales rep metadata from gs_team_rep now flows into draft prompts, reminders, and signatures so outreach reflects the configured sender.
9
- - Reminder scheduling stores the Unix timestamp (cron_ts) alongside the ISO string for easier downstream filtering.
10
- - Greeting sanitizer standardises the first paragraph and removes duplicate salutations while keeping HTML formatting intact.
11
-
12
- ### Fixed
13
- - Removed [Your ...] placeholder leftovers inside LLM responses and ensured drafts remain valid HTML even when the model mixes plain text and bullet lists.
14
- - Reminder creation no longer fails when the data acquisition stage supplies the email address, and follow-up reminders inherit the same customer metadata.
15
-
16
- # [1.2.8] - 2025-10-24
17
-
18
- ### Changed
19
- - Initial outreach resolves the primary sales rep from `gs_team_rep` and injects their identity into prompts, reminders, and draft metadata so outreach reflects real team settings.
20
-
21
- ### Fixed
22
- - Sanitizes generated email bodies to replace or remove `[Your …]` placeholders, ensuring signatures contain actual values even when optional rep fields are missing.
23
- - Reminder scheduling now preserves merged contact emails so follow-up records always carry `customer_email` for downstream automations.
24
-
25
- # [1.2.7] - 2025-10-24
26
-
27
- ### Changed
28
- - RealTimeX sales-process normalization now forwards `recipient_address`, `recipient_name`, and `customer_email` into the FuseSell pipeline so prompt generation and scheduling have complete context.
29
- - Default outreach prompt replacements enrich customer metadata with toolkit-derived contact details and enforce first-name greetings to match server quality.
30
-
31
- ### Fixed
32
- - Initial outreach stage now records generated drafts in the pipeline summary, seeds reminder_task rows with toolkit credentials, and schedules follow-up events when `send_immediately` is false.
33
- - Prompt-based draft generation no longer skips scheduling due to missing email fields and guarantees outputs without unresolved placeholders.
34
-
35
- # [1.2.6] - 2025-10-24
36
-
37
- ### Added
38
- - Automatically seed packaged prompt, scoring, and template JSON files into the writable `fusesell_data/config` directory so fresh installs immediately pick up the default initial outreach draft prompt.
39
- - Draft generation now records the scheduled reminder metadata in stage output while mirroring the server’s `schedule_auto_run` behaviour locally.
40
-
41
- ### Fixed
42
- - Bundled configuration files are used as a fallback when the data directory is missing overrides, preventing empty prompt loads that previously produced low-quality duplicate drafts.
43
-
44
- # [1.2.5] - 2025-10-24
45
-
46
- ### Added
47
- - Local `reminder_task` table and scheduler plumbing so scheduled outreach mirrors the server flow and can be consumed by RealTimeX orchestration.
48
- - Initial outreach and follow-up stages now emit reminder metadata whenever emails are scheduled, including team/customer context.
49
-
50
- ### Changed
51
- - Event scheduler returns reminder IDs alongside scheduled events while preserving immutable default prompts when layering team overrides.
52
-
53
- # [1.2.3] - 2025-10-21
54
-
55
- ### Added
56
- - `LocalDataManager.search_products()` for server-compatible product filtering (status, keyword, limit, sort).
57
- - CLI `product list` flags and `list_products.py` filters wired to the new search helper.
58
- - Regression tests covering keyword search, sorting, and limiting behavior.
59
-
60
- ### Changed
61
- - `get_products_by_org` now delegates to the filtered search path to avoid loading inactive results.
62
- - Product management documentation updated for RealTimeX flows and CLI filter usage.
63
-
64
- # [1.2.2] - 2025-10-21
65
-
66
- ### Added
67
- - LocalDataManager regression tests covering product/team CRUD flows and sales process tracking helpers.
68
-
69
- ### Fixed
70
- - Default team settings seeding now targets the `gs_team_*` columns, preventing initialization failures on fresh databases.
71
-
72
- # [1.2.1] - 2025-10-21
73
-
74
- ### Changed
75
- - Expose `__version__`, `__author__`, and `__description__` at the top-level `fusesell` module for easier runtime inspection.
76
-
77
- ### Fixed
78
- - `import fusesell; fusesell.__version__` now reports the installed version instead of `unknown`.
79
-
80
- ## [1.2.0] - 2025-10-20
81
-
82
- ### Added
83
- - Packaged CLI access via `FuseSellCLI` export to support embedded runtimes and automated tests.
84
- - pytest coverage (`fusesell_local/tests/test_cli.py`) ensuring the CLI dry-run path remains stable.
85
-
86
- ### Changed
87
- - Distribution renamed to `fusesell` to align with upcoming PyPI publication; console entry point now resolves to `fusesell_local.cli:main`.
88
- - CLI implementation moved into `fusesell_local/cli.py`, with top-level `fusesell.py` delegating for backward compatibility.
89
- - Documentation refreshed to instruct `pip install fusesell` and demonstrate programmatic CLI reuse.
90
- - Published version `1.2.0` to PyPI under the `fusesell` distribution name.
91
-
92
- ### Fixed
93
- - Ensured package metadata includes the CLI module so installations via pip expose the `fusesell` console script.
94
-
95
- ## [1.1.0] - 2025-10-20
96
-
97
- ### Added
98
- - Library-first API (`fusesell_local.api`) exposing `build_config`, `execute_pipeline`, and supporting helpers for embedding FuseSell in external runtimes.
99
- - Public exports in `fusesell_local.__init__` so consumers can import `FuseSellPipeline` and the new helpers directly.
100
- - Programmatic configuration validation error (`ConfigValidationError`) for clearer failures in host applications.
101
-
102
- ### Changed
103
- - CLI now delegates configuration/build/validation/logging to the shared library utilities, ensuring consistent behaviour across CLI and embedded usage.
104
- - Pipeline context now forwards scheduling preferences (timezone, send_immediately, business hour fields) from configuration to stages.
105
-
106
- ### Fixed
107
- - Continuation validation correctly requires `selected_draft_id` when performing `draft_rewrite` or `send` actions.
108
-
109
- ## [1.0.0] - 2025-01-07
110
-
111
- ### Added - Core Infrastructure Complete
112
-
113
- #### CLI Interface
114
- - Complete command-line interface with 25+ configuration options
115
- - Comprehensive argument validation and error handling
116
- - Multiple output formats (JSON, YAML, text)
117
- - Dry-run mode for safe testing
118
- - Process continuation support for resuming executions
119
-
120
- #### Pipeline Engine
121
- - Full pipeline orchestration with stage control
122
- - Business logic validation extracted from original YAML workflows
123
- - Sequential stage execution with data flow management
124
- - Human-in-the-loop controls and approval points
125
- - Comprehensive error handling and recovery mechanisms
126
- - Execution tracking and detailed logging
127
-
128
- #### Data Management
129
- - SQLite database with complete schema for all data entities
130
- - CRUD operations for executions, customers, lead scores, and email drafts
131
- - Data export/import functionality for backup and migration
132
- - Local data storage ensuring complete data ownership
133
-
134
- #### Configuration System
135
- - Team-specific configuration management
136
- - Customizable LLM prompts for all stages
137
- - Configurable scoring criteria and email templates
138
- - JSON-based configuration files with validation
139
-
140
- #### LLM Integration
141
- - OpenAI GPT-4o-mini client with error handling
142
- - Structured response parsing and validation
143
- - Token usage tracking and optimization
144
- - Response caching and retry mechanisms
145
-
146
- #### Documentation
147
- - Comprehensive README with installation and usage instructions
148
- - Technical documentation covering architecture and APIs
149
- - Business logic documentation extracted from original system
150
- - Troubleshooting guide and development workflow
151
-
152
- ### Technical Details
153
-
154
- #### Project Structure
155
- ```
156
- fusesell-local/
157
- fusesell.py # Main CLI entry point
158
- requirements.txt # Python dependencies
159
- setup.py # Package installation
160
- README.md # User documentation
161
- TECHNICAL.md # Technical documentation
162
- CHANGELOG.md # This file
163
- business_logic.md # Business logic documentation
164
- fusesell_local/ # Main package
165
- pipeline.py # Pipeline orchestrator
166
- stages/ # Pipeline stages (base implementation)
167
- utils/ # Utilities (data, LLM, validation, logging)
168
- config/ # Configuration management
169
- fusesell_data/ # Local data storage
170
- config/ # Configuration files
171
- drafts/ # Generated email drafts
172
- logs/ # Execution logs
173
- ```
174
-
175
- #### Key Features Implemented
176
- - **Local Execution**: Complete data ownership with no external dependencies except LLM API
177
- - **Business Logic Preservation**: All orchestration intelligence from original YAML workflows
178
- - **Flexible Data Sources**: Support for websites, business cards, social media, and manual input
179
- - **Stage Control**: Skip stages, stop after specific stages, save intermediate results
180
- - **Process Continuation**: Resume executions from any point with specific actions
181
- - **Comprehensive Validation**: Input validation, configuration validation, and error handling
182
- - **Extensible Architecture**: Modular design for easy customization and extension
183
-
184
- #### Database Schema
185
- - `executions`: Execution tracking and metadata
186
- - `stage_results`: Individual stage outputs and status
187
- - `customers`: Customer profiles and contact information
188
- - `lead_scores`: Scoring results and recommendations
189
- - `email_drafts`: Generated email content and variations
190
-
191
- #### Configuration Files
192
- - `prompts.json`: LLM prompts for all stages
193
- - `scoring_criteria.json`: Lead scoring rules and weights
194
- - `email_templates.json`: Email template variations
195
- - `team_settings.json`: Team-specific configurations
196
-
197
- ### Next Phase - Stage Implementations
198
-
199
- The core infrastructure is complete and ready for individual stage implementations:
200
-
201
- #### Planned Stage Development
202
- 1. **Data Acquisition**: Website scraping, business card OCR, social media extraction
203
- 2. **Data Preparation**: AI-powered data structuring and pain point identification
204
- 3. **Lead Scoring**: Product-customer fit evaluation with detailed breakdowns
205
- 4. **Initial Outreach**: Personalized email generation with multiple approaches
206
- 5. **Follow-up**: Context-aware follow-up sequences and timing optimization
207
-
208
- #### Development Status
209
- - Core infrastructure (CLI, pipeline, database, configuration)
210
- - Business logic validation and orchestration rules
211
- - Process continuation and human-in-the-loop controls
212
- - Comprehensive documentation and user guides
213
- - Individual stage implementations (next development phase)
214
-
215
- ### Migration from Server-Based System
216
-
217
- This release represents a complete conversion of the server-based FuseSell system to a local implementation:
218
-
219
- #### Preserved Features
220
- - All business logic and orchestration intelligence
221
- - Team-specific prompts and configuration
222
- - Human approval workflows and controls
223
- - Comprehensive logging and execution tracking
224
- - Multi-stage pipeline with flexible control
225
-
226
- #### Enhanced Features
227
- - Complete local data ownership and privacy
228
- - Command-line interface with extensive options
229
- - Process continuation and recovery capabilities
230
- - Flexible data source handling
231
- - Enhanced error handling and validation
232
-
233
- #### Architectural Improvements
234
- - Modular, extensible design
235
- - Comprehensive input validation
236
- - Local SQLite database for performance
237
- - Configuration-driven customization
238
- - Detailed technical documentation
239
-
240
- ### Installation and Usage
241
-
242
- #### Requirements
243
- - Python 3.8+
244
- - OpenAI API key
245
- - 50MB disk space for installation
246
- - Additional space for data storage (varies by usage)
247
-
248
- #### Quick Start
249
- ```bash
250
- # Install dependencies
251
- pip install -r requirements.txt
252
-
253
- # Run basic execution
254
- python fusesell.py --openai-api-key YOUR_API_KEY \
255
- --org-id your_org \
256
- --org-name "Your Company" \
257
- --customer-website "https://example.com"
258
- ```
259
-
260
- #### Advanced Usage
261
- ```bash
262
- # Full pipeline with custom settings
263
- python fusesell.py --openai-api-key sk-xxx \
264
- --org-id rta \
265
- --org-name "RTA Corp" \
266
- --customer-website "https://example.com" \
267
- --customer-name "Acme Inc" \
268
- --contact-name "John Doe" \
269
- --team-id sales_team_1 \
270
- --language english \
271
- --output-format json \
272
- --data-dir ./custom_data
273
- ```
274
-
275
- ### Support and Development
276
-
277
- For technical support, feature requests, or contributions:
278
- - Review the technical documentation in `TECHNICAL.md`
279
- - Check the troubleshooting guide for common issues
280
- - Refer to the business logic documentation for workflow details
281
- - Contact the development team for advanced customization needs
282
-
283
- ---
284
-
285
- ## Future Releases
286
-
287
- ### [1.1.0] - Planned
288
- - Complete data acquisition stage implementation
289
- - Website scraping with content extraction
290
- - Business card OCR processing
291
- - Social media profile data extraction
292
-
293
- ### [1.2.0] - Planned
294
- - Complete data preparation stage implementation
295
- - AI-powered customer profiling
296
- - Pain point identification and analysis
297
- - Financial and technology stack analysis
298
-
299
- ### [1.3.0] - Planned
300
- - Complete lead scoring stage implementation
301
- - Product-customer fit evaluation
302
- - Detailed scoring breakdowns and recommendations
303
- - Multi-product scoring capabilities
304
-
305
- ### [1.4.0] - Planned
306
- - Complete initial outreach stage implementation
307
- - Personalized email generation
308
- - Multiple draft variations and approaches
309
- - Human review workflow integration
310
-
311
- ### [1.5.0] - Planned
312
- - Complete follow-up stage implementation
313
- - Context-aware follow-up sequences
314
- - Interaction history analysis
1
+ # Changelog
2
+
3
+ All notable changes to FuseSell Local will be documented in this file.
4
+
5
+ # [1.3.0] - 2025-10-24
6
+
7
+ ### Added
8
+ - Bundled prompt seeding now copies packaged defaults into fusesell_data/config automatically, guaranteeing the initial outreach stage always finds the shipped templates on first run.
9
+
10
+ ### Changed
11
+ - Updated the default initial-outreach and follow-up prompts to require fully wrapped <html><body> content, enforce first-name greetings, and eliminate placeholder signatures so LLM drafts arrive production-ready.
12
+ - Sanitization logic normalizes generated emails into HTML (including fallback/mock drafts), injects recipient metadata, and reuses the calculated first name across prompt, rewrite, and reminder flows.
13
+ - Reminder scheduling now records Unix timestamps (cron_ts) for every new entry, simplifying downstream polling in RealTimeX orchestration.
14
+
15
+ ### Fixed
16
+ - Draft generation once again prioritises the LLM prompt path; fallback templates only trigger when the prompt fails to load, preventing duplicate plain-text emails.
17
+ - Rewrites, dry-run mocks, and fallback drafts no longer emit duplicate greetings or unresolved [Your ...] placeholders, and they retain HTML formatting for downstream mailers.
18
+
19
+ # [1.2.9] - 2025-10-24
20
+
21
+ ### Changed
22
+ - Primary sales rep metadata from gs_team_rep now flows into draft prompts, reminders, and signatures so outreach reflects the configured sender.
23
+ - Reminder scheduling stores the Unix timestamp (cron_ts) alongside the ISO string for easier downstream filtering.
24
+ - Greeting sanitizer standardises the first paragraph and removes duplicate salutations while keeping HTML formatting intact.
25
+
26
+ ### Fixed
27
+ - Removed [Your ...] placeholder leftovers inside LLM responses and ensured drafts remain valid HTML even when the model mixes plain text and bullet lists.
28
+ - Reminder creation no longer fails when the data acquisition stage supplies the email address, and follow-up reminders inherit the same customer metadata.
29
+
30
+ # [1.2.8] - 2025-10-24
31
+
32
+ ### Changed
33
+ - Initial outreach resolves the primary sales rep from `gs_team_rep` and injects their identity into prompts, reminders, and draft metadata so outreach reflects real team settings.
34
+
35
+ ### Fixed
36
+ - Sanitizes generated email bodies to replace or remove `[Your …]` placeholders, ensuring signatures contain actual values even when optional rep fields are missing.
37
+ - Reminder scheduling now preserves merged contact emails so follow-up records always carry `customer_email` for downstream automations.
38
+
39
+ # [1.2.7] - 2025-10-24
40
+
41
+ ### Changed
42
+ - RealTimeX sales-process normalization now forwards `recipient_address`, `recipient_name`, and `customer_email` into the FuseSell pipeline so prompt generation and scheduling have complete context.
43
+ - Default outreach prompt replacements enrich customer metadata with toolkit-derived contact details and enforce first-name greetings to match server quality.
44
+
45
+ ### Fixed
46
+ - Initial outreach stage now records generated drafts in the pipeline summary, seeds reminder_task rows with toolkit credentials, and schedules follow-up events when `send_immediately` is false.
47
+ - Prompt-based draft generation no longer skips scheduling due to missing email fields and guarantees outputs without unresolved placeholders.
48
+
49
+ # [1.2.6] - 2025-10-24
50
+
51
+ ### Added
52
+ - Automatically seed packaged prompt, scoring, and template JSON files into the writable `ffusesell_data/config` directory so fresh installs immediately pick up the default initial outreach draft prompt.
53
+ - Draft generation now records the scheduled reminder metadata in stage output while mirroring the server’s `schedule_auto_run` behaviour locally.
54
+
55
+ ### Fixed
56
+ - Bundled configuration files are used as a fallback when the data directory is missing overrides, preventing empty prompt loads that previously produced low-quality duplicate drafts.
57
+
58
+ # [1.2.5] - 2025-10-24
59
+
60
+ ### Added
61
+ - Local `reminder_task` table and scheduler plumbing so scheduled outreach mirrors the server flow and can be consumed by RealTimeX orchestration.
62
+ - Initial outreach and follow-up stages now emit reminder metadata whenever emails are scheduled, including team/customer context.
63
+
64
+ ### Changed
65
+ - Event scheduler returns reminder IDs alongside scheduled events while preserving immutable default prompts when layering team overrides.
66
+
67
+ # [1.2.3] - 2025-10-21
68
+
69
+ ### Added
70
+ - `LocalDataManager.search_products()` for server-compatible product filtering (status, keyword, limit, sort).
71
+ - CLI `product list` flags and `list_products.py` filters wired to the new search helper.
72
+ - Regression tests covering keyword search, sorting, and limiting behavior.
73
+
74
+ ### Changed
75
+ - `get_products_by_org` now delegates to the filtered search path to avoid loading inactive results.
76
+ - Product management documentation updated for RealTimeX flows and CLI filter usage.
77
+
78
+ # [1.2.2] - 2025-10-21
79
+
80
+ ### Added
81
+ - LocalDataManager regression tests covering product/team CRUD flows and sales process tracking helpers.
82
+
83
+ ### Fixed
84
+ - Default team settings seeding now targets the `gs_team_*` columns, preventing initialization failures on fresh databases.
85
+
86
+ # [1.2.1] - 2025-10-21
87
+
88
+ ### Changed
89
+ - Expose `__version__`, `__author__`, and `__description__` at the top-level `fusesell` module for easier runtime inspection.
90
+
91
+ ### Fixed
92
+ - `import fusesell; fusesell.__version__` now reports the installed version instead of `unknown`.
93
+
94
+ ## [1.2.0] - 2025-10-20
95
+
96
+ ### Added
97
+ - Packaged CLI access via `FuseSellCLI` export to support embedded runtimes and automated tests.
98
+ - pytest coverage (`fusesell_local/tests/test_cli.py`) ensuring the CLI dry-run path remains stable.
99
+
100
+ ### Changed
101
+ - Distribution renamed to `fusesell` to align with upcoming PyPI publication; console entry point now resolves to `fusesell_local.cli:main`.
102
+ - CLI implementation moved into `fusesell_local/cli.py`, with top-level `fusesell.py` delegating for backward compatibility.
103
+ - Documentation refreshed to instruct `pip install fusesell` and demonstrate programmatic CLI reuse.
104
+ - Published version `1.2.0` to PyPI under the `fusesell` distribution name.
105
+
106
+ ### Fixed
107
+ - Ensured package metadata includes the CLI module so installations via pip expose the `fusesell` console script.
108
+
109
+ ## [1.1.0] - 2025-10-20
110
+
111
+ ### Added
112
+ - Library-first API (`fusesell_local.api`) exposing `build_config`, `execute_pipeline`, and supporting helpers for embedding FuseSell in external runtimes.
113
+ - Public exports in `fusesell_local.__init__` so consumers can import `FuseSellPipeline` and the new helpers directly.
114
+ - Programmatic configuration validation error (`ConfigValidationError`) for clearer failures in host applications.
115
+
116
+ ### Changed
117
+ - CLI now delegates configuration/build/validation/logging to the shared library utilities, ensuring consistent behaviour across CLI and embedded usage.
118
+ - Pipeline context now forwards scheduling preferences (timezone, send_immediately, business hour fields) from configuration to stages.
119
+
120
+ ### Fixed
121
+ - Continuation validation correctly requires `selected_draft_id` when performing `draft_rewrite` or `send` actions.
122
+
123
+ ## [1.0.0] - 2025-01-07
124
+
125
+ ### Added - Core Infrastructure Complete
126
+
127
+ #### CLI Interface
128
+ - Complete command-line interface with 25+ configuration options
129
+ - Comprehensive argument validation and error handling
130
+ - Multiple output formats (JSON, YAML, text)
131
+ - Dry-run mode for safe testing
132
+ - Process continuation support for resuming executions
133
+
134
+ #### Pipeline Engine
135
+ - Full pipeline orchestration with stage control
136
+ - Business logic validation extracted from original YAML workflows
137
+ - Sequential stage execution with data flow management
138
+ - Human-in-the-loop controls and approval points
139
+ - Comprehensive error handling and recovery mechanisms
140
+ - Execution tracking and detailed logging
141
+
142
+ #### Data Management
143
+ - SQLite database with complete schema for all data entities
144
+ - CRUD operations for executions, customers, lead scores, and email drafts
145
+ - Data export/import functionality for backup and migration
146
+ - Local data storage ensuring complete data ownership
147
+
148
+ #### Configuration System
149
+ - Team-specific configuration management
150
+ - Customizable LLM prompts for all stages
151
+ - Configurable scoring criteria and email templates
152
+ - JSON-based configuration files with validation
153
+
154
+ #### LLM Integration
155
+ - OpenAI GPT-4o-mini client with error handling
156
+ - Structured response parsing and validation
157
+ - Token usage tracking and optimization
158
+ - Response caching and retry mechanisms
159
+
160
+ #### Documentation
161
+ - Comprehensive README with installation and usage instructions
162
+ - Technical documentation covering architecture and APIs
163
+ - Business logic documentation extracted from original system
164
+ - Troubleshooting guide and development workflow
165
+
166
+ ### Technical Details
167
+
168
+ #### Project Structure
169
+ ```
170
+ fusesell-local/
171
+ fusesell.py # Main CLI entry point
172
+ requirements.txt # Python dependencies
173
+ setup.py # Package installation
174
+ README.md # User documentation
175
+ TECHNICAL.md # Technical documentation
176
+ CHANGELOG.md # This file
177
+ business_logic.md # Business logic documentation
178
+ fusesell_local/ # Main package
179
+ pipeline.py # Pipeline orchestrator
180
+ stages/ # Pipeline stages (base implementation)
181
+ utils/ # Utilities (data, LLM, validation, logging)
182
+ config/ # Configuration management
183
+ ffusesell_data/ # Local data storage
184
+ config/ # Configuration files
185
+ drafts/ # Generated email drafts
186
+ logs/ # Execution logs
187
+ ```
188
+
189
+ #### Key Features Implemented
190
+ - **Local Execution**: Complete data ownership with no external dependencies except LLM API
191
+ - **Business Logic Preservation**: All orchestration intelligence from original YAML workflows
192
+ - **Flexible Data Sources**: Support for websites, business cards, social media, and manual input
193
+ - **Stage Control**: Skip stages, stop after specific stages, save intermediate results
194
+ - **Process Continuation**: Resume executions from any point with specific actions
195
+ - **Comprehensive Validation**: Input validation, configuration validation, and error handling
196
+ - **Extensible Architecture**: Modular design for easy customization and extension
197
+
198
+ #### Database Schema
199
+ - `executions`: Execution tracking and metadata
200
+ - `stage_results`: Individual stage outputs and status
201
+ - `customers`: Customer profiles and contact information
202
+ - `lead_scores`: Scoring results and recommendations
203
+ - `email_drafts`: Generated email content and variations
204
+
205
+ #### Configuration Files
206
+ - `prompts.json`: LLM prompts for all stages
207
+ - `scoring_criteria.json`: Lead scoring rules and weights
208
+ - `email_templates.json`: Email template variations
209
+ - `team_settings.json`: Team-specific configurations
210
+
211
+ ### Next Phase - Stage Implementations
212
+
213
+ The core infrastructure is complete and ready for individual stage implementations:
214
+
215
+ #### Planned Stage Development
216
+ 1. **Data Acquisition**: Website scraping, business card OCR, social media extraction
217
+ 2. **Data Preparation**: AI-powered data structuring and pain point identification
218
+ 3. **Lead Scoring**: Product-customer fit evaluation with detailed breakdowns
219
+ 4. **Initial Outreach**: Personalized email generation with multiple approaches
220
+ 5. **Follow-up**: Context-aware follow-up sequences and timing optimization
221
+
222
+ #### Development Status
223
+ - Core infrastructure (CLI, pipeline, database, configuration)
224
+ - Business logic validation and orchestration rules
225
+ - Process continuation and human-in-the-loop controls
226
+ - Comprehensive documentation and user guides
227
+ - Individual stage implementations (next development phase)
228
+
229
+ ### Migration from Server-Based System
230
+
231
+ This release represents a complete conversion of the server-based FuseSell system to a local implementation:
232
+
233
+ #### Preserved Features
234
+ - All business logic and orchestration intelligence
235
+ - Team-specific prompts and configuration
236
+ - Human approval workflows and controls
237
+ - Comprehensive logging and execution tracking
238
+ - Multi-stage pipeline with flexible control
239
+
240
+ #### Enhanced Features
241
+ - Complete local data ownership and privacy
242
+ - Command-line interface with extensive options
243
+ - Process continuation and recovery capabilities
244
+ - Flexible data source handling
245
+ - Enhanced error handling and validation
246
+
247
+ #### Architectural Improvements
248
+ - Modular, extensible design
249
+ - Comprehensive input validation
250
+ - Local SQLite database for performance
251
+ - Configuration-driven customization
252
+ - Detailed technical documentation
253
+
254
+ ### Installation and Usage
255
+
256
+ #### Requirements
257
+ - Python 3.8+
258
+ - OpenAI API key
259
+ - 50MB disk space for installation
260
+ - Additional space for data storage (varies by usage)
261
+
262
+ #### Quick Start
263
+ ```bash
264
+ # Install dependencies
265
+ pip install -r requirements.txt
266
+
267
+ # Run basic execution
268
+ python fusesell.py --openai-api-key YOUR_API_KEY \
269
+ --org-id your_org \
270
+ --org-name "Your Company" \
271
+ --customer-website "https://example.com"
272
+ ```
273
+
274
+ #### Advanced Usage
275
+ ```bash
276
+ # Full pipeline with custom settings
277
+ python fusesell.py --openai-api-key sk-xxx \
278
+ --org-id rta \
279
+ --org-name "RTA Corp" \
280
+ --customer-website "https://example.com" \
281
+ --customer-name "Acme Inc" \
282
+ --contact-name "John Doe" \
283
+ --team-id sales_team_1 \
284
+ --language english \
285
+ --output-format json \
286
+ --data-dir ./custom_data
287
+ ```
288
+
289
+ ### Support and Development
290
+
291
+ For technical support, feature requests, or contributions:
292
+ - Review the technical documentation in `TECHNICAL.md`
293
+ - Check the troubleshooting guide for common issues
294
+ - Refer to the business logic documentation for workflow details
295
+ - Contact the development team for advanced customization needs
296
+
297
+ ---
298
+
299
+ ## Future Releases
300
+
301
+ ### [1.1.0] - Planned
302
+ - Complete data acquisition stage implementation
303
+ - Website scraping with content extraction
304
+ - Business card OCR processing
305
+ - Social media profile data extraction
306
+
307
+ ### [1.2.0] - Planned
308
+ - Complete data preparation stage implementation
309
+ - AI-powered customer profiling
310
+ - Pain point identification and analysis
311
+ - Financial and technology stack analysis
312
+
313
+ ### [1.3.0] - Planned
314
+ - Complete lead scoring stage implementation
315
+ - Product-customer fit evaluation
316
+ - Detailed scoring breakdowns and recommendations
317
+ - Multi-product scoring capabilities
318
+
319
+ ### [1.4.0] - Planned
320
+ - Complete initial outreach stage implementation
321
+ - Personalized email generation
322
+ - Multiple draft variations and approaches
323
+ - Human review workflow integration
324
+
325
+ ### [1.5.0] - Planned
326
+ - Complete follow-up stage implementation
327
+ - Context-aware follow-up sequences
328
+ - Interaction history analysis
315
329
  - Automated timing optimization