KevinIsInCoding Claude Sonnet 4.6 commited on
Commit
bfda151
·
1 Parent(s): 774f1fa

Initial release: Beacon rare disease clinical trial finder

Browse files

Conversational AI assistant that interviews patients, geocodes their location,
and searches ClinicalTrials.gov in real time to surface nearby recruiting trials.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Files changed (3) hide show
  1. README.md +77 -0
  2. pyproject.toml +3 -0
  3. uv.lock +66 -0
README.md CHANGED
@@ -113,5 +113,82 @@ license: mit
113
  short_description: help patients with rare disease to find clinical trials
114
  ---
115
 
 
116
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
117
  >>>>>>> 2a6ee87 (initial commit)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  short_description: help patients with rare disease to find clinical trials
114
  ---
115
 
116
+ <<<<<<< HEAD
117
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
118
  >>>>>>> 2a6ee87 (initial commit)
119
+ =======
120
+ # Beacon — Rare Disease Clinical Trial Finder
121
+
122
+ Beacon is a conversational AI assistant that helps patients with rare diseases find relevant recruiting clinical trials near them. It conducts a warm intake interview, geocodes the patient's location, queries [ClinicalTrials.gov](https://clinicaltrials.gov) in real time, and produces a ranked report of the closest matching trials.
123
+
124
+ ## How it works
125
+
126
+ 1. **Intake agent** (Claude Sonnet) — interviews the patient conversationally to collect disease, age, symptom onset, location, and optional benchmark scores.
127
+ 2. **Research agent** (Claude Opus) — searches ClinicalTrials.gov via the official v2 API, retrying with synonyms or wider radii if results are sparse, then outputs a ranked trial report with eligibility notes and next steps.
128
+ 3. **LangGraph** orchestrates the two-node pipeline (intake → research).
129
+
130
+ ## Project setup
131
+
132
+ ### Prerequisites
133
+
134
+ - Python 3.11+
135
+ - [`uv`](https://docs.astral.sh/uv/) (recommended) or `pip`
136
+
137
+ ### 1. Clone the repo
138
+
139
+ ```bash
140
+ git clone <repo-url>
141
+ cd beacon
142
+ ```
143
+
144
+ ### 2. Install dependencies
145
+
146
+ ```bash
147
+ uv sync
148
+ ```
149
+
150
+ Or with pip:
151
+
152
+ ```bash
153
+ pip install -e .
154
+ ```
155
+
156
+ ### 3. Configure API keys
157
+
158
+ Copy the example env file and fill in your keys:
159
+
160
+ ```bash
161
+ cp .env.example .env
162
+ ```
163
+
164
+ Open `.env` and replace the placeholder values:
165
+
166
+ ```env
167
+ ANTHROPIC_API_KEY=your_anthropic_api_key_here
168
+ ```
169
+
170
+ ### 4. Run
171
+
172
+ ```bash
173
+ uv run python app.py
174
+ ```
175
+
176
+ ## Configuration
177
+
178
+ | Environment variable | Default | Description |
179
+ |----------------------|-------------|-------------------|
180
+ | `ANTHROPIC_API_KEY` | *(required)*| Anthropic API key |
181
+
182
+ ## Project structure
183
+
184
+ ```
185
+ beacon/
186
+ ├── app.py # Gradio web UI entry point
187
+ ├── main.py # Terminal entry point
188
+ ├── clinical_trials_guru.py # Intake + research agents, LangGraph pipeline
189
+ ├── llm.py # LLM provider abstraction
190
+ ├── requirements.txt # HuggingFace Spaces dependencies
191
+ ├── pyproject.toml
192
+ └── .env # Local secrets — not committed
193
+ ```
194
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
pyproject.toml CHANGED
@@ -10,5 +10,8 @@ dependencies = [
10
  "openai>=1.0.0",
11
  "python-dotenv>=1.2.2",
12
  "rich>=13.0.0",
 
13
  "gradio>=4.0.0",
 
 
14
  ]
 
10
  "openai>=1.0.0",
11
  "python-dotenv>=1.2.2",
12
  "rich>=13.0.0",
13
+ <<<<<<< HEAD
14
  "gradio>=4.0.0",
15
+ =======
16
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
17
  ]
