Under The Hood
Architecture, patterns, and the decisions behind them.
System Overview
SOURCE
Job Boards
AF, LinkedIn, Indeed
PROCESS
Scrape + Dedup
async, concurrent
STORE
SQLite
normalised schema
AI
LLM Analysis
Ollama (local)
MATCH
Score + Rank
0-100 per job
OUTPUT
Cover Letters
+ interview prep
NordMod: Clean Architecture
Dependencies point inward. Domain has zero external dependencies.
Same Logic, Two Languages
NordMod was built in Java first, then ported to .NET. Same business rules, different idioms.
Spring Boot
@Service
@RequiredArgsConstructor
public class ContentService {
private final ContentRepository repo;
@Cacheable("content")
public ContentDto findById(Long id) {
return repo.findById(id)
.map(mapper::toDto)
.orElseThrow(() ->
new NotFoundException(id));
}
}
ASP.NET Core
public class ContentService(
IContentRepository repo)
{
public async Task<Result<ContentDto>>
GetById(int id)
{
var entity = await repo
.GetByIdAsync(id);
return entity is null
? Result.NotFound(id)
: Result.Ok(mapper.Map(entity));
}
}
Patterns
Result<T>
Error handling without exceptions. Every service returns success or failure with typed errors.
Repository
Data access behind domain interfaces. Infrastructure provides EF Core or JPA implementations.
CQRS-Lite
Read/write separation at the service layer. Clear command and query paths without full event sourcing.
Strategy
Moderation rules as interchangeable strategies. Each tenant configures policies without code changes.
jobbtrawl