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