uv.lock CHANGED
@@ -1,6 +1,7 @@
1
  version = 1
2
  revision = 3
3
  requires-python = ">=3.11"
 
4
  resolution-markers = [
5
  "python_full_version >= '3.14' and sys_platform == 'win32'",
6
  "python_full_version >= '3.14' and sys_platform == 'emscripten'",
@@ -21,6 +22,8 @@ sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea2734456098
21
  wheels = [
22
  { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" },
23
  ]
 
 
24
 
25
  [[package]]
26
  name = "annotated-types"
@@ -64,6 +67,7 @@ wheels = [
64
  ]
65
 
66
  [[package]]
 
67
  name = "audioop-lts"
68
  version = "0.2.2"
69
  source = { registry = "https://pypi.org/simple" }
@@ -120,12 +124,17 @@ wheels = [
120
  ]
121
 
122
  [[package]]
 
 
123
  name = "beacon"
124
  version = "0.1.0"
125
  source = { virtual = "." }
126
  dependencies = [
127
  { name = "anthropic" },
 
128
  { name = "gradio" },
 
 
129
  { name = "langgraph" },
130
  { name = "openai" },
131
  { name = "python-dotenv" },
@@ -135,7 +144,10 @@ dependencies = [
135
  [package.metadata]
136
  requires-dist = [
137
  { name = "anthropic", specifier = ">=0.50.0" },
 
138
  { name = "gradio", specifier = ">=4.0.0" },
 
 
139
  { name = "langgraph", specifier = ">=1.2.0" },
140
  { name = "openai", specifier = ">=1.0.0" },
141
  { name = "python-dotenv", specifier = ">=1.2.2" },
@@ -143,6 +155,7 @@ requires-dist = [
143
  ]
144
 
145
  [[package]]
 
146
  name = "brotli"
147
  version = "1.2.0"
148
  source = { registry = "https://pypi.org/simple" }
@@ -191,6 +204,8 @@ wheels = [
191
  ]
192
 
193
  [[package]]
 
 
194
  name = "certifi"
195
  version = "2026.4.22"
196
  source = { registry = "https://pypi.org/simple" }
@@ -289,6 +304,7 @@ wheels = [
289
  ]
290
 
291
  [[package]]
 
292
  name = "click"
293
  version = "8.3.3"
294
  source = { registry = "https://pypi.org/simple" }
@@ -301,6 +317,8 @@ wheels = [
301
  ]
302
 
303
  [[package]]
 
 
304
  name = "colorama"
305
  version = "0.4.6"
306
  source = { registry = "https://pypi.org/simple" }
@@ -328,6 +346,7 @@ wheels = [
328
  ]
329
 
330
  [[package]]
 
331
  name = "fastapi"
332
  version = "0.136.1"
333
  source = { registry = "https://pypi.org/simple" }
@@ -426,6 +445,8 @@ wheels = [
426
  ]
427
 
428
  [[package]]
 
 
429
  name = "h11"
430
  version = "0.16.0"
431
  source = { registry = "https://pypi.org/simple" }
@@ -435,6 +456,7 @@ wheels = [
435
  ]
436
 
437
  [[package]]
 
438
  name = "hf-gradio"
439
  version = "0.4.1"
440
  source = { registry = "https://pypi.org/simple" }
@@ -480,6 +502,8 @@ wheels = [
480
  ]
481
 
482
  [[package]]
 
 
483
  name = "httpcore"
484
  version = "1.0.9"
485
  source = { registry = "https://pypi.org/simple" }
@@ -508,6 +532,7 @@ wheels = [
508
  ]
509
 
510
  [[package]]
 
511
  name = "huggingface-hub"
512
  version = "1.14.0"
513
  source = { registry = "https://pypi.org/simple" }
@@ -528,6 +553,8 @@ wheels = [
528
  ]
529
 
530
  [[package]]
 
 
531
  name = "idna"
532
  version = "3.14"
533
  source = { registry = "https://pypi.org/simple" }
@@ -537,6 +564,7 @@ wheels = [
537
  ]
538
 
539
  [[package]]
 
540
  name = "jinja2"
541
  version = "3.1.6"
542
  source = { registry = "https://pypi.org/simple" }
@@ -549,6 +577,8 @@ wheels = [
549
  ]
550
 
551
  [[package]]
 
 
552
  name = "jiter"
553
  version = "0.14.0"
554
  source = { registry = "https://pypi.org/simple" }
@@ -780,6 +810,7 @@ wheels = [
780
  ]
781
 
782
  [[package]]
 
783
  name = "markupsafe"
784
  version = "3.0.3"
785
  source = { registry = "https://pypi.org/simple" }
@@ -854,6 +885,8 @@ wheels = [
854
  ]
855
 
856
  [[package]]
 
 
857
  name = "mdurl"
858
  version = "0.1.2"
859
  source = { registry = "https://pypi.org/simple" }
@@ -863,6 +896,7 @@ wheels = [
863
  ]
864
 
865
  [[package]]
 
866
  name = "numpy"
867
  version = "2.4.4"
868
  source = { registry = "https://pypi.org/simple" }
@@ -942,6 +976,8 @@ wheels = [
942
  ]
943
 
944
  [[package]]
 
 
945
  name = "openai"
946
  version = "2.36.0"
947
  source = { registry = "https://pypi.org/simple" }
@@ -1086,6 +1122,7 @@ wheels = [
1086
  ]
1087
 
1088
  [[package]]
 
1089
  name = "pandas"
1090
  version = "3.0.3"
1091
  source = { registry = "https://pypi.org/simple" }
@@ -1233,6 +1270,8 @@ wheels = [
1233
  ]
1234
 
1235
  [[package]]
 
 
1236
  name = "pydantic"
1237
  version = "2.13.4"
1238
  source = { registry = "https://pypi.org/simple" }
@@ -1350,6 +1389,7 @@ wheels = [
1350
  ]
1351
 
1352
  [[package]]
 
1353
  name = "pydub"
1354
  version = "0.25.1"
1355
  source = { registry = "https://pypi.org/simple" }
@@ -1359,6 +1399,8 @@ wheels = [
1359
  ]
1360
 
1361
  [[package]]
 
 
1362
  name = "pygments"
1363
  version = "2.20.0"
1364
  source = { registry = "https://pypi.org/simple" }
@@ -1368,6 +1410,7 @@ wheels = [
1368
  ]
1369
 
1370
  [[package]]
 
1371
  name = "python-dateutil"
1372
  version = "2.9.0.post0"
1373
  source = { registry = "https://pypi.org/simple" }
@@ -1380,6 +1423,8 @@ wheels = [
1380
  ]
1381
 
1382
  [[package]]
 
 
1383
  name = "python-dotenv"
1384
  version = "1.2.2"
1385
  source = { registry = "https://pypi.org/simple" }
@@ -1389,6 +1434,7 @@ wheels = [
1389
  ]
1390
 
1391
  [[package]]
 
1392
  name = "python-multipart"
1393
  version = "0.0.28"
1394
  source = { registry = "https://pypi.org/simple" }
@@ -1407,6 +1453,8 @@ wheels = [
1407
  ]
1408
 
1409
  [[package]]
 
 
1410
  name = "pyyaml"
1411
  version = "6.0.3"
1412
  source = { registry = "https://pypi.org/simple" }
@@ -1502,6 +1550,7 @@ wheels = [
1502
  ]
1503
 
1504
  [[package]]
 
1505
  name = "safehttpx"
1506
  version = "0.1.7"
1507
  source = { registry = "https://pypi.org/simple" }
@@ -1541,6 +1590,8 @@ wheels = [
1541
  ]
1542
 
1543
  [[package]]
 
 
1544
  name = "sniffio"
1545
  version = "1.3.1"
1546
  source = { registry = "https://pypi.org/simple" }
@@ -1550,6 +1601,7 @@ wheels = [
1550
  ]
1551
 
1552
  [[package]]
 
1553
  name = "starlette"
1554
  version = "1.0.0"
1555
  source = { registry = "https://pypi.org/simple" }
@@ -1563,6 +1615,8 @@ wheels = [
1563
  ]
1564
 
1565
  [[package]]
 
 
1566
  name = "tenacity"
1567
  version = "9.1.4"
1568
  source = { registry = "https://pypi.org/simple" }
@@ -1572,6 +1626,7 @@ wheels = [
1572
  ]
1573
 
1574
  [[package]]
 
1575
  name = "tomlkit"
1576
  version = "0.14.0"
1577
  source = { registry = "https://pypi.org/simple" }
@@ -1581,6 +1636,8 @@ wheels = [
1581
  ]
1582
 
1583
  [[package]]
 
 
1584
  name = "tqdm"
1585
  version = "4.67.3"
1586
  source = { registry = "https://pypi.org/simple" }
@@ -1593,6 +1650,7 @@ wheels = [
1593
  ]
1594
 
1595
  [[package]]
 
1596
  name = "typer"
1597
  version = "0.25.1"
1598
  source = { registry = "https://pypi.org/simple" }
@@ -1608,6 +1666,8 @@ wheels = [
1608
  ]
1609
 
1610
  [[package]]
 
 
1611
  name = "typing-extensions"
1612
  version = "4.15.0"
1613
  source = { registry = "https://pypi.org/simple" }
@@ -1629,6 +1689,7 @@ wheels = [
1629
  ]
1630
 
1631
  [[package]]
 
1632
  name = "tzdata"
1633
  version = "2026.2"
1634
  source = { registry = "https://pypi.org/simple" }
@@ -1638,6 +1699,8 @@ wheels = [
1638
  ]
1639
 
1640
  [[package]]
 
 
1641
  name = "urllib3"
1642
  version = "2.7.0"
1643
  source = { registry = "https://pypi.org/simple" }
@@ -1747,6 +1810,7 @@ wheels = [
1747
  ]
1748
 
1749
  [[package]]
 
1750
  name = "uvicorn"
1751
  version = "0.47.0"
1752
  source = { registry = "https://pypi.org/simple" }
@@ -1760,6 +1824,8 @@ wheels = [
1760
  ]
1761
 
1762
  [[package]]
 
 
1763
  name = "xxhash"
1764
  version = "3.7.0"
1765
  source = { registry = "https://pypi.org/simple" }
 
1
  version = 1
2
  revision = 3
3
  requires-python = ">=3.11"
4
+ <<<<<<< HEAD
5
  resolution-markers = [
6
  "python_full_version >= '3.14' and sys_platform == 'win32'",
7
  "python_full_version >= '3.14' and sys_platform == 'emscripten'",
 
22
  wheels = [
23
  { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" },
24
  ]
25
+ =======
26
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
27
 
28
  [[package]]
29
  name = "annotated-types"
 
67
  ]
68
 
69
  [[package]]
70
+ <<<<<<< HEAD
71
  name = "audioop-lts"
72
  version = "0.2.2"
73
  source = { registry = "https://pypi.org/simple" }
 
124
  ]
125
 
126
  [[package]]
127
+ =======
128
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
129
  name = "beacon"
130
  version = "0.1.0"
131
  source = { virtual = "." }
132
  dependencies = [
133
  { name = "anthropic" },
134
+ <<<<<<< HEAD
135
  { name = "gradio" },
136
+ =======
137
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
138
  { name = "langgraph" },
139
  { name = "openai" },
140
  { name = "python-dotenv" },
 
144
  [package.metadata]
145
  requires-dist = [
146
  { name = "anthropic", specifier = ">=0.50.0" },
147
+ <<<<<<< HEAD
148
  { name = "gradio", specifier = ">=4.0.0" },
149
+ =======
150
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
151
  { name = "langgraph", specifier = ">=1.2.0" },
152
  { name = "openai", specifier = ">=1.0.0" },
153
  { name = "python-dotenv", specifier = ">=1.2.2" },
 
155
  ]
156
 
157
  [[package]]
158
+ <<<<<<< HEAD
159
  name = "brotli"
160
  version = "1.2.0"
161
  source = { registry = "https://pypi.org/simple" }
 
204
  ]
205
 
206
  [[package]]
207
+ =======
208
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
209
  name = "certifi"
210
  version = "2026.4.22"
211
  source = { registry = "https://pypi.org/simple" }
 
304
  ]
305
 
306
  [[package]]
307
+ <<<<<<< HEAD
308
  name = "click"
309
  version = "8.3.3"
310
  source = { registry = "https://pypi.org/simple" }
 
317
  ]
318
 
319
  [[package]]
320
+ =======
321
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
322
  name = "colorama"
323
  version = "0.4.6"
324
  source = { registry = "https://pypi.org/simple" }
 
346
  ]
347
 
348
  [[package]]
349
+ <<<<<<< HEAD
350
  name = "fastapi"
351
  version = "0.136.1"
352
  source = { registry = "https://pypi.org/simple" }
 
445
  ]
446
 
447
  [[package]]
448
+ =======
449
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
450
  name = "h11"
451
  version = "0.16.0"
452
  source = { registry = "https://pypi.org/simple" }
 
456
  ]
457
 
458
  [[package]]
459
+ <<<<<<< HEAD
460
  name = "hf-gradio"
461
  version = "0.4.1"
462
  source = { registry = "https://pypi.org/simple" }
 
502
  ]
503
 
504
  [[package]]
505
+ =======
506
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
507
  name = "httpcore"
508
  version = "1.0.9"
509
  source = { registry = "https://pypi.org/simple" }
 
532
  ]
533
 
534
  [[package]]
535
+ <<<<<<< HEAD
536
  name = "huggingface-hub"
537
  version = "1.14.0"
538
  source = { registry = "https://pypi.org/simple" }
 
553
  ]
554
 
555
  [[package]]
556
+ =======
557
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
558
  name = "idna"
559
  version = "3.14"
560
  source = { registry = "https://pypi.org/simple" }
 
564
  ]
565
 
566
  [[package]]
567
+ <<<<<<< HEAD
568
  name = "jinja2"
569
  version = "3.1.6"
570
  source = { registry = "https://pypi.org/simple" }
 
577
  ]
578
 
579
  [[package]]
580
+ =======
581
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
582
  name = "jiter"
583
  version = "0.14.0"
584
  source = { registry = "https://pypi.org/simple" }
 
810
  ]
811
 
812
  [[package]]
813
+ <<<<<<< HEAD
814
  name = "markupsafe"
815
  version = "3.0.3"
816
  source = { registry = "https://pypi.org/simple" }
 
885
  ]
886
 
887
  [[package]]
888
+ =======
889
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
890
  name = "mdurl"
891
  version = "0.1.2"
892
  source = { registry = "https://pypi.org/simple" }
 
896
  ]
897
 
898
  [[package]]
899
+ <<<<<<< HEAD
900
  name = "numpy"
901
  version = "2.4.4"
902
  source = { registry = "https://pypi.org/simple" }
 
976
  ]
977
 
978
  [[package]]
979
+ =======
980
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
981
  name = "openai"
982
  version = "2.36.0"
983
  source = { registry = "https://pypi.org/simple" }
 
1122
  ]
1123
 
1124
  [[package]]
1125
+ <<<<<<< HEAD
1126
  name = "pandas"
1127
  version = "3.0.3"
1128
  source = { registry = "https://pypi.org/simple" }
 
1270
  ]
1271
 
1272
  [[package]]
1273
+ =======
1274
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
1275
  name = "pydantic"
1276
  version = "2.13.4"
1277
  source = { registry = "https://pypi.org/simple" }
 
1389
  ]
1390
 
1391
  [[package]]
1392
+ <<<<<<< HEAD
1393
  name = "pydub"
1394
  version = "0.25.1"
1395
  source = { registry = "https://pypi.org/simple" }
 
1399
  ]
1400
 
1401
  [[package]]
1402
+ =======
1403
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
1404
  name = "pygments"
1405
  version = "2.20.0"
1406
  source = { registry = "https://pypi.org/simple" }
 
1410
  ]
1411
 
1412
  [[package]]
1413
+ <<<<<<< HEAD
1414
  name = "python-dateutil"
1415
  version = "2.9.0.post0"
1416
  source = { registry = "https://pypi.org/simple" }
 
1423
  ]
1424
 
1425
  [[package]]
1426
+ =======
1427
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
1428
  name = "python-dotenv"
1429
  version = "1.2.2"
1430
  source = { registry = "https://pypi.org/simple" }
 
1434
  ]
1435
 
1436
  [[package]]
1437
+ <<<<<<< HEAD
1438
  name = "python-multipart"
1439
  version = "0.0.28"
1440
  source = { registry = "https://pypi.org/simple" }
 
1453
  ]
1454
 
1455
  [[package]]
1456
+ =======
1457
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
1458
  name = "pyyaml"
1459
  version = "6.0.3"
1460
  source = { registry = "https://pypi.org/simple" }
 
1550
  ]
1551
 
1552
  [[package]]
1553
+ <<<<<<< HEAD
1554
  name = "safehttpx"
1555
  version = "0.1.7"
1556
  source = { registry = "https://pypi.org/simple" }
 
1590
  ]
1591
 
1592
  [[package]]
1593
+ =======
1594
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
1595
  name = "sniffio"
1596
  version = "1.3.1"
1597
  source = { registry = "https://pypi.org/simple" }
 
1601
  ]
1602
 
1603
  [[package]]
1604
+ <<<<<<< HEAD
1605
  name = "starlette"
1606
  version = "1.0.0"
1607
  source = { registry = "https://pypi.org/simple" }
 
1615
  ]
1616
 
1617
  [[package]]
1618
+ =======
1619
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
1620
  name = "tenacity"
1621
  version = "9.1.4"
1622
  source = { registry = "https://pypi.org/simple" }
 
1626
  ]
1627
 
1628
  [[package]]
1629
+ <<<<<<< HEAD
1630
  name = "tomlkit"
1631
  version = "0.14.0"
1632
  source = { registry = "https://pypi.org/simple" }
 
1636
  ]
1637
 
1638
  [[package]]
1639
+ =======
1640
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
1641
  name = "tqdm"
1642
  version = "4.67.3"
1643
  source = { registry = "https://pypi.org/simple" }
 
1650
  ]
1651
 
1652
  [[package]]
1653
+ <<<<<<< HEAD
1654
  name = "typer"
1655
  version = "0.25.1"
1656
  source = { registry = "https://pypi.org/simple" }
 
1666
  ]
1667
 
1668
  [[package]]
1669
+ =======
1670
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
1671
  name = "typing-extensions"
1672
  version = "4.15.0"
1673
  source = { registry = "https://pypi.org/simple" }
 
1689
  ]
1690
 
1691
  [[package]]
1692
+ <<<<<<< HEAD
1693
  name = "tzdata"
1694
  version = "2026.2"
1695
  source = { registry = "https://pypi.org/simple" }
 
1699
  ]
1700
 
1701
  [[package]]
1702
+ =======
1703
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
1704
  name = "urllib3"
1705
  version = "2.7.0"
1706
  source = { registry = "https://pypi.org/simple" }
 
1810
  ]
1811
 
1812
  [[package]]
1813
+ <<<<<<< HEAD
1814
  name = "uvicorn"
1815
  version = "0.47.0"
1816
  source = { registry = "https://pypi.org/simple" }
 
1824
  ]
1825
 
1826
  [[package]]
1827
+ =======
1828
+ >>>>>>> f8d77e4 (Initial release: Beacon rare disease clinical trial finder)
1829
  name = "xxhash"
1830
  version = "3.7.0"
1831
  source = { registry = "https://pypi.org/simple" }